Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Conceptos básicos

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.

String

Las cadenas de longitud variable se codifican como (longitud, valor), donde longitud es varint y valor es una cadena UTF-8.

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

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.

Navigation