Пакеты сервера
| значение | название | описание | 
|---|---|---|
| 0 | Hello | Ответ на рукопожатие сервера | 
| 1 | Data | То же самое, что и client data | 
| 2 | Exception | Исключение при обработке запроса | 
| 3 | Progress | Прогресс выполнения запроса | 
| 4 | Pong | Ответ на Ping | 
| 5 | EndOfStream | Все пакеты были переданы | 
| 6 | ProfileInfo | Данные профилирования | 
| 7 | Totals | Общие значения | 
| 8 | Extremes | Крайние значения (min, max) | 
| 9 | TablesStatusResponse | Ответ на запрос TableStatus | 
| 10 | Log | Лог системы запросов | 
| 11 | TableColumns | Описание колонок | 
| 12 | UUIDs | Список уникальных идентификаторов частей | 
| 13 | ReadTaskRequest | Строка (UUID) описывает запрос, для которого нужна следующая задача | 
| 14 | ProfileEvents | Пакет с событиями профилирования от сервера | 
Data, Totals и Extremes могут быть сжаты.
Hello
Ответ на client hello.
| поле | тип | значение | описание | 
|---|---|---|---|
| name | String | Clickhouse | Имя сервера | 
| version_major | UVarInt | 21 | Основная версия сервера | 
| version_minor | UVarInt | 12 | Второстепенная версия сервера | 
| revision | UVarInt | 54452 | Ревизия сервера | 
| tz | String | Europe/Moscow | Часовой пояс сервера | 
| display_name | String | Clickhouse | Имя сервера для UI | 
| version_patch | UVarInt | 3 | Версия патча сервера | 
Exception
Исключение сервера во время обработки запроса.
| поле | тип | значение | описание | 
|---|---|---|---|
| code | Int32 | 60 | См. ErrorCodes.cpp. | 
| name | String | DB::Exception | Основная версия сервера | 
| message | String | DB::Exception: Table X doesn't exist | Второстепенная версия сервера | 
| stack_trace | String | ~ | Стек вызовов C++ | 
| nested | Bool | true | Больше ошибок | 
Может быть непрерывным списком исключений, пока поле nested равно false.
Progress
Прогресс выполнения запроса, периодически сообщаемый сервером.
подсказка
Прогресс сообщается в дельтах. Для итогов накапливайте на клиенте.
| поле | тип | значение | описание | 
|---|---|---|---|
| rows | UVarInt | 65535 | Количество строк | 
| bytes | UVarInt | 871799 | Количество байт | 
| total_rows | UVarInt | 0 | Всего строк | 
| wrote_rows | UVarInt | 0 | Строки от клиента | 
| wrote_bytes | UVarInt | 0 | Байты от клиента | 
Pong
Ответ на client ping, без тела пакета.
End of stream
Больше не будут отправляться пакеты Data, результат запроса полностью передан от сервера к клиенту.
Нет тела пакета.
Profile info
| поле | тип | 
|---|---|
| rows | UVarInt | 
| blocks | UVarInt | 
| bytes | UVarInt | 
| applied_limit | Bool | 
| rows_before_limit | UVarInt | 
| calculated_rows_before_limit | Bool | 
Log
Блок данных с логом сервера.
подсказка
Закодирован как блок данных колонок, но никогда не сжимается.
| колонка | тип | 
|---|---|
| time | DateTime | 
| time_micro | UInt32 | 
| host_name | String | 
| query_id | String | 
| thread_id | UInt64 | 
| priority | Int8 | 
| source | String | 
| text | String | 
Profile events
Блок данных с событиями профилирования.
подсказка
Закодирован как блок данных колонок, но никогда не сжимается.
Тип value — UInt64 или Int64, в зависимости от ревизии сервера.
| колонка | тип | 
|---|---|
| host_name | String | 
| current_time | DateTime | 
| thread_id | UInt64 | 
| type | Int8 | 
| name | String | 
| value | UInt64 или Int64 |