Skip to main content
本规范说明了可用于对 ClickHouse 数据类型进行二进制编码和解码的二进制格式。该格式用于 Dynamic 列的二进制序列化,也可在相应设置下用于输入/输出格式 RowBinaryWithNamesAndTypesNative 下表说明了每种数据类型在二进制格式中的表示方式。每种数据类型的编码由 1 个字节组成,用于标识类型,以及一些可选的附加信息。 二进制编码中的 var_uint 表示其大小使用可变长度数量压缩进行编码。 对于 JSON 类型,字节 uint8_serialization_version 表示序列化版本。目前该版本始终为 0,但如果将来为 JSON 类型引入新的参数,这个值可能会发生变化。 对于 QBit 类型,仅当 stride 与维度 N 不同时,才会使用 0x37 编码。当 stride == N 时 (包括显式写出第三个参数的情况,例如 QBit(Float32, 4, 4)) ,该类型会被规范化为双参数形式 QBit(T, N),并按上文所述编码为 0x36,因此其二进制编码在字节级别上与不带 strideQBit 完全一致。

时间间隔类型的二进制编码

下表说明了 Interval 数据类型中不同时间间隔类型的二进制编码方式。

聚合函数参数二进制编码

下表说明了 AggregateFunctionSimpleAggregateFunction 的参数编码方式。 参数编码由 1 个字节的参数类型标识以及参数值本身组成。
最后修改于 2026年7月23日