Клиентские пакеты
значение | название | описание |
---|---|---|
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 | Идентификатор запроса, может быть 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 | Идентификатор начального запроса |
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) | Идентификатор трассировки |
span_id | FixedString(8) | Идентификатор спана |
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.