Skip to main content
これらの設定は system.settings で確認でき、source から自動生成されています。

external_table_functions_use_nulls

mysql、postgresql、odbc のテーブル関数で、Nullable カラムをどのように扱うかを定義します。 設定可能な値:
  • 0 — テーブル関数は Nullable カラムを明示的に使用します。
  • 1 — テーブル関数は Nullable カラムを暗黙的に使用します。
使用方法 この設定を 0 にすると、テーブル関数は Nullable カラムを作成せず、NULL の代わりにデフォルト値を挿入します。これは Array 内の NULL 値にも適用されます。

external_table_strict_query

true に設定すると、外部データベースにプッシュダウンできない外部テーブル (MySQL、PostgreSQL、SQLite、ODBC、JDBC) のカラムに対するフィルタは、データ取得後にローカルで適用されるのではなく、例外を発生させて拒否されます。 このチェックは、最上位レベルの WHERE 述語と、最上位レベルの AND を構成する各条件を対象とします。外部テーブルのカラムに対する PREWHERE は、この設定の対象ではありません。これらのテーブルエンジンは PREWHERE をサポートしておらず、そのようなクエリは設定にかかわらず ILLEGAL_PREWHERE により拒否されます。チェックは、フィルタをプッシュダウンできる可能性がある箇所でのみ実行されます。すなわち、外部テーブルがクエリ内で唯一のテーブルである場合、INNER JOIN のいずれかの側にある場合、または外部結合の保持側 (LEFT JOIN の左側、RIGHT JOIN の右側) にある場合です。LEFT/RIGHT JOIN の非保持側および FULL JOIN のいずれの側でも、プッシュダウンもチェックも行われません。そのため、厳格モードであっても、外部テーブルのカラムに対するフィルタは結合後にローカルで適用されます。チェックが実行される場合でも、周囲のクエリで結合された他のテーブルを参照する述語は、結合先側だけを参照する場合 (例: WHERE r.flag) でも、単一の非 AND 式内で外部テーブルと組み合わせる場合 (例: WHERE l.id = 1 OR r.flag) でも、プッシュダウンされず、チェック対象から除外されます。このような述語は通常どおりの ClickHouse の評価位置 (結合後の WHERE、結合前の PREWHERE) で評価され、拒否されません。
最終更新日 2026年9月26日