Fix 02967_parallel_replicas_joins_and_analyzer

This commit is contained in:
Igor Nikonov 2024-06-06 17:11:42 +00:00
parent 7be90470d5
commit 44fecf66ca

View File

@ -19,8 +19,20 @@ select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x
14 14 14 14 0 0 14 14 14 14 0 0
15 15 0 0 0 0 15 15 0 0 0 0
explain description=0 select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x, y from tab1 where x != 2) l any left join (select y, z from tab2 where y != 4) r on l.y = r.y) ll any left join (select z, a from tab3 where z != 8) rr on ll.z = rr.z SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; explain description=0 select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x, y from tab1 where x != 2) l any left join (select y, z from tab2 where y != 4) r on l.y = r.y) ll any left join (select z, a from tab3 where z != 8) rr on ll.z = rr.z SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
Expression Union
ReadFromRemoteParallelReplicas Expression
Join
Expression
Join
Expression
Expression
ReadFromMergeTree
Expression
ReadFromMemoryStorage
Expression
ReadFromMemoryStorage
Expression
ReadFromRemoteParallelReplicas
-- --
-- The same query with cte; -- The same query with cte;
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -55,8 +67,22 @@ select * from sub5 order by x
SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
Expression Expression
Sorting Sorting
Expression Union
ReadFromRemoteParallelReplicas Expression
Sorting
Expression
Join
Expression
Join
Expression
Expression
ReadFromMergeTree
Expression
ReadFromMemoryStorage
Expression
ReadFromMemoryStorage
Expression
ReadFromRemoteParallelReplicas
-- --
-- GROUP BY should work up to WithMergableStage -- GROUP BY should work up to WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -80,8 +106,22 @@ Expression
Sorting Sorting
Expression Expression
MergingAggregated MergingAggregated
Expression Union
ReadFromRemoteParallelReplicas Expression
Aggregating
Expression
Join
Expression
Join
Expression
Expression
ReadFromMergeTree
Expression
ReadFromMemoryStorage
Expression
ReadFromMemoryStorage
Expression
ReadFromRemoteParallelReplicas
-- --
-- ORDER BY in sub3 : sub1 is fully pushed, sub3 -> WithMergableStage -- ORDER BY in sub3 : sub1 is fully pushed, sub3 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -118,10 +158,22 @@ Expression
Sorting Sorting
Expression Expression
Join Join
Expression Union
ReadFromRemoteParallelReplicas Expression
Expression Join
ReadFromRemoteParallelReplicas Expression
Expression
ReadFromMergeTree
Expression
ReadFromMemoryStorage
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- ORDER BY in sub1 : sub1 -> WithMergableStage -- ORDER BY in sub1 : sub1 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2 order by y), with sub1 as (select x, y from tab1 where x != 2 order by y),
@ -160,12 +212,24 @@ Expression
Join Join
Expression Expression
Join Join
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression Expression
ReadFromRemoteParallelReplicas ReadFromRemoteParallelReplicas
Expression
ReadFromRemoteParallelReplicas
-- --
-- RIGHT JOIN in sub3: sub3 -> WithMergableStage -- RIGHT JOIN in sub3: sub3 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -202,12 +266,24 @@ Expression
Join Join
Expression Expression
Join Join
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression Expression
ReadFromRemoteParallelReplicas ReadFromRemoteParallelReplicas
Expression
ReadFromRemoteParallelReplicas
-- --
-- RIGHT JOIN in sub5: sub5 -> WithMergableStage -- RIGHT JOIN in sub5: sub5 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -242,14 +318,26 @@ Expression
Sorting Sorting
Expression Expression
Join Join
Expression Union
ReadFromRemoteParallelReplicas Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Expression Expression
Join Join
Expression Union
ReadFromRemoteParallelReplicas Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- Subqueries for IN allowed -- Subqueries for IN allowed
with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)), with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)),
@ -284,8 +372,28 @@ select * from sub5 order by x
SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
Expression Expression
Sorting Sorting
Expression Union
ReadFromRemoteParallelReplicas Expression
Sorting
Expression
Join
Expression
Join
Expression
CreatingSets
Expression
Expression
ReadFromMergeTree
CreatingSet
Expression
Filter
ReadFromSystemNumbers
Expression
ReadFromMemoryStorage
Expression
ReadFromMemoryStorage
Expression
ReadFromRemoteParallelReplicas
-- --
-- Subqueries for IN are not allowed -- Subqueries for IN are not allowed
with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)), with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)),
@ -333,10 +441,18 @@ Expression
Expression Expression
Filter Filter
ReadFromSystemNumbers ReadFromSystemNumbers
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression Expression
ReadFromRemoteParallelReplicas ReadFromRemoteParallelReplicas
set parallel_replicas_prefer_local_join = 1; set parallel_replicas_prefer_local_join = 1;
-- A query with only INNER/LEFT joins is fully send to replicas. JOIN is executed in GLOBAL mode. -- A query with only INNER/LEFT joins is fully send to replicas. JOIN is executed in GLOBAL mode.
select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x, y from tab1 where x != 2) l any left join (select y, z from tab2 where y != 4) r on l.y = r.y) ll any left join (select z, a from tab3 where z != 8) rr on ll.z = rr.z order by x SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x, y from tab1 where x != 2) l any left join (select y, z from tab2 where y != 4) r on l.y = r.y) ll any left join (select z, a from tab3 where z != 8) rr on ll.z = rr.z order by x SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
@ -356,8 +472,22 @@ select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x
14 14 14 14 0 0 14 14 14 14 0 0
15 15 0 0 0 0 15 15 0 0 0 0
explain description=0 select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x, y from tab1 where x != 2) l any left join (select y, z from tab2 where y != 4) r on l.y = r.y) ll any left join (select z, a from tab3 where z != 8) rr on ll.z = rr.z SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; explain description=0 select x, y, r.y, z, rr.z, a from (select l.x, l.y, r.y, r.z as z from (select x, y from tab1 where x != 2) l any left join (select y, z from tab2 where y != 4) r on l.y = r.y) ll any left join (select z, a from tab3 where z != 8) rr on ll.z = rr.z SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
Expression Union
ReadFromRemoteParallelReplicas Expression
Join
Expression
Join
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- The same query with cte; -- The same query with cte;
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -392,8 +522,24 @@ select * from sub5 order by x
SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
Expression Expression
Sorting Sorting
Expression Union
ReadFromRemoteParallelReplicas Expression
Sorting
Expression
Join
Expression
Join
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- GROUP BY should work up to WithMergableStage -- GROUP BY should work up to WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -417,8 +563,24 @@ Expression
Sorting Sorting
Expression Expression
MergingAggregated MergingAggregated
Expression Union
ReadFromRemoteParallelReplicas Expression
Aggregating
Expression
Join
Expression
Join
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- ORDER BY in sub3 : sub1 is fully pushed, sub3 -> WithMergableStage -- ORDER BY in sub3 : sub1 is fully pushed, sub3 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -455,10 +617,23 @@ Expression
Sorting Sorting
Expression Expression
Join Join
Expression Union
ReadFromRemoteParallelReplicas Expression
Expression Join
ReadFromRemoteParallelReplicas Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- ORDER BY in sub1 : sub1 -> WithMergableStage -- ORDER BY in sub1 : sub1 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2 order by y), with sub1 as (select x, y from tab1 where x != 2 order by y),
@ -497,12 +672,24 @@ Expression
Join Join
Expression Expression
Join Join
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression Expression
ReadFromRemoteParallelReplicas ReadFromRemoteParallelReplicas
Expression
ReadFromRemoteParallelReplicas
-- --
-- RIGHT JOIN in sub3: sub3 -> WithMergableStage -- RIGHT JOIN in sub3: sub3 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -539,12 +726,24 @@ Expression
Join Join
Expression Expression
Join Join
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression Expression
ReadFromRemoteParallelReplicas ReadFromRemoteParallelReplicas
Expression
ReadFromRemoteParallelReplicas
-- --
-- RIGHT JOIN in sub5: sub5 -> WithMergableStage -- RIGHT JOIN in sub5: sub5 -> WithMergableStage
with sub1 as (select x, y from tab1 where x != 2), with sub1 as (select x, y from tab1 where x != 2),
@ -579,14 +778,26 @@ Expression
Sorting Sorting
Expression Expression
Join Join
Expression Union
ReadFromRemoteParallelReplicas Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Expression Expression
Join Join
Expression Union
ReadFromRemoteParallelReplicas Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- Subqueries for IN allowed -- Subqueries for IN allowed
with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)), with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)),
@ -621,8 +832,30 @@ select * from sub5 order by x
SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1; SETTINGS allow_experimental_parallel_reading_from_replicas = 2, max_parallel_replicas = 2, parallel_replicas_for_non_replicated_merge_tree = 1, prefer_localhost_replica = 1, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost', allow_experimental_analyzer=1;
Expression Expression
Sorting Sorting
Expression Union
ReadFromRemoteParallelReplicas Expression
Sorting
Expression
Join
Expression
Join
Expression
CreatingSets
Expression
Expression
ReadFromMergeTree
CreatingSet
Expression
Filter
ReadFromSystemNumbers
Expression
Expression
ReadFromMergeTree
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
-- --
-- Subqueries for IN are not allowed -- Subqueries for IN are not allowed
with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)), with sub1 as (select x, y from tab1 where x in (select number from numbers(16) where number != 2)),
@ -670,7 +903,15 @@ Expression
Expression Expression
Filter Filter
ReadFromSystemNumbers ReadFromSystemNumbers
Union
Expression
Expression
ReadFromMergeTree
Expression
ReadFromRemoteParallelReplicas
Union
Expression
Expression Expression
ReadFromRemoteParallelReplicas ReadFromMergeTree
Expression Expression
ReadFromRemoteParallelReplicas ReadFromRemoteParallelReplicas