Skip to main content
Esta configuración está disponible en system.settings y se genera automáticamente a partir del código fuente.

analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested

Permite añadir identificadores compuestos a Nested. Esta es una configuración de compatibilidad porque cambia el resultado de la consulta. Cuando está deshabilitada, SELECT a.b.c FROM table ARRAY JOIN a no funciona, y SELECT a FROM table no incluye la columna a.b.c en el resultado de Nested a.

analyzer_compatibility_allow_non_aggregate_in_having

Cuando está habilitada, el analizador imita el comportamiento legacy de mover de HAVING a WHERE las conjunciones no agregadas con AND, en lugar de generar NOT_AN_AGGREGATE. El rechazo conforme al estándar es el comportamiento predeterminado; esta opción sirve como ayuda para la migración de consultas que el analizador anterior (enable_analyzer = 0) aceptaba silenciosamente. Las conjunciones que contienen funciones de agregación, grouping o funciones no deterministas permanecen en HAVING. Si alguna conjunción contiene una función de ventana o una función con estado (por ejemplo, rowNumberInBlock), la reescritura se desactiva para todo el HAVING, en consonancia con el comportamiento legacy de PredicateExpressionsOptimizer. La configuración también se ignora cuando GROUP BY usa WITH CUBE, WITH ROLLUP, WITH TOTALS o GROUPING SETS.

analyzer_compatibility_apply_final_to_all_joined_tables

Restaura el comportamiento de las versiones anteriores a la 26.6, en las que el modificador FINAL especificado en la tabla más a la izquierda de un JOIN también se aplicaba incorrectamente a todas las demás tablas unidas (en motores compatibles con FINAL, como ReplacingMergeTree). De forma predeterminada, FINAL se aplica únicamente a la tabla en la que se especifica. Habilite esta opción para mantener la compatibilidad con consultas que dependan del comportamiento anterior; la corrección recomendada es escribir FINAL explícitamente en cada tabla que lo necesite. Valores posibles:
  • 0 - FINAL se aplica únicamente a la tabla en la que se especifica.
  • 1 - FINAL en la tabla más a la izquierda de un JOIN se aplica a todas las tablas unidas.

analyzer_compatibility_join_using_top_level_identifier

Obliga a resolver el identificador en JOIN USING a partir de la proyección (por ejemplo, en SELECT a + 1 AS b FROM t1 JOIN t2 USING (b), el JOIN se realizará mediante t1.a + 1 = t2.b, en lugar de t1.b = t2.b). También se tienen en cuenta los alias definidos en subexpresiones dentro de la lista SELECT (por ejemplo, en SELECT uniqExact(a + 1 AS b) FROM t1 JOIN t2 USING (b), el JOIN se realiza mediante t1.a + 1 = t2.b). Cuando el alias coincidente se define en una subexpresión dentro de la lista SELECT en lugar de como alias de nivel superior, las réplicas paralelas se deshabilitan para la consulta. En las consultas enviadas a servidores remotos (tablas Distributed, función de tabla remote), la consulta se rechaza con una excepción solo cuando el identificador no se puede resolver en absoluto en el servidor remoto; si el alias oculta una columna real de la tabla izquierda, el servidor remoto realiza el JOIN usando esa columna, por lo que los resultados pueden diferir de la ejecución local.

analyzer_compatibility_multiple_joins_qualify_column_names

Cuando está habilitada y la cláusula FROM de una consulta contiene dos o más JOIN (se cuentan las tablas separadas por comas; ARRAY JOIN no), el analizador asigna nombres a las columnas de resultado como lo hacía la reescritura para múltiples joins del analizador anterior:
  • las columnas generadas al expandir *, <table>.* o COLUMNS('<regexp>') reciben nombres con la forma <alias-or-table>.<column> (el calificador es el alias de la expresión de tabla, si lo tiene; de lo contrario, el nombre de la tabla sin la base de datos; de lo contrario, el nombre de la CTE; las columnas de una subconsulta unida sin alias se dejan sin calificar). Dos tipos de columnas conservan su nombre sin calificar porque pertenecen al join y no a una única expresión de tabla: una columna generada por ARRAY JOIN y una clave fusionada mediante JOIN ... USING. Por tanto, las referencias externas como SELECT ll.arr o SELECT ll.k no se resuelven en esos dos casos;
  • la forma de lista de identificadores COLUMNS(col1, col2) no es una expansión de patrones: cada columna conserva el nombre exactamente como se escribió su identificador, por lo que COLUMNS(x) produce x y COLUMNS(a.x) produce a.x;
  • una referencia de columna sin alias en la lista SELECT conserva su nombre exactamente como se escribió (por ejemplo, SELECT a.x produce una columna llamada a.x incluso cuando x es inequívoca).
Esto permite que funcionen las consultas externas que hacen referencia a dichas columnas mediante sus nombres cualificados, por ejemplo:
Solo surte efecto cuando el analizador está habilitado (enable_analyzer = 1).

analyzer_compatibility_prefer_alias_over_subcolumn

Cuando un identificador de varias partes como b.id podría referirse tanto a la columna id de una tabla con alias b como a una subcolumna b.id de tipo Tuple de alguna otra columna, se prefiere la interpretación con prefijo de alias (la columna id de b). De forma predeterminada, el analizador prefiere la subcolumna. Actívalo para que coincida con la resolución del analizador anterior.
Última modificación el 14 de agosto de 2026