メインコンテンツへスキップ
クライアントプロトコルのリファレンスは現在作成中です。例のほとんどは Go のみです。
このドキュメントでは、ClickHouse TCP クライアント向けのバイナリプロトコルについて説明します。

Varint

長さやパケットコードなどでは、符号なし varint エンコーディングを使用します。 binary.PutUvarintbinary.ReadUvarint を使用してください。
符号付き varint は使用しません。

文字列

可変長文字列は (length, value) の形式でエンコードされます。ここで lengthvarintvalue は UTF-8 文字列です。
OOM を防ぐため、length を検証してください:0 ≤ len < MAX
s := "Hello, world!"

// 文字列の長さを uvarint として書き込む。
buf := make([]byte, binary.MaxVarintLen64)
n := binary.PutUvarint(buf, uint64(len(s)))
buf = buf[:n]

// 文字列本体を書き込む。
buf = append(buf, s...)
00000000  0d 48 65 6c 6c 6f 2c 20  77 6f 72 6c 64 21        |.Hello, world!|

整数

ClickHouse では、固定長整数に リトルエンディアン を使用します。

Int32

v := int32(1000)

// エンコード。
buf := make([]byte, 8)
binary.LittleEndian.PutUint32(buf, uint32(v))

// デコード。
d := int32(binary.LittleEndian.Uint32(buf))
fmt.Println(d) // 1000
00000000  e8 03 00 00 00 00 00 00                           |........|

真偽値

真偽値は1バイトで表され、1true0false を表します。
最終更新日 2026年6月10日