Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Notions de base

Ce document décrit le protocole binaire pour les clients TCP de ClickHouse.

Varint

Pour les longueurs, les codes de paquets et dans d'autres cas, l'encodage varint non signé est utilisé. Utilisez binary.PutUvarint et binary.ReadUvarint.

String

Les chaînes de longueur variable sont encodées sous la forme (length, value), où length est un varint et value une chaîne UTF-8.

s := "Hello, world!"

// Écriture de la longueur de la chaîne en uvarint.
buf := make([]byte, binary.MaxVarintLen64)
n := binary.PutUvarint(buf, uint64(len(s)))
buf = buf[:n]

// Écriture de la valeur de la chaîne.
buf = append(buf, s...)
00000000  0d 48 65 6c 6c 6f 2c 20  77 6f 72 6c 64 21        |.Hello, world!|

Entiers

Int32

v := int32(1000)

// Encode.
buf := make([]byte, 8)
binary.LittleEndian.PutUint32(buf, uint32(v))

// Decode.
d := int32(binary.LittleEndian.Uint32(buf))
fmt.Println(d) // 1000
00000000  e8 03 00 00 00 00 00 00                           |........|

Booléen

Les booléens sont représentés par un octet unique : 1 correspond à true et 0 à false.

Navigation