> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Пакеты сервера

> Сервер собственного протокола

| значение | имя                              | описание                                                                                    |
| -------- | -------------------------------- | ------------------------------------------------------------------------------------------- |
| 0        | [Hello](#hello)                  | Ответ сервера при рукопожатии                                                               |
| 1        | Data                             | То же, что и [данные клиента](/ru/resources/develop-contribute/native-protocol/client#data) |
| 2        | [Exception](#exception)          | Исключение при обработке запроса                                                            |
| 3        | [Progress](#progress)            | Прогресс запроса                                                                            |
| 4        | [Pong](#pong)                    | Ответ на Ping                                                                               |
| 5        | [EndOfStream](#end-of-stream)    | Все пакеты переданы                                                                         |
| 6        | [ProfileInfo](#profile-info)     | Данные профилирования                                                                       |
| 7        | Totals                           | Итоговые значения                                                                           |
| 8        | Extremes                         | Предельные значения (min, max)                                                              |
| 9        | TablesStatusResponse             | Ответ на запрос TableStatus                                                                 |
| 10       | [Log](#log)                      | Системный журнал запроса                                                                    |
| 11       | TableColumns                     | Описание столбцов                                                                           |
| 12       | UUIDs                            | Список уникальных идентификаторов частей                                                    |
| 13       | ReadTaskRequest                  | Строка (UUID) описывает запрос, для которого нужна следующая задача                         |
| 14       | [ProfileEvents](#profile-events) | Пакет с событиями профилирования от сервера                                                 |

Пакеты `Data`, `Totals` и `Extremes` могут быть сжаты.

<div id="hello">
  ## Hello
</div>

Ответ на [client hello](/ru/resources/develop-contribute/native-protocol/client#hello).

| поле           | тип     | значение        | описание                 |
| -------------- | ------- | --------------- | ------------------------ |
| 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`             | Патч-версия сервера      |

<div id="exception">
  ## Исключение
</div>

Исключение на сервере при обработке запроса.

| поле         | тип    | значение                               | описание                     |
| ------------ | ------ | -------------------------------------- | ---------------------------- |
| code         | Int32  | `60`                                   | См. [ErrorCodes.cpp][codes]. |
| name         | String | `DB::Exception`                        | Основная версия сервера      |
| message      | String | `DB::Exception: Table X doesn't exist` | Младшая версия сервера       |
| stack\_trace | String | \~                                     | Трассировка стека C++        |
| nested       | Bool   | `true`                                 | Дополнительные ошибки        |

Это может быть непрерывный список исключений, пока `nested` не равно `false`.

[codes]: https://clickhouse.com/codebrowser/ClickHouse/src/Common/ErrorCodes.cpp.html "Список кодов ошибок"

<div id="progress">
  ## Прогресс
</div>

Прогресс выполнения запроса, о котором сервер периодически сообщает.

<Tip>
  Прогресс передаётся **дельтами**. Чтобы получить итоговые значения, накапливайте их на клиенте.
</Tip>

| поле         | тип     | значение | описание          |
| ------------ | ------- | -------- | ----------------- |
| rows         | UVarInt | `65535`  | Количество строк  |
| bytes        | UVarInt | `871799` | Количество байт   |
| total\_rows  | UVarInt | `0`      | Всего строк       |
| wrote\_rows  | UVarInt | `0`      | Строки от клиента |
| wrote\_bytes | UVarInt | `0`      | Байты от клиента  |

<div id="pong">
  ## Pong
</div>

Ответ на [Ping клиента](/ru/resources/develop-contribute/native-protocol/client#ping), тело пакета отсутствует.

<div id="end-of-stream">
  ## Конец потока
</div>

Пакеты **Data** больше не отправляются: результат запроса полностью передан с сервера клиенту.

Тело пакета отсутствует.

<div id="profile-info">
  ## Информация о профиле
</div>

| поле                            | тип     |
| ------------------------------- | ------- |
| rows                            | UVarInt |
| blocks                          | UVarInt |
| bytes                           | UVarInt |
| applied\_limit                  | Bool    |
| rows\_before\_limit             | UVarInt |
| calculated\_rows\_before\_limit | Bool    |

<div id="log">
  ## Log
</div>

**Блок данных** с логом сервера.

<Tip>
  Кодируется как **блок данных**, состоящий из столбцов, но никогда не сжимается.
</Tip>

| столбец     | тип      |
| ----------- | -------- |
| time        | DateTime |
| time\_micro | UInt32   |
| host\_name  | String   |
| query\_id   | String   |
| thread\_id  | UInt64   |
| priority    | Int8     |
| source      | String   |
| text        | String   |

<div id="profile-events">
  ## События профилирования
</div>

**Блок данных** со событиями профилирования.

<Tip>
  Кодируется как **блок данных**, состоящий из столбцов, но никогда не сжимается.

  Тип `value` — `UInt64` или `Int64` в зависимости от ревизии сервера.
</Tip>

| столбец       | тип             |
| ------------- | --------------- |
| host\_name    | String          |
| current\_time | DateTime        |
| thread\_id    | UInt64          |
| type          | Int8            |
| name          | String          |
| value         | UInt64 or Int64 |
