跳至主要内容

客户端数据包

名称描述
0Hello客户端握手开始
1查询查询请求
2数据包含数据的数据块
3取消取消查询
4PingPing 请求
5表状态表状态请求

Data 可以被压缩。

Hello

例如,我们使用的是支持 54451 协议版本的 Go Client v1.10,并希望连接到 default 数据库,使用 default 用户和 secret 密码。

字段类型描述
client_name字符串"Go Client"客户端实现名称
version_majorUVarInt1客户端主版本
version_minorUVarInt10客户端次版本
protocol_versionUVarInt54451TCP 协议版本
database字符串"default"数据库名称
username字符串"default"用户名
password字符串"secret"密码

协议版本

协议版本是客户端的 TCP 协议版本。

通常它等于最新的兼容服务器版本,但不要与之混淆。

默认值

所有值都应 **显式设置**,服务器端没有默认值。在客户端,使用 "default" 数据库、"default" 用户名和 ""(空字符串)密码作为默认值。

查询

字段类型描述
query_id字符串1ff-a123查询 ID,可以是 UUIDv4
client_infoClientInfo参见类型关于客户端的信息
settings设置参见类型设置列表
secret字符串secret服务器间密钥
stageUVarInt2执行到查询阶段
compressionUVarInt0禁用=0,启用=1
body字符串SELECT 1查询文本

客户端信息

字段类型描述
query_kind字节无=0,初始=1,次要=2
initial_user字符串初始用户
initial_query_id字符串初始查询 ID
initial_address字符串初始地址
initial_timeInt64初始时间
interface字节TCP=1,HTTP=2
os_user字符串操作系统用户
client_hostname字符串客户端主机名
client_name字符串客户端名称
version_majorUVarInt客户端主版本
version_minorUVarInt客户端次版本
protocol_versionUVarInt客户端协议版本
quota_key字符串配额密钥
distributed_depthUVarInt分布式深度
version_patchUVarInt客户端补丁版本
otel布尔值跟踪字段是否存在
trace_idFixedString(16)跟踪 ID
span_idFixedString(8)跨度 ID
trace_state字符串跟踪状态
trace_flags字节跟踪标志

设置

字段类型描述
字符串send_logs_level设置的键
字符串跟踪设置的值
重要布尔值true可以忽略或不忽略

编码为列表,空键和值表示列表结束。

阶段

名称描述
0FetchColumns仅获取列类型
1WithMergeableState直到可合并状态
2Complete直到完全完整(应为默认值)

数据

字段类型描述
infoBlockInfo编码的数据块信息
columnsUVarInt列数
rowsUVarInt行数
columns[]Column包含数据列

字段类型描述
名称字符串foo列名
类型字符串DateTime64(9)列类型
data字节~列数据

取消

没有数据包主体。服务器应取消查询。

Ping

没有数据包主体。服务器应 以 pong 响应