analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested
SELECT a.b.c FROM table ARRAY JOIN a não funciona, e SELECT a FROM table não inclui a coluna a.b.c no resultado de Nested a.
analyzer_compatibility_allow_non_aggregate_in_having
HAVING para WHERE, em vez de gerar NOT_AN_AGGREGATE. A rejeição em conformidade com o padrão é o comportamento padrão; esta configuração serve como auxílio de migração para consultas que eram aceitas silenciosamente pelo analyzer antigo (enable_analyzer = 0). Conjunções que contêm funções de agregação, grouping ou funções não determinísticas permanecem em HAVING. Se qualquer conjunção contiver uma função de janela ou uma função com estado (por exemplo, rowNumberInBlock), a reescrita será desabilitada para todo o HAVING, em linha com o comportamento legado do PredicateExpressionsOptimizer. A configuração também é ignorada quando GROUP BY usa WITH CUBE, WITH ROLLUP, WITH TOTALS ou GROUPING SETS.
analyzer_compatibility_apply_final_to_all_joined_tables
FINAL especificado na tabela mais à esquerda de um JOIN era incorretamente aplicado também a todas as demais tabelas unidas (para motores compatíveis com FINAL, como ReplacingMergeTree). Por padrão, FINAL se aplica apenas à tabela em que foi especificado. Habilite esta opção para compatibilidade com consultas que dependem do comportamento antigo; a correção recomendada é especificar FINAL explicitamente em cada tabela que precisar dele.
Valores possíveis:
- 0 -
FINALse aplica apenas à tabela em que foi especificado. - 1 -
FINALna tabela mais à esquerda de um JOIN é aplicado a todas as tabelas unidas.
analyzer_compatibility_join_using_top_level_identifier
SELECT a + 1 AS b FROM t1 JOIN t2 USING (b), o join será realizado por t1.a + 1 = t2.b, em vez de t1.b = t2.b). Aliases definidos em subexpressões na lista SELECT também são considerados (por exemplo, em SELECT uniqExact(a + 1 AS b) FROM t1 JOIN t2 USING (b), o join é realizado por t1.a + 1 = t2.b). Quando o alias correspondente é definido em uma subexpressão na lista SELECT, em vez de como um alias de nível superior, as réplicas paralelas são desativadas para a consulta. Para consultas enviadas a servidores remotos (tabelas Distributed, a função de tabela remote), essa consulta é rejeitada com uma exceção somente quando o identificador não pode ser resolvido no servidor remoto; se o alias mascarar uma coluna real da tabela à esquerda, o servidor remoto realizará o join por essa coluna, portanto os resultados poderão diferir da execução local.
analyzer_compatibility_multiple_joins_qualify_column_names
FROM de uma consulta contém dois ou mais JOINs (tabelas separadas por vírgulas contam; ARRAY JOIN não), o analyzer nomeia as colunas de resultado da mesma forma que a reescrita de múltiplas junções do analyzer antigo:
- as colunas produzidas pela expansão de
*,<table>.*ouCOLUMNS('<regexp>')recebem nomes no formato<alias-or-table>.<column>(o qualificador é o alias da expressão de tabela, se houver; caso contrário, o nome da tabela sem o banco de dados; ou, se aplicável, o nome da CTE; colunas de uma subconsulta incluída em uma junção sem alias permanecem não qualificadas). Dois tipos de coluna mantêm seu nome simples porque pertencem à junção, e não a uma única expressão de tabela: uma coluna produzida porARRAY JOINe uma chave mesclada porJOIN ... USING. Portanto, referências externas comoSELECT ll.arrouSELECT ll.knão são resolvidas nessas duas formas; - a forma de lista de identificadores
COLUMNS(col1, col2)não é uma expansão de correspondência: cada coluna mantém o nome exatamente como seu identificador foi escrito; assim,COLUMNS(x)produzxeCOLUMNS(a.x)produza.x; - uma referência de coluna sem alias na lista
SELECTmantém o nome exatamente como foi escrita (por exemplo,SELECT a.xproduz uma coluna chamadaa.xmesmo quandoxnão é ambígua).
enable_analyzer = 1).
analyzer_compatibility_prefer_alias_over_subcolumn
b.id pode se referir tanto à coluna id de uma tabela com alias b quanto à subcoluna Tuple b.id de alguma outra coluna, prefira a interpretação com prefixo de alias (coluna id de b). Por padrão, o analyzer prefere a subcoluna. Ative esta opção para corresponder à resolução do analyzer antigo.