これらの設定は system.settings で利用でき、ソースコード から自動生成されています。
insert_allow_materialized_columns
この設定を有効にすると、INSERT でマテリアライズドカラムを使用できます。
INSERT のブロックの重複排除 (Replicated* テーブル向け) を有効または無効にします。
設定可能な値:
デフォルトでは、INSERT ステートメントによってレプリケートテーブルに挿入されたブロックは重複排除されます (Data Replication を参照) 。
レプリケートテーブルでは、デフォルトで各パーティションにつき直近 100 個のブロックのみが重複排除されます (replicated_deduplication_window、replicated_deduplication_window_seconds を参照) 。
非レプリケートテーブルについては、non_replicated_deduplication_window を参照してください。
insert_deduplication_token
この設定を使用すると、MergeTree/ReplicatedMergeTree で独自の重複排除セマンティクスを指定できます。
たとえば、各 INSERT ステートメントでこの設定に一意の値を指定することで、
同じ挿入データが重複排除されるのを防げます。
設定可能な値:
insert_deduplication_token は、空でない場合にのみ重複排除に使用されます。
レプリケートテーブルでは、デフォルトで各パーティションごとに直近 100 件の insert のみが重複排除されます (replicated_deduplication_window、replicated_deduplication_window_seconds を参照) 。
レプリケーションされていないテーブルについては、non_replicated_deduplication_window を参照してください。
insert_deduplication_token はパーティション単位で追跡されるため、1 回の insert で書き込まれる複数のパーティションで同じトークンを使用できます。トークンがない場合、デフォルトの内容チェックサムは挿入された block 全体に対して計算されるため、insert が重複排除されるのは、そのデータ全体が以前の insert (再試行) と一致する場合のみです。単一パーティションの行が、たまたま別の insert と一致しただけでは重複排除されません。
例:
Nullable ではないデータ型のカラムに対して、NULL の代わりに デフォルト値 を挿入するかどうかを切り替えます。
カラム型が Nullable ではなく、この設定が無効な場合、NULL を挿入すると例外が発生します。カラム型が Nullable の場合は、この設定に関係なく、NULL 値はそのまま挿入されます。
この設定は INSERT … SELECT クエリに適用されます。SELECT サブクエリは UNION ALL 句で連結できる点に注意してください。
設定可能な値:
- 0 — Nullable ではないカラムに
NULL を挿入すると例外が発生します。
- 1 —
NULL の代わりにカラムのデフォルト値が挿入されます。
0 でない場合、データを同期的に挿入する Distributed テーブルの分片を指定します。
insert_shard_id の値が正しくない場合、サーバーは例外をスローします。
requested_cluster の分片数を取得するには、サーバーの設定を確認するか、このクエリを使用します。
設定可能な値:
- 0 — 無効。
- 対応する Distributed テーブルの
1 から shards_num までの任意の数値。
例
クエリ:
結果: