From 40fc36bb6f7a04524368aa445e78d9742e24195a Mon Sep 17 00:00:00 2001 From: Maksim Kita Date: Mon, 20 Feb 2023 19:26:39 +0100 Subject: [PATCH] Fixed tests --- src/Analyzer/Passes/QueryAnalysisPass.cpp | 2 +- src/Planner/PlannerJoinTree.cpp | 3 +- .../00800_low_cardinality_join.sql | 3 +- .../00800_low_cardinality_merge_join.sql.j2 | 4 ++- .../00834_limit_with_constant_expressions.sql | 4 ++- .../01000_subquery_requires_alias.reference | 4 +-- .../01000_subquery_requires_alias.sql | 1 + .../01009_insert_select_data_loss.sql | 2 +- .../01010_pm_join_all_join_bug.sql | 4 ++- .../queries/0_stateless/01010_pmj_on_disk.sql | 12 +++---- .../01064_pm_all_join_const_and_nullable.sql | 32 +++++++++---------- .../0_stateless/01095_tpch_like_smoke.sql | 8 +++-- .../0_stateless/01120_join_constants.sql | 4 +-- .../01129_dict_get_join_lose_constness.sql | 4 +-- .../0_stateless/01223_dist_on_dist.sql | 4 +-- .../0_stateless/01232_untuple.reference | 2 +- tests/queries/0_stateless/01232_untuple.sql | 2 ++ .../0_stateless/01474_bad_global_join.sql | 4 ++- .../01671_merge_join_and_constants.reference | 10 +++--- .../01671_merge_join_and_constants.sql | 2 ++ .../01890_cross_join_explain_crash.reference | 1 + .../01890_cross_join_explain_crash.sql | 5 ++- ...obal_subqueries_subquery_or_table_name.sql | 4 ++- .../0_stateless/02116_tuple_element.sql | 6 ++-- .../02136_scalar_read_rows_json.reference | 2 +- .../02136_scalar_read_rows_json.sh | 2 +- .../02154_dictionary_get_http_json.reference | 8 ++--- .../02154_dictionary_get_http_json.sh | 1 + tests/queries/0_stateless/02163_operators.sql | 2 +- .../02234_clickhouse_local_test_mode.sh | 2 +- ..._column_matcher_and_column_transformer.sql | 4 ++- ...37_multiple_joins_original_names.reference | 1 + .../02337_multiple_joins_original_names.sql | 4 ++- ...497_if_transform_strings_to_enum.reference | 24 +++++++------- 34 files changed, 102 insertions(+), 75 deletions(-) diff --git a/src/Analyzer/Passes/QueryAnalysisPass.cpp b/src/Analyzer/Passes/QueryAnalysisPass.cpp index c97b167348b..0e47aec7c20 100644 --- a/src/Analyzer/Passes/QueryAnalysisPass.cpp +++ b/src/Analyzer/Passes/QueryAnalysisPass.cpp @@ -3647,7 +3647,7 @@ QueryAnalyzer::QueryTreeNodesWithNames QueryAnalyzer::resolveQualifiedMatcher(Qu if (!table_expression_node) { - throw Exception(ErrorCodes::UNSUPPORTED_METHOD, + throw Exception(ErrorCodes::UNKNOWN_IDENTIFIER, "Qualified matcher {} does not find table. In scope {}", matcher_node->formatASTForErrorMessage(), scope.scope_node->formatASTForErrorMessage()); diff --git a/src/Planner/PlannerJoinTree.cpp b/src/Planner/PlannerJoinTree.cpp index f2259ca7e33..02c396542b1 100644 --- a/src/Planner/PlannerJoinTree.cpp +++ b/src/Planner/PlannerJoinTree.cpp @@ -533,7 +533,8 @@ JoinTreeQueryPlan buildQueryPlanForJoinNode(const QueryTreeNodePtr & join_table_ for (auto & output_node : cast_actions_dag->getOutputs()) { - if (planner_context->getGlobalPlannerContext()->hasColumnIdentifier(output_node->result_name)) + if (planner_context->getGlobalPlannerContext()->hasColumnIdentifier(output_node->result_name) && + output_node->result_type->canBeInsideNullable()) output_node = &cast_actions_dag->addFunction(to_nullable_function, {output_node}, output_node->result_name); } diff --git a/tests/queries/0_stateless/00800_low_cardinality_join.sql b/tests/queries/0_stateless/00800_low_cardinality_join.sql index 30fb40a56e9..9c1fd9b7ad3 100644 --- a/tests/queries/0_stateless/00800_low_cardinality_join.sql +++ b/tests/queries/0_stateless/00800_low_cardinality_join.sql @@ -1,3 +1,4 @@ +set allow_experimental_analyzer = 1; set joined_subquery_requires_alias = 0; select * from (select dummy as val from system.one) any left join (select dummy as val from system.one) using val; @@ -10,7 +11,7 @@ select * from (select toLowCardinality(toNullable(dummy)) as val from system.one select * from (select toLowCardinality(dummy) as val from system.one) any left join (select toLowCardinality(toNullable(dummy)) as val from system.one) using val; select * from (select toLowCardinality(toNullable(dummy)) as val from system.one) any left join (select toLowCardinality(toNullable(dummy)) as val from system.one) using val; select '-'; -select * from (select dummy as val from system.one) any left join (select dummy as val from system.one) on val + 0 = val * 1; -- { serverError 352 } +select * from (select dummy as val from system.one) any left join (select dummy as val from system.one) on val + 0 = val * 1; -- { serverError 403 } select * from (select dummy as val from system.one) any left join (select dummy as rval from system.one) on val + 0 = rval * 1; select * from (select toLowCardinality(dummy) as val from system.one) any left join (select dummy as rval from system.one) on val + 0 = rval * 1; select * from (select dummy as val from system.one) any left join (select toLowCardinality(dummy) as rval from system.one) on val + 0 = rval * 1; diff --git a/tests/queries/0_stateless/00800_low_cardinality_merge_join.sql.j2 b/tests/queries/0_stateless/00800_low_cardinality_merge_join.sql.j2 index 8b7856b7738..8e2037480c7 100644 --- a/tests/queries/0_stateless/00800_low_cardinality_merge_join.sql.j2 +++ b/tests/queries/0_stateless/00800_low_cardinality_merge_join.sql.j2 @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + {% for join_algorithm in ['partial_merge', 'full_sorting_merge', 'grace_hash'] -%} SET join_algorithm = '{{ join_algorithm }}'; @@ -12,7 +14,7 @@ SELECT * FROM (SELECT toLowCardinality(toNullable(dummy)) AS val FROM system.one SELECT * FROM (SELECT toLowCardinality(dummy) AS val FROM system.one) s1 ANY LEFT JOIN (SELECT toLowCardinality(toNullable(dummy)) AS val FROM system.one) s2 USING val ORDER BY val; SELECT * FROM (SELECT toLowCardinality(toNullable(dummy)) AS val FROM system.one) s1 ANY LEFT JOIN (SELECT toLowCardinality(toNullable(dummy)) AS val FROM system.one) s2 USING val ORDER BY val; SELECT '-'; -SELECT * FROM (SELECT dummy AS val FROM system.one) s1 ANY LEFT JOIN (SELECT dummy AS val FROM system.one) s2 ON val + 0 = val * 1 ORDER BY val; -- { serverError 352 } +SELECT * FROM (SELECT dummy AS val FROM system.one) s1 ANY LEFT JOIN (SELECT dummy AS val FROM system.one) s2 ON val + 0 = val * 1 ORDER BY val; -- { serverError 403 } SELECT * FROM (SELECT dummy AS val FROM system.one) s1 ANY LEFT JOIN (SELECT dummy AS rval FROM system.one) s2 ON val + 0 = rval * 1 ORDER BY val; SELECT * FROM (SELECT toLowCardinality(dummy) AS val FROM system.one) s1 ANY LEFT JOIN (SELECT dummy AS rval FROM system.one) s2 ON val + 0 = rval * 1 ORDER BY val; SELECT * FROM (SELECT dummy AS val FROM system.one) s1 ANY LEFT JOIN (SELECT toLowCardinality(dummy) AS rval FROM system.one) s2 ON val + 0 = rval * 1 ORDER BY val; diff --git a/tests/queries/0_stateless/00834_limit_with_constant_expressions.sql b/tests/queries/0_stateless/00834_limit_with_constant_expressions.sql index 12104145237..1d3429436e7 100644 --- a/tests/queries/0_stateless/00834_limit_with_constant_expressions.sql +++ b/tests/queries/0_stateless/00834_limit_with_constant_expressions.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + SELECT number FROM numbers(10) LIMIT 0 + 1; SELECT number FROM numbers(10) LIMIT 1 - 1; SELECT number FROM numbers(10) LIMIT 2 - 1; @@ -9,7 +11,7 @@ SELECT number FROM numbers(10) LIMIT now(); -- { serverError 440 } SELECT number FROM numbers(10) LIMIT today(); -- { serverError 440 } SELECT number FROM numbers(10) LIMIT toUInt8('1'); SELECT number FROM numbers(10) LIMIT toFloat32('1'); -SELECT number FROM numbers(10) LIMIT rand(); -- { serverError 36 } +SELECT number FROM numbers(10) LIMIT rand(); -- { serverError 440 } SELECT count() <= 1 FROM (SELECT number FROM numbers(10) LIMIT randConstant() % 2); diff --git a/tests/queries/0_stateless/01000_subquery_requires_alias.reference b/tests/queries/0_stateless/01000_subquery_requires_alias.reference index 8018af28430..b6ceb2a2a72 100644 --- a/tests/queries/0_stateless/01000_subquery_requires_alias.reference +++ b/tests/queries/0_stateless/01000_subquery_requires_alias.reference @@ -1,2 +1,2 @@ -1 2 3 -1 2 3 +2 1 3 +2 1 3 diff --git a/tests/queries/0_stateless/01000_subquery_requires_alias.sql b/tests/queries/0_stateless/01000_subquery_requires_alias.sql index d14d4637be8..27320fab933 100644 --- a/tests/queries/0_stateless/01000_subquery_requires_alias.sql +++ b/tests/queries/0_stateless/01000_subquery_requires_alias.sql @@ -1,3 +1,4 @@ +SET allow_experimental_analyzer = 1; SET joined_subquery_requires_alias = 1; SELECT * FROM (SELECT 1 as A, 2 as B) X diff --git a/tests/queries/0_stateless/01009_insert_select_data_loss.sql b/tests/queries/0_stateless/01009_insert_select_data_loss.sql index a153d7dbc30..cbf87c4d0f1 100644 --- a/tests/queries/0_stateless/01009_insert_select_data_loss.sql +++ b/tests/queries/0_stateless/01009_insert_select_data_loss.sql @@ -1,7 +1,7 @@ drop table if exists tab; create table tab (x UInt64) engine = MergeTree order by tuple(); -insert into tab select number as n from numbers(20) nums +insert into tab select n from (SELECT number AS n FROM numbers(20)) nums semi left join (select number * 10 as n from numbers(2)) js2 using(n) settings max_block_size = 5; select * from tab order by x; diff --git a/tests/queries/0_stateless/01010_pm_join_all_join_bug.sql b/tests/queries/0_stateless/01010_pm_join_all_join_bug.sql index 18a67f41194..d192b9a8b64 100644 --- a/tests/queries/0_stateless/01010_pm_join_all_join_bug.sql +++ b/tests/queries/0_stateless/01010_pm_join_all_join_bug.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + DROP TABLE IF EXISTS ints; CREATE TABLE ints (i64 Int64, i32 Int32) ENGINE = Memory; @@ -10,6 +12,6 @@ SELECT '-'; SELECT * FROM ints l INNER JOIN ints r USING i64 ORDER BY l.i32, r.i32; SELECT '-'; -SELECT count() FROM ( SELECT [1], count(1) ) AS t1 ALL RIGHT JOIN ( SELECT number AS s FROM numbers(2) ) AS t2 USING (s); -- { serverError NOT_FOUND_COLUMN_IN_BLOCK } +SELECT count() FROM ( SELECT [1], count(1) ) AS t1 ALL RIGHT JOIN ( SELECT number AS s FROM numbers(2) ) AS t2 USING (s); -- { serverError UNKNOWN_IDENTIFIER } DROP TABLE ints; diff --git a/tests/queries/0_stateless/01010_pmj_on_disk.sql b/tests/queries/0_stateless/01010_pmj_on_disk.sql index d4fb9184896..4925f78f82f 100644 --- a/tests/queries/0_stateless/01010_pmj_on_disk.sql +++ b/tests/queries/0_stateless/01010_pmj_on_disk.sql @@ -1,6 +1,6 @@ SET join_algorithm = 'hash'; -SELECT number as n, j FROM numbers(4) nums +SELECT n, j FROM (SELECT number as n FROM numbers(4)) nums ANY LEFT JOIN ( SELECT number * 2 AS n, number + 10 AS j FROM numbers(4000) @@ -10,7 +10,7 @@ ORDER BY n; SET max_rows_in_join = 1000; -SELECT number as n, j FROM numbers(4) nums +SELECT n, j FROM (SELECT number AS n FROM numbers(4)) nums ANY LEFT JOIN ( SELECT number * 2 AS n, number + 10 AS j FROM numbers(4000) @@ -20,7 +20,7 @@ ORDER BY n; -- { serverError 191 } SET join_algorithm = 'partial_merge'; -SELECT number as n, j FROM numbers(4) nums +SELECT n, j FROM (SELECT number as n FROM numbers(4)) nums ANY LEFT JOIN ( SELECT number * 2 AS n, number + 10 AS j FROM numbers(4000) @@ -30,7 +30,7 @@ ORDER BY n; SET partial_merge_join_optimizations = 1; -SELECT number as n, j FROM numbers(4) nums +SELECT n, j FROM (SELECT number AS n FROM numbers(4)) nums ANY LEFT JOIN ( SELECT number * 2 AS n, number + 10 AS j FROM numbers(4000) @@ -40,7 +40,7 @@ ORDER BY n; SET join_algorithm = 'auto'; -SELECT number as n, j FROM numbers(4) nums +SELECT n, j FROM (SELECT number AS n FROM numbers(4)) nums ANY LEFT JOIN ( SELECT number * 2 AS n, number + 10 AS j FROM numbers(4000) @@ -50,7 +50,7 @@ ORDER BY n; SET max_rows_in_join = '10'; -SELECT number as n, j FROM numbers(4) nums +SELECT n, j FROM (SELECT number AS n FROM numbers(4)) nums ANY LEFT JOIN ( SELECT number * 2 AS n, number + 10 AS j FROM numbers(4000) diff --git a/tests/queries/0_stateless/01064_pm_all_join_const_and_nullable.sql b/tests/queries/0_stateless/01064_pm_all_join_const_and_nullable.sql index 10306777f25..bc5e1d68290 100644 --- a/tests/queries/0_stateless/01064_pm_all_join_const_and_nullable.sql +++ b/tests/queries/0_stateless/01064_pm_all_join_const_and_nullable.sql @@ -1,87 +1,87 @@ SET join_algorithm = 'partial_merge'; SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(1) AS k FROM numbers(1)) nums JOIN (SELECT materialize(1) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(1) as k FROM numbers(1)) nums JOIN (SELECT 1 AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT 1 as k FROM numbers(1) nums +SELECT k FROM (SELECT 1 AS k FROM numbers(1)) nums JOIN (SELECT materialize(1) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT 1 as k FROM numbers(1) nums +SELECT k FROM (SELECT 1 as k FROM numbers(1)) nums JOIN (SELECT 1 AS k, number n FROM numbers(100000)) j USING k); SELECT 'first nullable'; SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(toNullable(1)) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(toNullable(1)) AS k FROM numbers(1)) nums JOIN (SELECT materialize(1) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(toNullable(1)) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(toNullable(1)) as k FROM numbers(1)) nums JOIN (SELECT 1 AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT toNullable(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT toNullable(1) as k FROM numbers(1)) nums JOIN (SELECT materialize(1) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT toNullable(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT toNullable(1) as k FROM numbers(1)) nums JOIN (SELECT 1 AS k, number n FROM numbers(100000)) j USING k); SELECT 'second nullable'; SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(1) as k FROM numbers(1)) nums JOIN (SELECT materialize(toNullable(1)) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(1) as k FROM numbers(1)) nums JOIN (SELECT toNullable(1) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT 1 as k FROM numbers(1) nums +SELECT k FROM (SELECT 1 as k FROM numbers(1)) nums JOIN (SELECT materialize(toNullable(1)) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT 1 as k FROM numbers(1) nums +SELECT k FROM (SELECT 1 as k FROM numbers(1)) nums JOIN (SELECT toNullable(1) AS k, number n FROM numbers(100000)) j USING k); SELECT 'both nullable'; SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(toNullable(1)) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(toNullable(1)) as k FROM numbers(1)) nums JOIN (SELECT materialize(toNullable(1)) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT materialize(toNullable(1)) as k FROM numbers(1) nums +SELECT k FROM (SELECT materialize(toNullable(1)) as k FROM numbers(1)) nums JOIN (SELECT toNullable(1) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT toNullable(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT toNullable(1) as k FROM numbers(1)) nums JOIN (SELECT materialize(toNullable(1)) AS k, number n FROM numbers(100000)) j USING k); SELECT count(1), uniqExact(1) FROM ( -SELECT toNullable(1) as k FROM numbers(1) nums +SELECT k FROM (SELECT toNullable(1) as k FROM numbers(1)) nums JOIN (SELECT toNullable(1) AS k, number n FROM numbers(100000)) j USING k); diff --git a/tests/queries/0_stateless/01095_tpch_like_smoke.sql b/tests/queries/0_stateless/01095_tpch_like_smoke.sql index 1ac9ec229f0..7ab57766605 100644 --- a/tests/queries/0_stateless/01095_tpch_like_smoke.sql +++ b/tests/queries/0_stateless/01095_tpch_like_smoke.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + DROP TABLE IF EXISTS part; DROP TABLE IF EXISTS supplier; DROP TABLE IF EXISTS partsupp; @@ -180,7 +182,7 @@ order by n_name, s_name, p_partkey -limit 100; -- { serverError 47 } +limit 100; -- { serverError 1 } select 3; select @@ -598,7 +600,7 @@ where lineitem where l_partkey = p_partkey - ); -- { serverError 47 } + ); -- { serverError 1 } select 18; select @@ -709,7 +711,7 @@ where and s_nationkey = n_nationkey and n_name = 'CANADA' order by - s_name; -- { serverError 47 } + s_name; -- { serverError 1 } select 21, 'fail: exists, not exists'; -- TODO -- select diff --git a/tests/queries/0_stateless/01120_join_constants.sql b/tests/queries/0_stateless/01120_join_constants.sql index fdf297f5934..d8c8b5757f8 100644 --- a/tests/queries/0_stateless/01120_join_constants.sql +++ b/tests/queries/0_stateless/01120_join_constants.sql @@ -1,7 +1,7 @@ SELECT t1.*, t2.*, - 'world', + 'world' AS constant, isConstant('world') FROM ( @@ -19,7 +19,7 @@ LEFT JOIN SELECT t1.*, t2.*, - 123, + 123 AS constant, isConstant('world') FROM ( diff --git a/tests/queries/0_stateless/01129_dict_get_join_lose_constness.sql b/tests/queries/0_stateless/01129_dict_get_join_lose_constness.sql index 4f7197dc5ce..fd3e12f7a15 100644 --- a/tests/queries/0_stateless/01129_dict_get_join_lose_constness.sql +++ b/tests/queries/0_stateless/01129_dict_get_join_lose_constness.sql @@ -13,9 +13,9 @@ SOURCE(CLICKHOUSE(HOST 'localhost' PORT tcpPort() USER 'default' PASSWORD '' TAB LIFETIME(0) LAYOUT(hashed()); -SELECT dictGetInt32('system.dict1', 'element_count', toUInt64(dict_key)) AS join_key, +SELECT join_key, toTimeZone(dictGetDateTime('system.dict1', 'loading_start_time', toUInt64(dict_key)), 'UTC') AS datetime -FROM (select 1 AS dict_key) js1 +FROM (select dictGetInt32('system.dict1', 'element_count', toUInt64(dict_key)) AS join_key, 1 AS dict_key) js1 LEFT JOIN (SELECT toInt32(2) AS join_key) js2 USING (join_key) WHERE now() >= datetime; diff --git a/tests/queries/0_stateless/01223_dist_on_dist.sql b/tests/queries/0_stateless/01223_dist_on_dist.sql index 65a240fd48b..4cd8ffd7a03 100644 --- a/tests/queries/0_stateless/01223_dist_on_dist.sql +++ b/tests/queries/0_stateless/01223_dist_on_dist.sql @@ -33,9 +33,9 @@ select 'cluster() GROUP BY ORDER BY'; select * from cluster(test_cluster_two_shards, currentDatabase(), dist_01223) group by key order by key; select 'LEFT JOIN'; -select toInt32(number) key, b.key from numbers(2) a left join (select distinct * from dist_01223) b using key order by b.key; +select a.key, b.key from (SELECT toInt32(number) key from numbers(2)) a left join (select distinct * from dist_01223) b using key order by b.key; select 'RIGHT JOIN'; -select toInt32(number) key, b.key from numbers(2) a right join (select distinct * from dist_01223) b using key order by b.key; +select a.key, b.key from (SELECT toInt32(number) key from numbers(2)) a right join (select distinct * from dist_01223) b using key order by b.key; -- more data for GROUP BY insert into data_01223 select number%3 from numbers(30); diff --git a/tests/queries/0_stateless/01232_untuple.reference b/tests/queries/0_stateless/01232_untuple.reference index 8e1f97d2585..7bb80bf618f 100644 --- a/tests/queries/0_stateless/01232_untuple.reference +++ b/tests/queries/0_stateless/01232_untuple.reference @@ -2,7 +2,7 @@ hello 1 3 world 9 9 (0,1) -key tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), 1) tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), 2) tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), 3) tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), 4) tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), 5) +key tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), \'1\') tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), \'2\') tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), \'3\') tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), \'4\') tupleElement(argMax(tuple(v1, v2, v3, v4, v5), v1), \'5\') 1 20 20 10 20 30 2 11 20 10 20 30 3 70 20 10 20 30 diff --git a/tests/queries/0_stateless/01232_untuple.sql b/tests/queries/0_stateless/01232_untuple.sql index 92150e92b29..ccefd13a772 100644 --- a/tests/queries/0_stateless/01232_untuple.sql +++ b/tests/queries/0_stateless/01232_untuple.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + select untuple((* except (b),)) from (select 1 a, 2 b, 3 c); select 'hello', untuple((* except (b),)), 'world' from (select 1 a, 2 b, 3 c); select argMax(untuple(x)) from (select (number, number + 1) as x from numbers(10)); diff --git a/tests/queries/0_stateless/01474_bad_global_join.sql b/tests/queries/0_stateless/01474_bad_global_join.sql index b65b4e804a8..2251c1797cf 100644 --- a/tests/queries/0_stateless/01474_bad_global_join.sql +++ b/tests/queries/0_stateless/01474_bad_global_join.sql @@ -1,5 +1,7 @@ -- Tags: global +SET allow_experimental_analyzer = 1; + DROP TABLE IF EXISTS local_table; DROP TABLE IF EXISTS dist_table; @@ -10,7 +12,7 @@ INSERT INTO local_table SELECT number AS id, toString(number) AS val FROM number CREATE TABLE dist_table AS local_table ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), local_table); -SELECT uniq(d.val) FROM dist_table AS d GLOBAL LEFT JOIN numbers(100) AS t USING id; -- { serverError 284 } +SELECT uniq(d.val) FROM dist_table AS d GLOBAL LEFT JOIN numbers(100) AS t USING id; -- { serverError 47 } SELECT uniq(d.val) FROM dist_table AS d GLOBAL LEFT JOIN local_table AS t USING id; DROP TABLE local_table; diff --git a/tests/queries/0_stateless/01671_merge_join_and_constants.reference b/tests/queries/0_stateless/01671_merge_join_and_constants.reference index efd814df893..f82033ab3c7 100644 --- a/tests/queries/0_stateless/01671_merge_join_and_constants.reference +++ b/tests/queries/0_stateless/01671_merge_join_and_constants.reference @@ -1,6 +1,6 @@ -┌─a─┬──────────b─┬─c─┬──────────d─┬─t2.'0.10'─┐ -│ a │ 2018-01-01 │ │ 1970-01-01 │ │ -│ b │ 2018-01-01 │ B │ 2018-01-01 │ 0.10 │ -│ c │ 2018-01-01 │ C │ 2018-01-01 │ 0.10 │ -└───┴────────────┴───┴────────────┴───────────┘ +┌─a─┬──────────b─┬─c─┬──────────d─┬─'0.10'─┬─c─┐ +│ a │ 2018-01-01 │ │ 1970-01-01 │ │ │ +│ b │ 2018-01-01 │ B │ 2018-01-01 │ 0.10 │ B │ +│ c │ 2018-01-01 │ C │ 2018-01-01 │ 0.10 │ C │ +└───┴────────────┴───┴────────────┴────────┴───┘ \N \N \N \N 0 0 diff --git a/tests/queries/0_stateless/01671_merge_join_and_constants.sql b/tests/queries/0_stateless/01671_merge_join_and_constants.sql index e9a60f11875..5cabd6f7f06 100644 --- a/tests/queries/0_stateless/01671_merge_join_and_constants.sql +++ b/tests/queries/0_stateless/01671_merge_join_and_constants.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + DROP TABLE IF EXISTS table1; DROP TABLE IF EXISTS table2; diff --git a/tests/queries/0_stateless/01890_cross_join_explain_crash.reference b/tests/queries/0_stateless/01890_cross_join_explain_crash.reference index 76315843adb..c08ba9c71b3 100644 --- a/tests/queries/0_stateless/01890_cross_join_explain_crash.reference +++ b/tests/queries/0_stateless/01890_cross_join_explain_crash.reference @@ -1,3 +1,4 @@ +1 1 1 2 1 1 1 2 1 1 1 2 diff --git a/tests/queries/0_stateless/01890_cross_join_explain_crash.sql b/tests/queries/0_stateless/01890_cross_join_explain_crash.sql index 20a1956ea6b..bb2bc606870 100644 --- a/tests/queries/0_stateless/01890_cross_join_explain_crash.sql +++ b/tests/queries/0_stateless/01890_cross_join_explain_crash.sql @@ -1,8 +1,7 @@ +SET allow_experimental_analyzer = 1; SET joined_subquery_requires_alias = 0; -select * FROM (SELECT 1), (SELECT 1), (SELECT 1); -- { serverError 352 } --- This queries work by luck. --- Feel free to remove then if it is the only failed test. +select * FROM (SELECT 1), (SELECT 1), (SELECT 1); select * from (select 2), (select 1) as a, (select 1) as b; select * from (select 1) as a, (select 2), (select 1) as b; select * from (select 1) as a, (select 1) as b, (select 2); diff --git a/tests/queries/0_stateless/02002_global_subqueries_subquery_or_table_name.sql b/tests/queries/0_stateless/02002_global_subqueries_subquery_or_table_name.sql index 7d9c08c7cb6..75eff67970e 100644 --- a/tests/queries/0_stateless/02002_global_subqueries_subquery_or_table_name.sql +++ b/tests/queries/0_stateless/02002_global_subqueries_subquery_or_table_name.sql @@ -1,7 +1,9 @@ -- Tags: global +SET allow_experimental_analyzer = 1; + SELECT cityHash64(number GLOBAL IN (NULL, -2147483648, -9223372036854775808), nan, 1024, NULL, NULL, 1.000100016593933, NULL), (NULL, cityHash64(inf, -2147483648, NULL, NULL, 10.000100135803223), cityHash64(1.1754943508222875e-38, NULL, NULL, NULL), 2147483647) FROM cluster(test_cluster_two_shards_localhost, numbers((NULL, cityHash64(0., 65536, NULL, NULL, 10000000000., NULL), 0) GLOBAL IN (some_identifier), 65536)) -WHERE number GLOBAL IN [1025] --{serverError 284} +WHERE number GLOBAL IN [1025] --{serverError 36} diff --git a/tests/queries/0_stateless/02116_tuple_element.sql b/tests/queries/0_stateless/02116_tuple_element.sql index 4ce6e5cf136..b43c9133e6b 100644 --- a/tests/queries/0_stateless/02116_tuple_element.sql +++ b/tests/queries/0_stateless/02116_tuple_element.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + DROP TABLE IF EXISTS t_tuple_element; CREATE TABLE t_tuple_element(t1 Tuple(a UInt32, s String), t2 Tuple(UInt32, String)) ENGINE = Memory; @@ -16,7 +18,7 @@ EXPLAIN SYNTAX SELECT tupleElement(t1, 'a') FROM t_tuple_element; SELECT tupleElement(number, 1) FROM numbers(1); -- { serverError 43 } SELECT tupleElement(t1) FROM t_tuple_element; -- { serverError 42 } -SELECT tupleElement(t1, 'b') FROM t_tuple_element; -- { serverError 47 } +SELECT tupleElement(t1, 'b') FROM t_tuple_element; -- { serverError 10 } SELECT tupleElement(t1, 0) FROM t_tuple_element; -- { serverError 127 } SELECT tupleElement(t1, 3) FROM t_tuple_element; -- { serverError 127 } SELECT tupleElement(t1, materialize('a')) FROM t_tuple_element; -- { serverError 43 } @@ -28,7 +30,7 @@ SELECT tupleElement(t2, 1) FROM t_tuple_element; EXPLAIN SYNTAX SELECT tupleElement(t2, 1) FROM t_tuple_element; SELECT tupleElement(t2) FROM t_tuple_element; -- { serverError 42 } -SELECT tupleElement(t2, 'a') FROM t_tuple_element; -- { serverError 47 } +SELECT tupleElement(t2, 'a') FROM t_tuple_element; -- { serverError 10 } SELECT tupleElement(t2, 0) FROM t_tuple_element; -- { serverError 127 } SELECT tupleElement(t2, 3) FROM t_tuple_element; -- { serverError 127 } SELECT tupleElement(t2, materialize(1)) FROM t_tuple_element; -- { serverError 43 } diff --git a/tests/queries/0_stateless/02136_scalar_read_rows_json.reference b/tests/queries/0_stateless/02136_scalar_read_rows_json.reference index 49020a4432f..f8335125233 100644 --- a/tests/queries/0_stateless/02136_scalar_read_rows_json.reference +++ b/tests/queries/0_stateless/02136_scalar_read_rows_json.reference @@ -30,7 +30,7 @@ "meta": [ { - "type": "Tuple(UInt64, UInt64)" + "type": "Tuple(`max(number)` UInt64, `count(number)` UInt64)" } ], diff --git a/tests/queries/0_stateless/02136_scalar_read_rows_json.sh b/tests/queries/0_stateless/02136_scalar_read_rows_json.sh index 34b4b6909b5..1fe345d266d 100755 --- a/tests/queries/0_stateless/02136_scalar_read_rows_json.sh +++ b/tests/queries/0_stateless/02136_scalar_read_rows_json.sh @@ -7,4 +7,4 @@ CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) echo "#1" ${CLICKHOUSE_CLIENT} --query='SELECT count() FROM numbers(100) FORMAT JSON;' | grep -a -v "elapsed" echo "#2" -${CLICKHOUSE_CLIENT} --query='SELECT (SELECT max(number), count(number) FROM numbers(100000) as n) SETTINGS max_block_size = 65505 FORMAT JSON;' | grep -a -v "elapsed" | grep -v "_subquery" +${CLICKHOUSE_CLIENT} --query='SELECT (SELECT max(number), count(number) FROM numbers(100000) as n) SETTINGS max_block_size = 65505, allow_experimental_analyzer = 1 FORMAT JSON;' | grep -a -v "elapsed" | grep -v "_subquery" diff --git a/tests/queries/0_stateless/02154_dictionary_get_http_json.reference b/tests/queries/0_stateless/02154_dictionary_get_http_json.reference index 7106f551cd7..201d3b122e8 100644 --- a/tests/queries/0_stateless/02154_dictionary_get_http_json.reference +++ b/tests/queries/0_stateless/02154_dictionary_get_http_json.reference @@ -3,11 +3,11 @@ "meta": [ { - "name": "dictGet(02154_test_dictionary, 'value', toUInt64(0))", + "name": "dictGet('02154_test_dictionary', 'value', toUInt64(0))", "type": "String" }, { - "name": "dictGet(02154_test_dictionary, 'value', toUInt64(1))", + "name": "dictGet('02154_test_dictionary', 'value', toUInt64(1))", "type": "String" } ], @@ -15,8 +15,8 @@ "data": [ { - "dictGet(02154_test_dictionary, 'value', toUInt64(0))": "Value", - "dictGet(02154_test_dictionary, 'value', toUInt64(1))": "" + "dictGet('02154_test_dictionary', 'value', toUInt64(0))": "Value", + "dictGet('02154_test_dictionary', 'value', toUInt64(1))": "" } ], diff --git a/tests/queries/0_stateless/02154_dictionary_get_http_json.sh b/tests/queries/0_stateless/02154_dictionary_get_http_json.sh index a2bce866c76..fbaf67fff2f 100755 --- a/tests/queries/0_stateless/02154_dictionary_get_http_json.sh +++ b/tests/queries/0_stateless/02154_dictionary_get_http_json.sh @@ -32,6 +32,7 @@ $CLICKHOUSE_CLIENT -q """ echo """ SELECT dictGet(02154_test_dictionary, 'value', toUInt64(0)), dictGet(02154_test_dictionary, 'value', toUInt64(1)) + SETTINGS allow_experimental_analyzer = 1 FORMAT JSON """ | ${CLICKHOUSE_CURL} -sSg "${CLICKHOUSE_URL}&wait_end_of_query=1&output_format_write_statistics=0" -d @- diff --git a/tests/queries/0_stateless/02163_operators.sql b/tests/queries/0_stateless/02163_operators.sql index 4968e448ab2..b2414bb197e 100644 --- a/tests/queries/0_stateless/02163_operators.sql +++ b/tests/queries/0_stateless/02163_operators.sql @@ -1,2 +1,2 @@ WITH 2 AS `b.c`, [4, 5] AS a, 6 AS u, 3 AS v, 2 AS d, TRUE AS e, 1 AS f, 0 AS g, 2 AS h, 'Hello' AS i, 'World' AS j, TIMESTAMP '2022-02-02 02:02:02' AS w, [] AS k, (1, 2) AS l, 2 AS m, 3 AS n, [] AS o, [1] AS p, 1 AS q, q AS r, 1 AS s, 1 AS t -SELECT INTERVAL CASE CASE WHEN NOT -a[b.c] * u DIV v + d IS NOT NULL AND e OR f BETWEEN g AND h THEN i ELSE j END WHEN w THEN k END || [l, (m, n)] MINUTE IS NULL OR NOT o::Array(INT) = p <> q < r > s != t AS upyachka; +SELECT INTERVAL CASE CASE WHEN NOT -a[`b.c`] * u DIV v + d IS NOT NULL AND e OR f BETWEEN g AND h THEN i ELSE j END WHEN w THEN k END || [l, (m, n)] MINUTE IS NULL OR NOT o::Array(INT) = p <> q < r > s != t AS upyachka; diff --git a/tests/queries/0_stateless/02234_clickhouse_local_test_mode.sh b/tests/queries/0_stateless/02234_clickhouse_local_test_mode.sh index f736751726d..16200399099 100755 --- a/tests/queries/0_stateless/02234_clickhouse_local_test_mode.sh +++ b/tests/queries/0_stateless/02234_clickhouse_local_test_mode.sh @@ -5,5 +5,5 @@ CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) . "$CURDIR"/../shell_config.sh -$CLICKHOUSE_LOCAL --query="SELECT n" 2>&1 | grep -q "Code: 47. DB::Exception: Missing columns:" && echo 'OK' || echo 'FAIL' ||: +$CLICKHOUSE_LOCAL --query="SELECT n SETTINGS allow_experimental_analyzer = 1" 2>&1 | grep -q "Code: 47. DB::Exception:" && echo 'OK' || echo 'FAIL' ||: $CLICKHOUSE_LOCAL --query="SELECT n -- { serverError 47 }" diff --git a/tests/queries/0_stateless/02271_fix_column_matcher_and_column_transformer.sql b/tests/queries/0_stateless/02271_fix_column_matcher_and_column_transformer.sql index f0c0e2bae46..245b2cc97e3 100644 --- a/tests/queries/0_stateless/02271_fix_column_matcher_and_column_transformer.sql +++ b/tests/queries/0_stateless/02271_fix_column_matcher_and_column_transformer.sql @@ -1,3 +1,5 @@ +SET allow_experimental_analyzer = 1; + DROP TABLE IF EXISTS github_events; CREATE TABLE github_events @@ -59,6 +61,6 @@ CREATE TABLE github_events ) ENGINE = MergeTree ORDER BY (event_type, repo_name, created_at); -with top_repos as ( select repo_name from github_events where event_type = 'WatchEvent' and toDate(created_at) = today() - 1 group by repo_name order by count() desc limit 100 union distinct select repo_name from github_events where event_type = 'WatchEvent' and toMonday(created_at) = toMonday(today() - interval 1 week) group by repo_name order by count() desc limit 100 union distinct select repo_name from github_events where event_type = 'WatchEvent' and toStartOfMonth(created_at) = toStartOfMonth(today()) - interval 1 month group by repo_name order by count() desc limit 100 union distinct select repo_name from github_events where event_type = 'WatchEvent' and toYear(created_at) = toYear(today()) - 1 group by repo_name order by count() desc limit 100 ), last_day as ( select repo_name, count() as count_last_day, rowNumberInAllBlocks() + 1 as position_last_day from github_events where repo_name in (select repo_name from top_repos) and toDate(created_at) = today() - 1 group by repo_name order by count_last_day desc ), last_week as ( select repo_name, count() as count_last_week, rowNumberInAllBlocks() + 1 as position_last_week from github_events where repo_name in (select repo_name from top_repos) and toMonday(created_at) = toMonday(today()) - interval 1 week group by repo_name order by count_last_week desc ), last_month as ( select repo_name, count() as count_last_month, rowNumberInAllBlocks() + 1 as position_last_month from github_events where repo_name in (select repo_name from top_repos) and toStartOfMonth(created_at) = toStartOfMonth(today()) - interval 1 month group by repo_name order by count_last_month desc ) select d.repo_name, columns(count) from last_day d join last_week w on d.repo_name = w.repo_name join last_month m on d.repo_name = m.repo_name FORMAT TabSeparatedWithNamesAndTypes; -- { serverError 47 } +with top_repos as ( select repo_name from github_events where event_type = 'WatchEvent' and toDate(created_at) = today() - 1 group by repo_name order by count() desc limit 100 union distinct select repo_name from github_events where event_type = 'WatchEvent' and toMonday(created_at) = toMonday(today() - interval 1 week) group by repo_name order by count() desc limit 100 union distinct select repo_name from github_events where event_type = 'WatchEvent' and toStartOfMonth(created_at) = toStartOfMonth(today()) - interval 1 month group by repo_name order by count() desc limit 100 union distinct select repo_name from github_events where event_type = 'WatchEvent' and toYear(created_at) = toYear(today()) - 1 group by repo_name order by count() desc limit 100 ), last_day as ( select repo_name, count() as count_last_day, rowNumberInAllBlocks() + 1 as position_last_day from github_events where repo_name in (select repo_name from top_repos) and toDate(created_at) = today() - 1 group by repo_name order by count_last_day desc ), last_week as ( select repo_name, count() as count_last_week, rowNumberInAllBlocks() + 1 as position_last_week from github_events where repo_name in (select repo_name from top_repos) and toMonday(created_at) = toMonday(today()) - interval 1 week group by repo_name order by count_last_week desc ), last_month as ( select repo_name, count() as count_last_month, rowNumberInAllBlocks() + 1 as position_last_month from github_events where repo_name in (select repo_name from top_repos) and toStartOfMonth(created_at) = toStartOfMonth(today()) - interval 1 month group by repo_name order by count_last_month desc ) select d.repo_name, columns(count) from last_day d join last_week w on d.repo_name = w.repo_name join last_month m on d.repo_name = m.repo_name; DROP TABLE github_events; diff --git a/tests/queries/0_stateless/02337_multiple_joins_original_names.reference b/tests/queries/0_stateless/02337_multiple_joins_original_names.reference index 6ed281c757a..e8183f05f5d 100644 --- a/tests/queries/0_stateless/02337_multiple_joins_original_names.reference +++ b/tests/queries/0_stateless/02337_multiple_joins_original_names.reference @@ -1,2 +1,3 @@ 1 1 +1 diff --git a/tests/queries/0_stateless/02337_multiple_joins_original_names.sql b/tests/queries/0_stateless/02337_multiple_joins_original_names.sql index afafee9f8eb..63bbfe6873d 100644 --- a/tests/queries/0_stateless/02337_multiple_joins_original_names.sql +++ b/tests/queries/0_stateless/02337_multiple_joins_original_names.sql @@ -1,11 +1,13 @@ -- https://github.com/ClickHouse/ClickHouse/issues/34697 +SET allow_experimental_analyzer = 1; + SELECT table1_id FROM ( SELECT first.table1_id FROM (SELECT number+1 as table1_id FROM numbers(1)) as first JOIN (SELECT number+1 as table2_id FROM numbers(1)) as second ON first.table1_id = second.table2_id JOIN (SELECT number+1 as table3_id FROM numbers(1)) as third ON first.table1_id = third.table3_id -); -- { serverError UNKNOWN_IDENTIFIER } +); SELECT table1_id FROM ( SELECT first.table1_id diff --git a/tests/queries/0_stateless/02497_if_transform_strings_to_enum.reference b/tests/queries/0_stateless/02497_if_transform_strings_to_enum.reference index c6265e195c4..f5284f38b86 100644 --- a/tests/queries/0_stateless/02497_if_transform_strings_to_enum.reference +++ b/tests/queries/0_stateless/02497_if_transform_strings_to_enum.reference @@ -37,7 +37,7 @@ QUERY id: 0 JOIN TREE TABLE id: 7, table_name: system.numbers LIMIT - CONSTANT id: 17, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 17, constant_value: UInt64_10, constant_value_type: UInt64 google google google @@ -80,7 +80,7 @@ QUERY id: 0 JOIN TREE TABLE id: 9, table_name: system.numbers LIMIT - CONSTANT id: 19, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 19, constant_value: UInt64_10, constant_value_type: UInt64 other1 other1 google1 @@ -124,7 +124,7 @@ QUERY id: 0 JOIN TREE TABLE id: 9, table_name: system.numbers LIMIT - CONSTANT id: 20, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 20, constant_value: UInt64_10, constant_value_type: UInt64 google1 google1 google1 @@ -171,7 +171,7 @@ QUERY id: 0 JOIN TREE TABLE id: 11, table_name: system.numbers LIMIT - CONSTANT id: 22, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 22, constant_value: UInt64_10, constant_value_type: UInt64 google google google @@ -225,7 +225,7 @@ QUERY id: 0 JOIN TREE TABLE id: 12, table_name: system.numbers LIMIT - CONSTANT id: 22, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 22, constant_value: UInt64_10, constant_value_type: UInt64 other other google @@ -276,7 +276,7 @@ QUERY id: 0 JOIN TREE TABLE id: 10, table_name: system.numbers LIMIT - CONSTANT id: 20, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 20, constant_value: UInt64_10, constant_value_type: UInt64 google google google google google google @@ -343,7 +343,7 @@ QUERY id: 0 JOIN TREE TABLE id: 9, table_name: system.numbers LIMIT - CONSTANT id: 19, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 19, constant_value: UInt64_10, constant_value_type: UInt64 other other other other google google @@ -404,7 +404,7 @@ QUERY id: 0 JOIN TREE TABLE id: 7, table_name: system.numbers LIMIT - CONSTANT id: 17, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 17, constant_value: UInt64_10, constant_value_type: UInt64 \N \N \N @@ -444,7 +444,7 @@ QUERY id: 0 JOIN TREE TABLE id: 11, table_name: system.numbers LIMIT - CONSTANT id: 12, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 12, constant_value: UInt64_10, constant_value_type: UInt64 \N \N \N @@ -473,7 +473,7 @@ QUERY id: 0 JOIN TREE TABLE id: 5, table_name: system.numbers LIMIT - CONSTANT id: 9, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 9, constant_value: UInt64_10, constant_value_type: UInt64 other other google @@ -502,7 +502,7 @@ QUERY id: 0 JOIN TREE TABLE id: 5, table_name: system.numbers LIMIT - CONSTANT id: 9, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 9, constant_value: UInt64_10, constant_value_type: UInt64 google google google @@ -534,4 +534,4 @@ QUERY id: 0 JOIN TREE TABLE id: 7, table_name: system.numbers LIMIT - CONSTANT id: 11, constant_value: UInt64_10, constant_value_type: UInt8 + CONSTANT id: 11, constant_value: UInt64_10, constant_value_type: UInt64