Перейти к основному содержанию
Перейти к основному содержанию

Пакеты клиента

valuenamedescription
0HelloНачало рукопожатия клиента
1QueryЗапрос
2DataБлок с данными
3CancelОтмена запроса
4PingPing-запрос
5TableStatusЗапрос статуса таблицы

Пакет Data может быть сжат.

Hello

Например, у нас есть Go Client v1.10, который поддерживает версию протокола 54451 и мы хотим подключиться к базе данных default с пользователем default и паролем secret.

fieldtypevaluedescription
client_nameString"Go Client"Имя реализации клиента
version_majorUVarInt1Старший номер версии клиента
version_minorUVarInt10Младший номер версии клиента
protocol_versionUVarInt54451Версия TCP-протокола
databaseString"default"Имя базы данных
usernameString"default"Имя пользователя
passwordString"secret"Пароль

Protocol version

Версия протокола — это версия TCP-протокола клиента.

Обычно она равна последней совместимой ревизии сервера, но её не следует с ней путать.

Defaults

Все значения должны быть явно заданы, на стороне сервера нет значений по умолчанию. На стороне клиента используйте "default" как имя базы данных, "default" как имя пользователя и "" (пустую строку) как пароль по умолчанию.

Запрос

fieldtypevaluedescription
query_idString1ff-a123Идентификатор запроса, может быть UUIDv4
client_infoClientInfoSee typeДанные о клиенте
settingsSettingsSee typeСписок настроек
secretStringsecretМежсерверный секрет
stageUVarInt2Выполнять до стадии обработки запроса
compressionUVarInt00 — отключено, 1 — включено
bodyStringSELECT 1Текст запроса

Информация о клиенте

fieldtypedescription
query_kindbyteNone=0, Initial=1, Secondary=2
initial_userStringИсходный пользователь
initial_query_idStringИсходный идентификатор запроса
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_idFixedString(16)Идентификатор трассы
span_idFixedString(8)Идентификатор спана
trace_stateStringСостояние трассировки
trace_flagsByteФлаги трассировки

Настройки

fieldtypevaluedescription
keyStringsend_logs_levelКлюч настройки
valueStringtraceЗначение настройки
importantBooltrueМожно ли игнорировать настройку

Кодируется в виде списка; пустые key и value обозначают конец списка.

Стадия

valuenamedescription
0FetchColumnsТолько получить типы столбцов
1WithMergeableStateДо состояния, пригодного для слияния
2CompleteДо полной завершённости (должно быть значением по умолчанию)

Данные

fieldtypedescription
infoBlockInfoЗакодированная информация блока
columnsUVarIntКоличество столбцов
rowsUVarIntКоличество строк
columns[]ColumnСтолбцы с данными

Столбец

fieldtypevaluedescription
nameStringfooИмя столбца
typeStringDateTime64(9)Тип столбца
databytes~Данные столбца

Cancel

Тело пакета отсутствует. Сервер должен отменить запрос.

Ping

Не содержит тела пакета. Сервер должен ответить сообщением pong.