メインコンテンツへスキップ

説明

RowBinaryWithNamesAndTypes フォーマットに似ていますが、各セルの前に 1 バイト追加されており、そのカラムの DEFAULT 値を使用するかどうかを示します。これは RowBinaryWithDefaults フォーマットとまったく同じです。この組み合わせにより、スキーマの進化に対応した INSERT をサポートします。書き込み側はヘッダーからカラムを省略でき、その場合は対象カラムの DEFAULT が使用されます。さらに、送信するカラムについては、個々のセルごとに「そのカラムの DEFAULT を使う」と指定でき、これを NULL と混同せずに扱えます。 このフォーマットは入力専用です。

ワイヤ形式

ヘッダーは RowBinaryWithNamesAndTypes と同一です。
  1. カラム数 N を表す VarUInt
  2. カラム名を格納した、長さプレフィックス付きの StringN 個。
  3. N 個のカラム型 — テキスト名、またはコンパクトなバイナリエンコーディングのいずれかで、output_format_binary_encode_types_in_binary_format / input_format_binary_decode_types_in_binary_format 設定で制御されます。
ヘッダーの後には、各行は N 個のセルで構成されます。各セルについて:
  • 1 バイトの UInt8 マーカーバイト。
    • 0x01 — 対象カラムの DEFAULT 式を使用します。後続する値バイトはありません。
    • 0x00 — 値が続き、カラム型の RowBinary シリアライザーでシリアライズされます。Nullable(T) の場合、値バイトは Nullable の ヌルバイト (非NULLは 0、NULL は 1) で始まり、非NULLであればその後に内部値が続きます。

デフォルト値と NULL

セルごとのデフォルトマーカーと、Nullable に組み込まれているヌルバイトは独立しています。Nullable(UInt32) DEFAULT 42 カラムは、各行ごとに次の 3 通りで送信できます。

スキーマの進化

使用例

Query
Response
  • ヘッダーには、Nullable(UInt32) 型の x という名前のカラムが 1 つあります。
  • その 1 つのセルではマーカー 0x01 が使われ、“DEFAULT 42 を使用する” ことを意味します。

フォーマット設定

以下の設定は、すべての RowBinary 系フォーマットに共通です。
最終更新日 2026年7月2日