Пакеты сервера
| value | name | description |
|---|---|---|
| 0 | Hello | Ответ сервера при установлении соединения |
| 1 | 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.
| field | type | value | description |
|---|---|---|---|
| name | String | ClickHouse | Имя сервера |
| version_major | UVarInt | 21 | Основная версия сервера |
| version_minor | UVarInt | 12 | Минорная версия сервера |
| revision | UVarInt | 54452 | Ревизия сервера |
| tz | String | Europe/Moscow | Часовой пояс сервера |
| display_name | String | ClickHouse | Имя сервера для интерфейса |
| version_patch | UVarInt | 3 | Патч-версия сервера |
Исключение
Исключение на сервере во время обработки запроса.
| field | type | value | description |
|---|---|---|---|
| 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.
Прогресс
Прогресс выполнения запроса сервер периодически отправляет клиенту.
Прогресс передаётся в виде дельт. Для получения суммарных значений накапливайте их на стороне клиента.
| field | type | value | description |
|---|---|---|---|
| rows | UVarInt | 65535 | Количество строк |
| bytes | UVarInt | 871799 | Количество байт |
| total_rows | UVarInt | 0 | Общее число строк |
| wrote_rows | UVarInt | 0 | Строк, отправленных клиентом |
| wrote_bytes | UVarInt | 0 | Байтов, отправленных клиентом |
Pong
Ответ на ping клиента, без тела пакета.
Конец потока
Больше пакетов типа Data не будет отправлено, результат запроса полностью передан с сервера клиенту.
Тело пакета отсутствует.
Информация о профиле
| поле | тип |
|---|---|
| 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 |
Профильные события
Блок данных с профильными событиями.
Кодируется как блок данных из столбцов, но никогда не сжимается.
Тип столбца value — UInt64 или Int64, в зависимости от ревизии сервера.
| column | type |
|---|---|
| host_name | String |
| current_time | DateTime |
| thread_id | UInt64 |
| type | Int8 |
| name | String |
| value | UInt64 or Int64 |