external_table_functions_use_nulls
Определяет, как табличные функции mysql, postgresql и odbc работают со столбцами типа Nullable. Возможные значения:- 0 — Табличная функция явно использует столбцы типа Nullable.
- 1 — Табличная функция неявно использует столбцы типа Nullable.
0, табличная функция не создаёт столбцы типа Nullable и вместо NULL вставляет значения по умолчанию. Это также применимо к значениям NULL внутри массивов.
external_table_strict_query
Если установлено в true, то фильтр по столбцам внешней таблицы (MySQL, PostgreSQL, SQLite, ODBC, JDBC), который не может быть перенесён (pushed down) во внешнюю СУБД, отклоняется с исключением, а не применяется локально после получения данных.
Проверка охватывает предикат верхнего уровня в предложении WHERE и каждый конъюнкт AND верхнего уровня. PREWHERE по столбцам внешней таблицы не относится к области действия этой настройки: эти движки таблиц не поддерживают PREWHERE, и такой запрос отклоняется с ошибкой ILLEGAL_PREWHERE независимо от настройки. Проверка выполняется только там, где фильтр в принципе может быть перенесён вниз: когда внешняя таблица — единственная таблица запроса, с любой стороны INNER JOIN или на сохраняющей стороне внешнего JOIN (левая сторона LEFT JOIN, правая сторона RIGHT JOIN). На несохраняющей стороне LEFT/RIGHT JOIN и с любой стороны FULL JOIN ничего не переносится и ничего не проверяется, поэтому фильтр по столбцам внешней таблицы применяется локально после JOIN даже в строгом режиме. Там, где проверка выполняется, предикат, ссылающийся на другие таблицы, присоединённые в окружающем запросе, не переносится и исключается из проверки — как в случае, когда он ссылается только на присоединённую сторону (например, WHERE r.flag), так и когда он смешивает её с внешней таблицей внутри одного выражения без AND (например, WHERE l.id = 1 OR r.flag); такой предикат сохраняет обычную для ClickHouse точку вычисления (WHERE после JOIN, PREWHERE до него) и не отклоняется.