mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-28 18:42:26 +00:00
Backport #72393 to 24.10: Fix ANY JOIN with parallel replicas
This commit is contained in:
parent
1dc5c7a346
commit
81d21bc151
@ -962,7 +962,9 @@ JoinTreeQueryPlan buildQueryPlanForTableExpression(QueryTreeNodePtr table_expres
|
||||
return true;
|
||||
|
||||
const auto join_kind = join_node->getKind();
|
||||
if (join_kind == JoinKind::Left || join_kind == JoinKind::Right || join_kind == JoinKind::Inner)
|
||||
const auto join_strictness = join_node->getStrictness();
|
||||
if (join_kind == JoinKind::Left || join_kind == JoinKind::Right
|
||||
|| (join_kind == JoinKind::Inner && join_strictness == JoinStrictness::All))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
26
tests/queries/0_stateless/03275_pr_any_join.reference
Normal file
26
tests/queries/0_stateless/03275_pr_any_join.reference
Normal file
@ -0,0 +1,26 @@
|
||||
any left
|
||||
0 a1 0
|
||||
1 a2 0
|
||||
2 a3 2 b1
|
||||
3 a4 0
|
||||
4 a5 4 b2
|
||||
any left (rev)
|
||||
0 5 b4
|
||||
2 a3 2 b1
|
||||
4 a5 4 b2
|
||||
any inner
|
||||
2 a3 2 b1
|
||||
4 a5 4 b2
|
||||
any inner (rev)
|
||||
2 a3 2 b1
|
||||
4 a5 4 b2
|
||||
any right
|
||||
0 5 b4
|
||||
2 a3 2 b1
|
||||
4 a5 4 b2
|
||||
any right (rev)
|
||||
0 a1 0
|
||||
1 a2 0
|
||||
2 a3 2 b1
|
||||
3 a4 0
|
||||
4 a5 4 b2
|
31
tests/queries/0_stateless/03275_pr_any_join.sql
Normal file
31
tests/queries/0_stateless/03275_pr_any_join.sql
Normal file
@ -0,0 +1,31 @@
|
||||
DROP TABLE IF EXISTS t1 SYNC;
|
||||
DROP TABLE IF EXISTS t2 SYNC;
|
||||
|
||||
CREATE TABLE t1 (x UInt32, s String) engine = ReplicatedMergeTree('/clickhouse/{database}/t1', 'r1') ORDER BY tuple();
|
||||
CREATE TABLE t2 (x UInt32, s String) engine = ReplicatedMergeTree('/clickhouse/{database}/t2', 'r1') ORDER BY tuple();
|
||||
|
||||
INSERT INTO t1 (x, s) VALUES (0, 'a1'), (1, 'a2'), (2, 'a3'), (3, 'a4'), (4, 'a5');
|
||||
INSERT INTO t2 (x, s) VALUES (2, 'b1'), (4, 'b2'), (5, 'b4');
|
||||
|
||||
set enable_analyzer = 1, enable_parallel_replicas = 1, max_parallel_replicas = 3, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost';
|
||||
|
||||
SELECT 'any left';
|
||||
SELECT t1.*, t2.* FROM t1 ANY LEFT JOIN t2 USING(x) ORDER BY t1.x, t2.x;
|
||||
|
||||
SELECT 'any left (rev)';
|
||||
SELECT t1.*, t2.* FROM t2 ANY LEFT JOIN t1 USING(x) ORDER BY t1.x, t2.x;
|
||||
|
||||
SELECT 'any inner';
|
||||
SELECT t1.*, t2.* FROM t1 ANY INNER JOIN t2 USING(x) ORDER BY t1.x, t2.x;
|
||||
|
||||
SELECT 'any inner (rev)';
|
||||
SELECT t1.*, t2.* FROM t2 ANY INNER JOIN t1 USING(x) ORDER BY t1.x, t2.x;
|
||||
|
||||
SELECT 'any right';
|
||||
SELECT t1.*, t2.* FROM t1 ANY RIGHT JOIN t2 USING(x) ORDER BY t1.x, t2.x;
|
||||
|
||||
SELECT 'any right (rev)';
|
||||
SELECT t1.*, t2.* FROM t2 ANY RIGHT JOIN t1 USING(x) ORDER BY t1.x, t2.x;
|
||||
|
||||
DROP TABLE t1 SYNC;
|
||||
DROP TABLE t2 SYNC;
|
Loading…
Reference in New Issue
Block a user