O uso de arquivos executáveis depende de como o dicionário é armazenado na memória. Se o dicionário for armazenado com cache e complex_key_cache, o ClickHouse solicita as chaves necessárias enviando uma requisição para a STDIN do arquivo executável. Caso contrário, o ClickHouse inicia o arquivo executável e trata a saída dele como dados do dicionário.
Exemplo de configurações:
SOURCE(EXECUTABLE(
command 'cat /opt/dictionaries/os.tsv'
format 'TabSeparated'
implicit_key false
))<source>
<executable>
<command>cat /opt/dictionaries/os.tsv</command>
<format>TabSeparated</format>
<implicit_key>false</implicit_key>
</executable>
</source>Campos de configuração:
| Setting | Description |
|---|---|
command |
O caminho absoluto para o arquivo executável, ou o nome do arquivo (se o diretório do comando estiver no PATH). |
format |
O formato do arquivo. Todos os formatos descritos em Formatos são compatíveis. |
command_termination_timeout |
O script executável deve conter um loop principal de leitura e escrita. Depois que o dicionário é destruído, o pipe é fechado, e o arquivo executável terá command_termination_timeout segundos para encerrar antes que o ClickHouse envie um sinal SIGTERM ao processo filho. Especificado em segundos. O valor padrão é 10. Opcional. |
command_read_timeout |
Tempo limite para ler dados do stdout do comando, em milissegundos. Valor padrão: 10000. Opcional. |
command_write_timeout |
Tempo limite para gravar dados no stdin do comando, em milissegundos. Valor padrão: 10000. Opcional. |
implicit_key |
A fonte executável pode retornar apenas valores, e a correspondência com as chaves solicitadas é determinada implicitamente pela ordem das linhas no resultado. O valor padrão é false. |
execute_direct |
Se execute_direct = 1, command será procurado no diretório user_scripts especificado por user_scripts_path. Argumentos adicionais do script podem ser especificados separados por espaço em branco. Exemplo: script_name arg1 arg2. Se execute_direct = 0, command é passado como argumento para bin/sh -c. O valor padrão é 0. Opcional. |
send_chunk_header |
Controla se a contagem de linhas deve ser enviada antes de enviar um fragmento de dados ao processo. O valor padrão é false. Opcional. |
Essa fonte de dicionário pode ser configurada apenas por meio de configuração XML. A criação de dicionários com fonte executável via DDL é desabilitada; caso contrário, o usuário do banco de dados poderia executar binários arbitrários no nó do ClickHouse.