eval avalia seu argumento como uma string de consulta e, em seguida, executa essa string como uma única consulta SELECT.
Esta função de tabela é experimental e fica desativada por padrão. Habilite-a com a configuração allow_experimental_eval_table_function:
Sintaxe
Argumentos
expression— Uma expressão constante que retorna uma string de consulta. Parâmetros de consulta e subconsultas escalares são permitidos.SELECT ...— Uma consultaSELECTque retorna uma string de consulta. Essa forma é um açúcar sintático para uma subconsulta escalar:eval(SELECT ...)é equivalente aeval((SELECT ...)), portanto a consulta deve retornar exatamente uma linha e uma coluna.
StringNullable(String)LowCardinality(String)LowCardinality(Nullable(String))
NULL, eval lança uma exceção.
Valor retornado
Retorna o resultado da consultaSELECT gerada na forma de uma tabela.
O esquema de saída é determinado quando a função de tabela eval é analisada, portanto consultas externas podem se referir aos nomes e tipos reais das colunas da consulta gerada.
Exemplos
Avalie uma expressão constante:SELECT de entrada que retorna o texto da consulta:
Restrições
- A consulta gerada deve ser uma única consulta
SELECT, sem opções de saída comoINTO OUTFILEouFORMAT.evalnão executa várias instruções. - A consulta gerada deve ser autocontida: ela é resolvida em seu próprio escopo e não pode referenciar aliases de
WITHnem colunas da consulta externa. - A consulta gerada não pode usar a função de tabela
evalnovamente. evalnão pode ser usado como argumento de outra função de tabela, comoremote('host', eval(...)). Para executar a consulta gerada em um servidor remoto, encapsule-a emview:remote('host', view(SELECT * FROM eval(...))).- O argumento é avaliado uma vez durante a análise da consulta, não uma vez por linha ou bloco.
- O log da consulta externa registra a consulta original que contém
eval; a consultaSELECTgerada não é registrada como uma consulta de usuário separada.
Veja também
- função de tabela
view - configuração
allow_experimental_eval_table_function