external_table_functions_use_nulls
Définit comment les fonctions de table mysql, postgresql et odbc utilisent des colonnes Nullable. Valeurs possibles :- 0 — La fonction de table utilise explicitement des colonnes Nullable.
- 1 — La fonction de table utilise implicitement des colonnes Nullable.
0, la fonction de table n’utilise pas de colonnes Nullable et insère des valeurs par défaut à la place de NULL. Cela s’applique également aux valeurs NULL à l’intérieur des tableaux.
external_table_strict_query
S’il est défini à true, un filtre portant sur les colonnes d’une external table (MySQL, PostgreSQL, SQLite, ODBC, JDBC) qui ne peut pas être pushed down vers l’external database est rejeté avec une exception au lieu d’être appliqué localement après la récupération des données.
La vérification couvre le predicate WHERE de premier niveau ainsi que chaque conjonction d’un AND de premier niveau. Un PREWHERE sur les colonnes de l’external table ne relève pas de ce paramètre : ces table engines ne prennent pas en charge PREWHERE, et une telle query est rejetée avec ILLEGAL_PREWHERE, quelle que soit la valeur du paramètre. La vérification n’a lieu que là où un filtre peut effectivement être pushed down : lorsque l’external table est la seule table de la query, de part et d’autre d’un INNER JOIN, ou du côté préservé d’un outer join (le côté gauche d’un LEFT JOIN, le côté droit d’un RIGHT JOIN). Du côté non préservé d’un LEFT/RIGHT JOIN et de part et d’autre d’un FULL JOIN, rien n’est pushed down et rien n’est vérifié : un filtre sur les colonnes de l’external table est donc appliqué localement après le join, même en mode strict. Là où la vérification a lieu, un predicate qui référence d’autres tables jointes dans la query environnante n’est pas pushed down et se trouve exclu de la vérification, qu’il référence uniquement le côté joint (par exemple WHERE r.flag) ou qu’il le combine avec l’external table au sein d’une même expression non-AND (par exemple WHERE l.id = 1 OR r.flag) ; un tel predicate conserve son point d’évaluation ClickHouse habituel (WHERE après le join, PREWHERE avant) et n’est pas rejeté.