| 値 | 名前 | 説明 |
|---|---|---|
| 0 | Hello | クライアントハンドシェイクの開始 |
| 1 | Query | クエリリクエスト |
| 2 | Data | データを含むブロック |
| 3 | キャンセル | クエリのキャンセル |
| 4 | Ping | Ping リクエスト |
| 5 | TableStatus | テーブルステータスのリクエスト |
Data は圧縮できます。
Hello
たとえば、54451 のプロトコルバージョンに対応した Go Client v1.10 を使用し、
default ユーザーと secret パスワードで default データベースに接続するとします。
| フィールド | 型 | 値 | 説明 |
|---|---|---|---|
| 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 |
Query ID。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 | 初期クエリ ID |
| initial_address | String | 初期アドレス |
| initial_time | Int64 | 初期時刻 |
| interface | byte | TCP=1、HTTP=2 |
| os_user | String | OSユーザー |
| client_hostname | String | クライアントのホスト名 |
| client_name | String | クライアント名 |
| version_major | UVarInt | クライアントのメジャーバージョン |
| version_minor | UVarInt | クライアントのマイナーバージョン |
| protocol_version | UVarInt | クライアントのプロトコルバージョン |
| quota_key | String | クォータキー |
| distributed_depth | UVarInt | Distributed の深度 |
| version_patch | UVarInt | クライアントのパッチバージョン |
| otel | Bool | トレース関連フィールドが存在する |
| trace_id | FixedString(16) | トレース ID |
| span_id | FixedString(8) | スパン ID |
| trace_state | String | トレース状態 |
| trace_flags | Byte | トレースフラグ |
設定
| フィールド | 型 | 値 | 説明 |
|---|---|---|---|
| key | String | send_logs_level |
設定のキー |
| value | String | trace |
設定の値 |
| important | Bool | true |
無視できるかどうか |
リストとしてエンコードされ、キーと値が空であればリストの終端を示します。
Stage
| 値 | 名前 | 説明 |
|---|---|---|
| 0 | FetchColumns | カラムの型のみ取得 |
| 1 | WithMergeableState | マージ可能な状態まで |
| 2 | Complete | 完全な状態まで (デフォルトにするべき) |
Data
| フィールド | 型 | 説明 |
|---|---|---|
| info | BlockInfo | エンコード済みのブロック情報 |
| columns | UVarInt | カラム数 |
| rows | UVarInt | 行数 |
| columns | []カラム | データを含むカラム |
カラム
| フィールド | 型 | 値 | 説明 |
|---|---|---|---|
| name | String | foo |
カラム名 |
| type | String | DateTime64(9) |
カラムの型 |
| data | bytes | ~ | カラムデータ |
キャンセル
パケット本文はありません。サーバーはクエリをキャンセルする必要があります。
Ping
パケット本文はありません。サーバーはpong を返す必要があります。