Клиентские пакеты
значение | имя | описание |
---|---|---|
0 | Hello | Начало рукопожатия клиента |
1 | Query | Запрос на выполнение запроса |
2 | Data | Блок с данными |
3 | Cancel | Отмена запроса |
4 | Ping | Запрос Ping |
5 | TableStatus | Запрос статуса таблицы |
Data
может быть сжата.
Hello
Например, мы Go Client
v1.10, который поддерживает 54451
версию протокола и
хочет подключиться к базе данных default
с пользователем default
и паролем secret
.
поле | тип | значение | описание |
---|---|---|---|
client_name | String | "Go Client" | Имя реализации клиента |
version_major | UVarInt | 1 | Основная версия клиента |
version_minor | UVarInt | 10 | Неполная версия клиента |
protocol_version | UVarInt | 54451 | Версия TCP протокола |
database | String | "default" | Имя базы данных |
username | String | "default" | Имя пользователя |
password | String | "secret" | Пароль |
Версия протокола
Версия протокола — это версия TCP протокола клиента.
Обычно она равна самой последней совместимой версии сервера, но не следует путать их.
Значения по умолчанию
Все значения должны быть явно заданы, на стороне сервера нет значений по умолчанию.
На стороне клиента используйте базу данных "default"
, имя пользователя "default"
и пустую строку ""
в качестве значений по умолчанию.
Запрос
поле | тип | значение | описание |
---|---|---|---|
query_id | String | 1ff-a123 | ID запроса, может быть UUIDv4 |
client_info | ClientInfo | См. тип | Данные о клиенте |
settings | Settings | См. тип | Список настроек |
secret | String | secret | Секрет между серверами |
stage | UVarInt | 2 | Выполнять до стадии запроса |
compression | UVarInt | 0 | Отключен=0, включен=1 |
body | String | SELECT 1 | Текст запроса |
Информация о клиенте
поле | тип | описание |
---|---|---|
query_kind | byte | None=0, Initial=1, Secondary=2 |
initial_user | String | Начальный пользователь |
initial_query_id | String | Начальный ID запроса |
initial_address | String | Исходный адрес |
initial_time | Int64 | Начальное время |
interface | byte | TCP=1, HTTP=2 |
os_user | String | Пользователь ОС |
client_hostname | String | Имя хоста клиента |
client_name | String | Имя клиента |
version_major | UVarInt | Основная версия клиента |
version_minor | UVarInt | Неполная версия клиента |
protocol_version | UVarInt | Версия протокола клиента |
quota_key | String | Ключ квоты |
distributed_depth | UVarInt | Глубина распределения |
version_patch | UVarInt | Версия патча клиента |
otel | Bool | Поля трассировки присутствуют |
trace_id | FixedString(16) | ID трассировки |
span_id | FixedString(8) | ID диапазона |
trace_state | String | Состояние трассировки |
trace_flags | Byte | Флаги трассировки |
Настройки
поле | тип | значение | описание |
---|---|---|---|
key | String | send_logs_level | Ключ настройки |
value | String | trace | Значение настройки |
important | Bool | true | Могу быть игнорировано или нет |
Закодировано как список, пустой ключ и значение обозначают конец списка.
Стадия
значение | имя | описание |
---|---|---|
0 | FetchColumns | Загружать только типы колонок |
1 | WithMergeableState | До состояния с возможностью объединения |
2 | Complete | До полной завершенности (должно быть по умолчанию) |
Данные
поле | тип | описание |
---|---|---|
info | BlockInfo | Закодированная информация о блоке |
columns | UVarInt | Количество колонок |
rows | UVarInt | Количество строк |
columns | []Column | Колонки с данными |
Колонка
поле | тип | значение | описание |
---|---|---|---|
name | String | foo | Имя колонки |
type | String | DateTime64(9) | Тип колонки |
data | bytes | ~ | Данные колонки |
Отмена
Нет тела пакета. Сервер должен отменить запрос.
Ping
Нет тела пакета. Сервер должен ответить "pong".