external_table_functions_use_nulls
Define cómo las funciones de tabla mysql, postgresql y odbc utilizan columnas Nullable. Valores posibles:- 0 — La función de tabla utiliza explícitamente columnas Nullable.
- 1 — La función de tabla utiliza implícitamente columnas Nullable.
0, la función de tabla no crea columnas Nullable y, en su lugar, inserta valores predeterminados en vez de NULL. Esto también se aplica a los valores NULL dentro de los arrays.
external_table_strict_query
Si se establece en true, un filtro sobre las columnas de una external table (MySQL, PostgreSQL, SQLite, ODBC, JDBC) del que no se pueda hacer pushdown a la external database se rechaza con una excepción en lugar de aplicarse localmente después de hacer el fetch de los datos.
La comprobación abarca el predicate WHERE de nivel superior y cada conjunción de un AND de nivel superior. Un PREWHERE sobre las columnas de la external table no entra en el ámbito de esta configuración: estos table engines no admiten PREWHERE, y una consulta así se rechaza con ILLEGAL_PREWHERE independientemente de la configuración. La comprobación solo se ejecuta allí donde realmente sería posible hacer pushdown de un filtro: cuando la external table es la única table de la consulta, en cualquiera de los lados de un INNER JOIN, o en el lado conservado de un outer join (el lado izquierdo de un LEFT JOIN, el lado derecho de un RIGHT JOIN). En el lado no conservado de un LEFT/RIGHT JOIN y en cualquiera de los lados de un FULL JOIN no se hace pushdown de nada ni se comprueba nada, por lo que un filtro sobre las columnas de la external table se aplica localmente después del join incluso en modo estricto. Allí donde sí se ejecuta la comprobación, de un predicate que hace referencia a otras tablas unidas en la consulta circundante no se hace pushdown y queda excluido de la comprobación, tanto si hace referencia únicamente al lado unido (por ejemplo WHERE r.flag) como si lo mezcla con la external table dentro de una misma expression que no sea un AND (por ejemplo WHERE l.id = 1 OR r.flag); dicho predicate mantiene su punto de evaluación habitual en ClickHouse (WHERE después del join, PREWHERE antes de él) y no se rechaza.