mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-11 08:52:06 +00:00
Merge pull request #72393 from ClickHouse/fix-pr-any-inner-join
Fix ANY JOIN with parallel replicas
This commit is contained in:
commit
1ad472b496
@ -963,7 +963,9 @@ JoinTreeQueryPlan buildQueryPlanForTableExpression(QueryTreeNodePtr table_expres
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
const auto join_kind = join_node->getKind();
|
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 true;
|
||||||
|
|
||||||
return false;
|
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