| valor | nome | descrição |
|---|---|---|
| 0 | Hello | Início do handshake do cliente |
| 1 | Query | Solicitação de consulta |
| 2 | Data | Bloco de dados |
| 3 | Cancel | Cancelamento de consulta |
| 4 | Ping | Solicitação de Ping |
| 5 | TableStatus | Solicitação de status da tabela |
O Data pode ser compactado.
Hello
Por exemplo, estamos usando o Go Client v1.10, que oferece suporte à versão de protocolo 54451, e
queremos nos conectar ao banco de dados default com o usuário default e a senha secret.
| campo | tipo | valor | descrição |
|---|---|---|---|
| client_name | String | "Go Client" |
Nome da implementação do cliente |
| version_major | UVarInt | 1 |
Versão principal do cliente |
| version_minor | UVarInt | 10 |
Versão secundária do cliente |
| protocol_version | UVarInt | 54451 |
Versão do protocolo TCP |
| database | String | "default" |
Nome do banco de dados |
| username | String | "default" |
Nome de usuário |
| password | String | "secret" |
Senha |
Versão do protocolo
A versão do protocolo corresponde à versão do protocolo TCP do cliente.
Em geral, ela é igual à revisão compatível mais recente do servidor, mas não deve ser confundida com essa revisão.
Valores padrão
Todos os valores devem ser explicitamente definidos; não há valores padrão no lado do servidor.
No lado do cliente, use o banco de dados "default", o nome de usuário "default" e a senha "" (string vazia) como valores padrão.
Consulta
| campo | tipo | valor | descrição |
|---|---|---|---|
| query_id | String | 1ff-a123 |
ID da consulta, pode ser um UUIDv4 |
| client_info | ClientInfo | Ver tipo | Dados sobre o cliente |
| settings | Configurações | Ver tipo | Lista de configurações |
| secret | String | secret |
Segredo entre servidores |
| stage | UVarInt | 2 |
Executa até o estágio da consulta |
| compression | UVarInt | 0 |
Desativado=0, ativado=1 |
| body | String | SELECT 1 |
Texto da consulta |
Informações do cliente
| campo | tipo | descrição |
|---|---|---|
| query_kind | byte | None=0, Initial=1, Secondary=2 |
| initial_user | String | Usuário inicial |
| initial_query_id | String | ID da consulta inicial |
| initial_address | String | Endereço inicial |
| initial_time | Int64 | Tempo inicial |
| interface | byte | TCP=1, HTTP=2 |
| os_user | String | Usuário do SO |
| client_hostname | String | Hostname do cliente |
| client_name | String | Nome do cliente |
| version_major | UVarInt | Versão principal do cliente |
| version_minor | UVarInt | Versão secundária do cliente |
| protocol_version | UVarInt | Versão do protocolo do cliente |
| quota_key | String | Chave da quota |
| distributed_depth | UVarInt | Profundidade distribuída |
| version_patch | UVarInt | Versão de patch do cliente |
| otel | Bool | Campos de trace presentes |
| trace_id | FixedString(16) | ID do trace |
| span_id | FixedString(8) | ID do span |
| trace_state | String | Estado do rastreamento |
| trace_flags | Byte | Sinalizadores de rastreamento |
Configurações
| campo | tipo | valor | descrição |
|---|---|---|---|
| chave | String | send_logs_level |
Chave da configuração |
| valor | String | trace |
Valor da configuração |
| importante | Bool | true |
Indica se pode ser ignorado |
Codificado como lista; chave e valor em branco indicam o fim da lista.
Estágio
| valor | nome | descrição |
|---|---|---|
| 0 | FetchColumns | Busca apenas os tipos das colunas |
| 1 | WithMergeableState | Até um estado passível de mesclagem |
| 2 | Complete | Até a conclusão completa (deve ser o padrão) |
Data
| campo | tipo | descrição |
|---|---|---|
| info | BlockInfo | Informações do bloco codificadas |
| columns | UVarInt | Quantidade de colunas |
| rows | UVarInt | Quantidade de linhas |
| columns | []Column | Colunas com dados |
Coluna
| campo | tipo | valor | descrição |
|---|---|---|---|
| name | String | foo |
Nome da coluna |
| type | String | DateTime64(9) |
Tipo da coluna |
| data | bytes | ~ | Dados da coluna |
Cancel
Não há corpo do pacote. O servidor deve cancelar a consulta.
Ping
Sem corpo do pacote. O servidor deve responder com pong.