서버 패킷
| value | name | description |
|---|---|---|
| 0 | Hello | 서버 핸드셰이크 응답 |
| 1 | Data | 클라이언트 데이터와 동일 |
| 2 | Exception | 쿼리 처리 예외 |
| 3 | Progress | 쿼리 진행 상황 |
| 4 | Pong | Ping 요청에 대한 응답 |
| 5 | EndOfStream | 모든 패킷이 전송됨 |
| 6 | ProfileInfo | 프로파일링 데이터 |
| 7 | Totals | 총계 값 |
| 8 | Extremes | 극단값(최솟값, 최댓값) |
| 9 | TablesStatusResponse | TableStatus 요청에 대한 응답 |
| 10 | Log | 쿼리 시스템 로그 |
| 11 | TableColumns | 컬럼에 대한 설명 |
| 12 | UUIDs | 고유한 파트 ID 목록 |
| 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 | UI용 서버 이름 |
| version_patch | UVarInt | 3 | 서버 패치 버전 |
Exception
쿼리 처리 중 서버 예외가 발생했습니다.
| 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가 될 때까지 예외가 연속해서 나열될 수 있습니다.
진행 상황
쿼리 실행 진행 상황이 서버에 의해 주기적으로 보고됩니다.
팁
진행 상황은 **증분(delta)**으로 보고됩니다. 총계를 얻으려면 클라이언트에서 누적하십시오.
| 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 패킷이 전송되지 않으며, 쿼리 결과가 서버에서 클라이언트로 모두 전송되었습니다.
패킷 본문은 없습니다.
프로필 정보
| field | type |
|---|---|
| rows | UVarInt |
| blocks | UVarInt |
| bytes | UVarInt |
| applied_limit | Bool |
| rows_before_limit | UVarInt |
| calculated_rows_before_limit | Bool |
로그
서버 로그를 담는 데이터 블록입니다.
팁
컬럼으로 구성된 데이터 블록으로 인코딩되지만, 압축되지는 않습니다.
| 컬럼 | 타입 |
|---|---|
| time | DateTime |
| time_micro | UInt32 |
| host_name | String |
| query_id | String |
| thread_id | UInt64 |
| priority | Int8 |
| source | String |
| text | String |
프로파일 이벤트
프로파일 이벤트가 포함된 데이터 블록입니다.
팁
컬럼으로 구성된 데이터 블록으로 인코딩되지만, 압축되지는 않습니다.
value 타입은 서버 리비전에 따라 UInt64 또는 Int64입니다.
| 컬럼 | 타입 |
|---|---|
| host_name | String |
| current_time | DateTime |
| thread_id | UInt64 |
| type | Int8 |
| name | String |
| value | UInt64 or Int64 |