跳到主要内容
跳到主要内容

客户端数据包

valuenamedescription
0Hello客户端握手开始
1Query查询请求
2Data包含数据的数据块
3Cancel取消查询
4PingPing 请求
5TableStatus表状态请求

Data 可以被压缩。

Hello

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

fieldtypevaluedescription
client_nameString"Go Client"客户端实现名称
version_majorUVarInt1客户端主版本号
version_minorUVarInt10客户端次版本号
protocol_versionUVarInt54451TCP 协议版本
databaseString"default"数据库名称
usernameString"default"用户名
passwordString"secret"密码

Protocol version

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

通常它等于最新的兼容服务器修订版本号,但不要将两者混为一谈。

Defaults

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

查询

字段类型示例值描述
query_idString1ff-a123查询 ID,可为 UUIDv4
client_infoClientInfo见类型定义客户端信息
settingsSettings见类型定义设置列表
secretStringsecret服务器间共享密钥
stageUVarInt2执行直到指定查询阶段
compressionUVarInt00=禁用,1=启用
bodyStringSELECT 1查询文本

客户端信息

字段类型描述
query_kindbyteNone=0, Initial=1, Secondary=2
initial_userString初始用户
initial_query_idString初始查询 ID
initial_addressString初始地址
initial_timeInt64初始时间
interfacebyteTCP=1, HTTP=2
os_userString操作系统用户
client_hostnameString客户端主机名
client_nameString客户端名称
version_majorUVarInt客户端主版本号
version_minorUVarInt客户端次版本号
protocol_versionUVarInt客户端协议版本
quota_keyString配额键
distributed_depthUVarInt分布式深度
version_patchUVarInt客户端补丁版本
otelBool是否存在 Trace 字段
trace_idFixedString(16)Trace ID
span_idFixedString(8)Span ID
trace_stateStringTrace 状态
trace_flagsByteTrace 标志

设置

字段类型示例值描述
keyStringsend_logs_level设置键
valueStringtrace设置值
importantBooltrue是否可以被忽略

编码为列表;当 key 和 value 为空时表示列表结束。

阶段

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

数据

fieldtypedescription
infoBlockInfo编码后的块信息
columnsUVarInt列数
rowsUVarInt行数
columns[]Column包含数据的列

fieldtypevaluedescription
nameStringfoo列名
typeStringDateTime64(9)列类型
databytes~列数据

取消

无数据包主体。服务器应取消该查询。

Ping

无数据包正文。服务器应返回 pong 响应