Saltar al contenido principal
La referencia del protocolo del cliente está en desarrollo.La mayoría de los ejemplos solo están en Go.
Este documento describe el protocolo binario para los clientes TCP de ClickHouse.

Varint

Para las longitudes, los códigos de paquete y otros casos, se utiliza la codificación unsigned varint. Utilice binary.PutUvarint y binary.ReadUvarint.
No se utiliza signed varint.

String

Las cadenas de longitud variable se codifican como (longitud, valor), donde longitud es varint y valor es una cadena UTF-8.
Valide la longitud para evitar OOM:0 ≤ len < MAX
s := "Hello, world!"

// Escribir la longitud de la cadena como uvarint.
buf := make([]byte, binary.MaxVarintLen64)
n := binary.PutUvarint(buf, uint64(len(s)))
buf = buf[:n]

// Escribir el valor de la cadena.
buf = append(buf, s...)
00000000  0d 48 65 6c 6c 6f 2c 20  77 6f 72 6c 64 21        |.Hello, world!|

Enteros

ClickHouse utiliza Little Endian para los enteros de tamaño fijo.

Int32

v := int32(1000)

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

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

Booleano

Los valores booleanos se representan con un único byte: 1 es true y 0 es false.
Última modificación el 10 de junio de 2026