Passer au contenu principal

Description

Semblable au format RowBinaryWithNamesAndTypes, mais avec un octet supplémentaire avant chaque cellule indiquant si la valeur DEFAULT de la colonne doit être utilisée — exactement comme dans le format RowBinaryWithDefaults. Cette combinaison prend en charge les INSERT avec évolution du schéma : l’émetteur peut omettre des colonnes de l’en-tête (elles reçoivent alors la valeur DEFAULT de la colonne cible) et, pour chaque colonne qu’il envoie, il peut marquer certaines cellules comme « utiliser la valeur DEFAULT de la colonne » sans confondre cela avec NULL. Ce format est pris en charge uniquement en entrée.

Format de transmission

L’en-tête est identique à RowBinaryWithNamesAndTypes :
  1. Un VarUInt indiquant le nombre de colonnes N.
  2. N String précédées de leur longueur, contenant les noms de colonnes.
  3. N types de colonnes — soit des noms textuels, soit un encodage binaire compact, selon les paramètres output_format_binary_encode_types_in_binary_format / input_format_binary_decode_types_in_binary_format.
Après l’en-tête, chaque ligne se compose de N cellules. Pour chaque cellule :
  • Un unique octet marqueur UInt8.
    • 0x01 — utilise l’expression DEFAULT de la colonne cible. Aucun octet de valeur ne suit.
    • 0x00 — une valeur suit, sérialisée avec le sérialiseur RowBinary du type de colonne. Pour Nullable(T), les octets de valeur commencent par l’octet NULL de Nullable (0 pour non-NULL, 1 pour NULL), puis par la valeur interne si elle n’est pas NULL.

Valeurs par défaut vs NULL

Le marqueur de valeur par cellule et l’octet NULL intégré à Nullable sont indépendants. Une colonne Nullable(UInt32) DEFAULT 42 peut être envoyée de trois façons différentes pour chaque ligne :

Évolution du schéma

Exemple d’utilisation

Query
Response
  • L’en-tête comprend une colonne nommée x de type Nullable(UInt32).
  • L’unique cellule utilise le marqueur 0x01, ce qui signifie “utiliser DEFAULT 42”.

Paramètres de format

Les paramètres suivants sont communs à tous les formats de type RowBinary.
Dernière modification le 2 juillet 2026