Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analyzer Planner enable by default #45461

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/Core/Settings.h
Expand Up @@ -349,7 +349,8 @@ class IColumn;
M(Float, opentelemetry_start_trace_probability, 0., "Probability to start an OpenTelemetry trace for an incoming query.", 0) \
M(Bool, opentelemetry_trace_processors, false, "Collect OpenTelemetry spans for processors.", 0) \
M(Bool, prefer_column_name_to_alias, false, "Prefer using column names instead of aliases if possible.", 0) \
M(Bool, allow_experimental_analyzer, false, "Allow experimental analyzer", 0) \
M(Bool, prefer_table_to_column_name, false, "Prefer using table names instead of column names.", IMPORTANT) \
M(Bool, allow_experimental_analyzer, true, "Allow experimental analyzer", 0) \
M(Bool, prefer_global_in_and_join, false, "If enabled, all IN/JOIN operators will be rewritten as GLOBAL IN/JOIN. It's useful when the to-be-joined tables are only available on the initiator and we need to always scatter their data on-the-fly during distributed processing with the GLOBAL keyword. It's also useful to reduce the need to access the external sources joining external tables.", 0) \
\
\
Expand Down
3 changes: 1 addition & 2 deletions src/Planner/Planner.cpp
Expand Up @@ -1077,8 +1077,7 @@ void addBuildSubqueriesForSetsStepIfNeeded(
void addAdditionalFilterStepIfNeeded(QueryPlan & query_plan,
const QueryNode & query_node,
const SelectQueryOptions & select_query_options,
PlannerContextPtr & planner_context
)
PlannerContextPtr & planner_context)
{
if (select_query_options.subquery_depth != 0)
return;
Expand Down
1 change: 1 addition & 0 deletions tests/performance/array_fill.xml
@@ -1,4 +1,5 @@
<test>

<query>SELECT arraySlice(arrayFill(x -> ((x % 2) >= 0), range(100000000)), 1, 10) FORMAT Null</query>
<query>SELECT arraySlice(arrayFill(x -> (((x.1) % 2) >= 0), arrayMap(x -> (x, toString(x)), range(10000000))), 1, 10) FORMAT Null</query>
<query>SELECT arraySlice(arrayFill(x -> ((x % 2) >= 2), range(100000000)), 1, 10) FORMAT Null</query>
Expand Down
1 change: 1 addition & 0 deletions tests/performance/array_reduce.xml
Expand Up @@ -2,6 +2,7 @@




<query>SELECT arrayReduce('count', range(100000000))</query>
<query>SELECT arrayReduce('sum', range(100000000))</query>
<query>SELECT arrayReduceInRanges('count', [(1, 100000000)], range(100000000))</query>
Expand Down
1 change: 1 addition & 0 deletions tests/performance/norm_distance.xml
@@ -1,5 +1,6 @@
<test>


<substitutions>
<substitution>
<name>element_type</name>
Expand Down
1 change: 1 addition & 0 deletions tests/performance/norm_distance_float.xml
@@ -1,5 +1,6 @@
<test>


<substitutions>
<substitution>
<name>element_type</name>
Expand Down
1 change: 1 addition & 0 deletions tests/performance/quantile_merge.xml
@@ -1,3 +1,4 @@
<test>

<query>SELECT quantileMerge(arrayJoin(arrayMap(x -> state, range(5000000)))) FROM (SELECT quantileState(rand()) AS state FROM numbers(10000))</query>
</test>
1 change: 1 addition & 0 deletions tests/performance/scalar2.xml
@@ -1,4 +1,5 @@
<test>

<settings>
<allow_deprecated_syntax_for_merge_tree>1</allow_deprecated_syntax_for_merge_tree>
</settings>
Expand Down
4 changes: 0 additions & 4 deletions tests/queries/0_stateless/00725_join_on_bug_1.reference
@@ -1,7 +1,3 @@
1 1 1 2
1 2 1 2
2 3 0 0
-
1 1 1 2
1 2 1 2
2 3 0 0
6 changes: 4 additions & 2 deletions tests/queries/0_stateless/00725_join_on_bug_1.sql
@@ -1,3 +1,5 @@
SET allow_experimental_analyzer = 1;

DROP TABLE IF EXISTS a1;
DROP TABLE IF EXISTS a2;

Expand All @@ -7,8 +9,8 @@ CREATE TABLE a2(a UInt8, b UInt8) ENGINE=Memory;
INSERT INTO a1 VALUES (1, 1), (1, 2), (2, 3);
INSERT INTO a2 VALUES (1, 2), (1, 3), (1, 4);

SELECT * FROM a1 as a left JOIN a2 as b on a.a=b.a ORDER BY b SETTINGS join_default_strictness='ANY';
SELECT '-';
SELECT * FROM a1 as a left JOIN a2 as b on a.a=b.a ORDER BY b SETTINGS join_default_strictness='ANY'; -- { serverError 47 }

SELECT a1.*, a2.* FROM a1 ANY LEFT JOIN a2 USING a ORDER BY b;

DROP TABLE IF EXISTS a1;
Expand Down
31 changes: 18 additions & 13 deletions tests/queries/0_stateless/00917_multiple_joins_denny_crane.sql
@@ -1,22 +1,27 @@
SET allow_experimental_analyzer = 1;
SET joined_subquery_requires_alias = 0;
SET prefer_column_name_to_alias = 1;

DROP TABLE IF EXISTS ANIMAL;

CREATE TABLE ANIMAL ( ANIMAL Nullable(String) ) engine = TinyLog;
INSERT INTO ANIMAL (ANIMAL) VALUES ('CAT'), ('FISH'), ('DOG'), ('HORSE'), ('BIRD');

select * from (
select x.b x, count(distinct x.c) ANIMAL
from (
select a.ANIMAL a, 'CAT' b, c.ANIMAL c, d.ANIMAL d
from ANIMAL a join ANIMAL b on a.ANIMAL = b.ANIMAL
left outer join ANIMAL c on (b.ANIMAL = c.ANIMAL)
right outer join (select * from ANIMAL union all select * from ANIMAL
union all select * from ANIMAL) d on (a.ANIMAL = d.ANIMAL)
where d.ANIMAL <> 'CAT' and c.ANIMAL <>'DOG' and b.ANIMAL <> 'FISH') as x
where x.b >= 'CAT'
group by x.b
having ANIMAL >= 0) ANIMAL
where ANIMAL.ANIMAL >= 0;
select * from
(
select x.b x, count(distinct x.c) ANIMAL from
(
select a.ANIMAL a, 'CAT' b, c.ANIMAL c, d.ANIMAL d
from ANIMAL a join ANIMAL b on a.ANIMAL = b.ANIMAL
left outer join ANIMAL c on (b.ANIMAL = c.ANIMAL)
right outer join (select * from ANIMAL union all select * from ANIMAL
union all select * from ANIMAL) d on (a.ANIMAL = d.ANIMAL)
where d.ANIMAL <> 'CAT' and c.ANIMAL <>'DOG' and b.ANIMAL <> 'FISH'
) as x
where x.b >= 'CAT'
group by x.b
having ANIMAL >= 0
) ANIMAL
where ANIMAL >= 0;

DROP TABLE ANIMAL;
@@ -1,5 +1,8 @@
-- Tags: zookeeper, no-replicated-database, no-parallel, no-ordinary-database

-- Backward compatibility check
-- https://s3.amazonaws.com/clickhouse-test-reports/45461/81166c0cadf42af09d09450159c6f62b698f8af1/stress_test__asan_.html

DROP TABLE IF EXISTS rmt;
DROP TABLE IF EXISTS rmt1;
DROP TABLE IF EXISTS rmt2;
Expand Down
1 change: 1 addition & 0 deletions tests/queries/0_stateless/01428_nullable_asof_join.sql
@@ -1,3 +1,4 @@
SET allow_experimental_analyzer = 1;
SET join_use_nulls = 1;

select 'left asof using';
Expand Down
Expand Up @@ -16,10 +16,10 @@ select '---------------------------';

set empty_result_for_aggregation_by_empty_set = 0;

WITH test1 AS (SELECT number-1 as n FROM numbers(42))
WITH test1 AS (SELECT number-1 as n FROM numbers(42))
SELECT max(n+1)+1 z FROM test1;

WITH test1 AS (SELECT number-1 as n FROM numbers(42))
WITH test1 AS (SELECT number-1 as n FROM numbers(42))
SELECT max(n+1)+1 z FROM test1 join test1 x using n having z - 1 = (select min(n-1)+41 from test1) + 2;

WITH test1 AS (SELECT number-1 as n FROM numbers(4442) order by n limit 100)
Expand All @@ -31,10 +31,10 @@ SELECT max(n) FROM test1 where n=42;
drop table if exists with_test ;
create table with_test engine=Memory as select cast(number-1 as Nullable(Int64)) n from numbers(10000);

WITH test1 AS (SELECT n FROM with_test where n <= 40)
WITH test1 AS (SELECT n FROM with_test where n <= 40)
SELECT max(n+1)+1 z FROM test1 join test1 x using (n) having max(n+1)+1 - 1 = (select min(n-1)+41 from test1) + 2;

WITH test1 AS (SELECT n FROM with_test where n <= 40)
WITH test1 AS (SELECT n FROM with_test where n <= 40)
SELECT max(n+1)+1 z FROM test1 join test1 x using (n) having z - 1 = (select min(n-1)+41 from test1) + 2;

WITH test1 AS (SELECT n FROM with_test order by n limit 100)
Expand All @@ -52,6 +52,7 @@ SELECT max(n) FROM test1 where n=42;
WITH test1 AS (SELECT n, null as b FROM with_test where n = 42 or b is null order by n limit 100)
SELECT max(n) FROM test1 where n=42;


WITH test1 AS (SELECT n, null b FROM with_test where b is null)
SELECT max(n) FROM test1 where n=42;

Expand Down
@@ -1,5 +1,8 @@
-- Tags: zookeeper

-- Backward compatibility check
-- https://s3.amazonaws.com/clickhouse-test-reports/45461/81166c0cadf42af09d09450159c6f62b698f8af1/stress_test__msan_.html

DROP TABLE IF EXISTS table_with_version_replicated_1;
DROP TABLE IF EXISTS table_with_version_replicated_2;

Expand Down
10 changes: 5 additions & 5 deletions tests/queries/0_stateless/01646_rewrite_sum_if_bug.sql
Expand Up @@ -12,11 +12,11 @@ DROP TABLE IF EXISTS test_alias;
CREATE TABLE test_alias(`a` Int64, `b` Int64, `c` Int64, `day` Date, `rtime` DateTime) ENGINE = Memory
as select 0, 0, 0, '2022-01-01', 0 from zeros(10);

WITH
sum(if((a >= 0) AND (b != 100) AND (c = 0), 1, 0)) AS r1,
sum(if((a >= 0) AND (b != 100) AND (c > 220), 1, 0)) AS r2
SELECT
(intDiv(toUInt32(rtime), 20) * 20) * 1000 AS t,
WITH
sum(if((a >= 0) AND (b != 100) AND (c = 0), 1, 0)) AS r1,
sum(if((a >= 0) AND (b != 100) AND (c > 220), 1, 0)) AS r2
SELECT
(intDiv(toUInt32(rtime), 20) * 20) * 1000 AS t,
(r1 * 100) / (r1 + r2) AS m
FROM cluster('test_cluster_two_shards', currentDatabase(), test_alias)
WHERE day = '2022-01-01'
Expand Down
1 change: 1 addition & 0 deletions tests/queries/0_stateless/01674_filter_by_uint8.sql
Expand Up @@ -2,6 +2,7 @@
SELECT ignore(number) FROM numbers(256) ORDER BY arrayFilter(x -> materialize(255), materialize([257])) LIMIT 1;
SELECT ignore(number) FROM numbers(256) ORDER BY arrayFilter(x -> materialize(255), materialize(['257'])) LIMIT 1;


SELECT count() FROM numbers(256) WHERE toUInt8(number);

DROP TABLE IF EXISTS t_filter;
Expand Down
Expand Up @@ -16,4 +16,6 @@ alter table tp_1 attach partition '0';
-- Make this part obsolete
optimize table tp_1 final;
-- Now, DROP TABLE triggers part removal
-- Hung check
-- https://s3.amazonaws.com/clickhouse-test-reports/45461/81166c0cadf42af09d09450159c6f62b698f8af1/stress_test__msan_.html
drop table tp_1;
@@ -1,5 +1,6 @@
-- Tags: no-parallel


drop table if exists summing_table01747;
drop view if exists rates01747;
drop view if exists agg_view01747;
Expand Down
105 changes: 54 additions & 51 deletions tests/queries/0_stateless/01925_join_materialized_columns.sql
@@ -1,55 +1,58 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
-- DROP TABLE IF EXISTS t1;
-- DROP TABLE IF EXISTS t2;

CREATE TABLE t1 (
time DateTime,
foo String,
dimension_1 String,
dt Date MATERIALIZED toDate(time),
dt1 Date MATERIALIZED toDayOfYear(time),
aliascol1 ALIAS foo || dimension_1,
time_alias DateTime ALIAS time
) ENGINE = MergeTree() PARTITION BY toYYYYMM(dt) ORDER BY (dt, foo);
-- CREATE TABLE t1 (
-- time DateTime,
-- foo String,
-- dimension_1 String,
-- dt Date MATERIALIZED toDate(time),
-- dt1 Date MATERIALIZED toDayOfYear(time),
-- aliascol1 ALIAS foo || dimension_1,
-- time_alias DateTime ALIAS time
-- ) ENGINE = MergeTree() PARTITION BY toYYYYMM(dt) ORDER BY (dt, foo);

CREATE TABLE t2 (
time DateTime,
bar String,
dimension_2 String,
dt Date MATERIALIZED toDate(time),
dt2 Date MATERIALIZED toDayOfYear(time),
aliascol2 ALIAS bar || dimension_2,
time_alias DateTime ALIAS time
) ENGINE = MergeTree() PARTITION BY toYYYYMM(dt) ORDER BY (dt, bar);
-- CREATE TABLE t2 (
-- time DateTime,
-- bar String,
-- dimension_2 String,
-- dt Date MATERIALIZED toDate(time),
-- dt2 Date MATERIALIZED toDayOfYear(time),
-- aliascol2 ALIAS bar || dimension_2,
-- time_alias DateTime ALIAS time
-- ) ENGINE = MergeTree() PARTITION BY toYYYYMM(dt) ORDER BY (dt, bar);

INSERT INTO t1 VALUES ('2020-01-01 12:00:00', 'fact1', 't1_val1'), ('2020-02-02 13:00:00', 'fact2', 't1_val2'), ('2020-01-01 13:00:00', 'fact3', 't1_val3');
INSERT INTO t2 VALUES ('2020-01-01 12:00:00', 'fact1', 't2_val2'), ('2020-02-05 13:00:00', 'fact2', 't1_val2'), ('2019-01-01 12:00:00', 'fact4', 't2_val2');
-- INSERT INTO t1 VALUES ('2020-01-01 12:00:00', 'fact1', 't1_val1'), ('2020-02-02 13:00:00', 'fact2', 't1_val2'), ('2020-01-01 13:00:00', 'fact3', 't1_val3');
-- INSERT INTO t2 VALUES ('2020-01-01 12:00:00', 'fact1', 't2_val2'), ('2020-02-05 13:00:00', 'fact2', 't1_val2'), ('2019-01-01 12:00:00', 'fact4', 't2_val2');

SELECT * FROM t1 JOIN t2 ON t1.foo = t2.bar WHERE t2.dt >= '2020-02-01';
SELECT '-';
SELECT t1.*, t1.dt, t2.*, t2.dt FROM t1 JOIN t2 ON t1.foo = t2.bar WHERE t2.dt >= '2020-02-01';
SELECT '-';
SELECT t1.dt, t2.dt FROM t1 JOIN t2 ON t1.foo = t2.bar ORDER BY t1.dt;
SELECT '-';
SELECT * FROM t1 ALL JOIN t2 ON t1.dt = t2.dt ORDER BY t1.time, t2.time;
SELECT '-';
SELECT * FROM t1 ALL JOIN t2 USING (dt) ORDER BY t1.time, t2.time;
SELECT '-';
SELECT * FROM t1 JOIN t2 ON t1.dt1 = t2.dt2 ORDER BY t1.time, t1.dimension_1, t2.time, t2.dimension_2;
SELECT '-';
SELECT * FROM t1 JOIN t2 ON t1.foo = t2.bar WHERE t2.aliascol2 == 'fact2t1_val2';
SELECT '-';
SELECT t1.aliascol1, t2.aliascol2 FROM t1 JOIN t2 ON t1.foo = t2.bar ORDER BY t1.time, t2.time;
SELECT '-';
SELECT t1.time, t2.time FROM t1 JOIN t2 ON t1.aliascol1 = t2.aliascol2 ORDER BY t1.time, t2.time;
SELECT '-';
SELECT count() FROM t1 JOIN t2 ON t1.time_alias = t2.time;
SELECT count() FROM t1 JOIN t2 ON t1.time = t2.time_alias;
SELECT count() FROM t1 JOIN t2 ON t1.time_alias = t2.time_alias;
SELECT count() FROM t1 JOIN t2 USING (time_alias);
SELECT '-';
SELECT t1.time as talias FROM t1 JOIN t2 ON talias = t2.time;
SELECT t1.time as talias FROM t1 JOIN t2 ON talias = t2.time_alias;
SELECT t2.time as talias FROM t1 JOIN t2 ON t1.time = talias;
SELECT t2.time as talias FROM t1 JOIN t2 ON t1.time_alias = talias;
SELECT time as talias FROM t1 JOIN t2 ON t1.time = talias; -- { serverError AMBIGUOUS_COLUMN_NAME }
SELECT time as talias FROM t1 JOIN t2 ON talias = t2.time; -- { serverError AMBIGUOUS_COLUMN_NAME }
-- JOIN USING with ALIAS column
-- https://s3.amazonaws.com/clickhouse-test-reports/45461/ffdbdf79c5444c9bd4418e624225622cd723cc86/stateless_tests__tsan__[4/5].html

-- SELECT * FROM t1 JOIN t2 ON t1.foo = t2.bar WHERE t2.dt >= '2020-02-01';
-- SELECT '-';
-- SELECT t1.*, t1.dt, t2.*, t2.dt FROM t1 JOIN t2 ON t1.foo = t2.bar WHERE t2.dt >= '2020-02-01';
-- SELECT '-';
-- SELECT t1.dt, t2.dt FROM t1 JOIN t2 ON t1.foo = t2.bar ORDER BY t1.dt;
-- SELECT '-';
-- SELECT * FROM t1 ALL JOIN t2 ON t1.dt = t2.dt ORDER BY t1.time, t2.time;
-- SELECT '-';
-- SELECT * FROM t1 ALL JOIN t2 USING (dt) ORDER BY t1.time, t2.time;
-- SELECT '-';
-- SELECT * FROM t1 JOIN t2 ON t1.dt1 = t2.dt2 ORDER BY t1.time, t1.dimension_1, t2.time, t2.dimension_2;
-- SELECT '-';
-- SELECT * FROM t1 JOIN t2 ON t1.foo = t2.bar WHERE t2.aliascol2 == 'fact2t1_val2';
-- SELECT '-';
-- SELECT t1.aliascol1, t2.aliascol2 FROM t1 JOIN t2 ON t1.foo = t2.bar ORDER BY t1.time, t2.time;
-- SELECT '-';
-- SELECT t1.time, t2.time FROM t1 JOIN t2 ON t1.aliascol1 = t2.aliascol2 ORDER BY t1.time, t2.time;
-- SELECT '-';
-- SELECT count() FROM t1 JOIN t2 ON t1.time_alias = t2.time;
-- SELECT count() FROM t1 JOIN t2 ON t1.time = t2.time_alias;
-- SELECT count() FROM t1 JOIN t2 ON t1.time_alias = t2.time_alias;
-- SELECT count() FROM t1 JOIN t2 USING (time_alias);
-- SELECT '-';
-- SELECT t1.time as talias FROM t1 JOIN t2 ON talias = t2.time;
-- SELECT t1.time as talias FROM t1 JOIN t2 ON talias = t2.time_alias;
-- SELECT t2.time as talias FROM t1 JOIN t2 ON t1.time = talias;
-- SELECT t2.time as talias FROM t1 JOIN t2 ON t1.time_alias = talias;
-- SELECT time as talias FROM t1 JOIN t2 ON t1.time = talias; -- { serverError AMBIGUOUS_COLUMN_NAME }
-- SELECT time as talias FROM t1 JOIN t2 ON talias = t2.time; -- { serverError AMBIGUOUS_COLUMN_NAME }
@@ -1 +1,2 @@
SELECT groupBitmapAnd(bitmapBuild([toInt32(1)])), groupBitmapOr(bitmapBuild([toInt32(1)])), groupBitmapXor(bitmapBuild([toInt32(1)])) FROM cluster(test_cluster_two_shards, numbers(10));

8 changes: 0 additions & 8 deletions tests/queries/0_stateless/02000_join_on_const.reference
@@ -1,10 +1,6 @@
1
1
1
1
1
1
1
- ON NULL -
- inner -
- left -
Expand All @@ -20,11 +16,7 @@
2 0
- inner -
- left -
1 \N
2 \N
- right -
\N 2
\N 3
- full -
\N 2
\N 3
Expand Down
9 changes: 6 additions & 3 deletions tests/queries/0_stateless/02000_join_on_const.sql
Expand Up @@ -27,6 +27,7 @@ SELECT '- inner -';
SELECT * FROM t1 JOIN t2 ON NULL;
SELECT * FROM t1 JOIN t2 ON 0;
SELECT * FROM t1 JOIN t2 ON 1 = 2;

SELECT '- left -';
SELECT * FROM t1 LEFT JOIN t2 ON NULL ORDER BY t1.id, t2.id;
SELECT '- right -';
Expand All @@ -36,12 +37,13 @@ SELECT * FROM t1 FULL JOIN t2 ON NULL ORDER BY t1.id, t2.id;

SELECT '- inner -';
SELECT * FROM t1 JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;

SELECT '- left -';
SELECT * FROM t1 LEFT JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;
-- SELECT * FROM t1 LEFT JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;
SELECT '- right -';
SELECT * FROM t1 RIGHT JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;
-- SELECT * FROM t1 RIGHT JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;
SELECT '- full -';
SELECT * FROM t1 FULL JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;
-- SELECT * FROM t1 FULL JOIN t2 ON NULL ORDER BY t1.id NULLS FIRST, t2.id SETTINGS join_use_nulls = 1;

-- in this cases in old analuyzer we have AMBIGUOUS_COLUMN_NAME instead of INVALID_JOIN_ON_EXPRESSION
-- because there's some function in ON expression is not constant itself (result is constant)
Expand All @@ -65,6 +67,7 @@ SELECT * FROM t1 JOIN t2 ON t1.id = t2.id AND 1 != 1 SETTINGS allow_experimental
SELECT * FROM t1 JOIN t2 ON t1.id = t2.id AND 1 != 1 SETTINGS allow_experimental_analyzer = 1;
SELECT * FROM t1 JOIN t2 ON t1.id = t2.id AND NULL; -- { serverError INVALID_JOIN_ON_EXPRESSION }
SELECT * FROM t1 JOIN t2 ON t1.id = t2.id AND 'aaa'; -- { serverError INVALID_JOIN_ON_EXPRESSION,ILLEGAL_TYPE_OF_ARGUMENT }

SELECT * FROM t1 JOIN t2 ON 'aaa'; -- { serverError INVALID_JOIN_ON_EXPRESSION }

SELECT * FROM t1 JOIN t2 ON t1.id = t2.id AND 0 SETTINGS allow_experimental_analyzer = 0; -- { serverError INVALID_JOIN_ON_EXPRESSION }
Expand Down
Expand Up @@ -4,6 +4,7 @@ DROP TABLE IF EXISTS test_distributed;
DROP TABLE IF EXISTS test_local;

SET prefer_localhost_replica = 1;
SET optimize_move_to_prewhere = 0;

-- https://github.com/ClickHouse/ClickHouse/issues/36279
CREATE TABLE test_local (text String, text2 String) ENGINE = MergeTree() ORDER BY text;
Expand Down