analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested
SELECT a.b.c FROM table ARRAY JOIN a 将无法工作,而 SELECT a FROM table 的 Nested a 结果中也不会包含 a.b.c 列。
analyzer_compatibility_allow_non_aggregate_in_having
HAVING 移到 WHERE,而不是抛出 NOT_AN_AGGREGATE。默认行为是按标准进行拒绝;此设置可作为迁移辅助,用于处理那些曾被旧版 analyzer (enable_analyzer = 0) 静默接受的查询。包含聚合、grouping 或非确定性函数的合取项会保留在 HAVING 中。如果任一合取项包含窗口函数或有状态函数 (例如 rowNumberInBlock) ,则整个 HAVING 的此类重写都会被禁用,这与旧版 PredicateExpressionsOptimizer 的行为一致。当 GROUP BY 使用 WITH CUBE、WITH ROLLUP、WITH TOTALS 或 GROUPING SETS 时,该设置同样会被忽略。
analyzer_compatibility_join_using_top_level_identifier
SELECT a + 1 AS b FROM t1 JOIN t2 USING (b) 中,JOIN 将根据 t1.a + 1 = t2.b 执行,而不是 t1.b = t2.b) 。
analyzer_compatibility_prefer_alias_over_subcolumn
b.id 这样的多部分标识符既可能表示别名为 b 的表中的列 id,也可能表示另一列的 Tuple 子列 b.id 时,优先按别名前缀来解析 (即 b 的列 id) 。默认情况下,analyzer 会优先解析为子列。启用此设置可与旧版 analyzer 的解析方式保持一致。