mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
some tests with full_sorting_merge
This commit is contained in:
parent
ba787db0bb
commit
075a706583
@ -1,3 +1,5 @@
|
||||
{% for join_algorithm in ['hash', 'full_sorting_merge'] -%}
|
||||
join_algorithm: {{ join_algorithm }}
|
||||
any left
|
||||
0 a1 0
|
||||
1 a2 0
|
||||
@ -24,3 +26,4 @@ any right (rev)
|
||||
2 a3 2 b1
|
||||
3 a4 0
|
||||
4 a5 4 b3
|
||||
{% endfor -%}
|
@ -10,7 +10,10 @@ INSERT INTO t2 (x, s) VALUES (2, 'b1'), (4, 'b3'), (5, 'b6');
|
||||
SET join_use_nulls = 0;
|
||||
SET any_join_distinct_right_table_keys = 0;
|
||||
|
||||
SET join_algorithm = 'full_sorting_merge';
|
||||
{% for join_algorithm in ['hash', 'full_sorting_merge'] -%}
|
||||
|
||||
SET join_algorithm = '{{ join_algorithm }}';
|
||||
SELECT 'join_algorithm: {{ join_algorithm }}';
|
||||
|
||||
SELECT 'any left';
|
||||
SELECT t1.*, t2.* FROM t1 ANY LEFT JOIN t2 USING(x) ORDER BY t1.x, t2.x;
|
||||
@ -30,5 +33,7 @@ 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;
|
||||
|
||||
{% endfor -%}
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
286
tests/queries/0_stateless/02249_full_sort_join.reference
Normal file
286
tests/queries/0_stateless/02249_full_sort_join.reference
Normal file
@ -0,0 +1,286 @@
|
||||
simple cases, block size = 1
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 2
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 3
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 4
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 5
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 6
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 7
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 8
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 9
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases, block size = 10
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 0 val0
|
||||
9 0 val1
|
||||
8 8 val2
|
||||
5 0 val3
|
||||
9 0 val4
|
||||
1 0 val5
|
||||
10 0 val6
|
||||
1 0 val7
|
||||
5 0 val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
0 7 val3
|
||||
8 8 val4
|
||||
0 4 val5
|
||||
0 6 val6
|
||||
0 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
||||
simple cases: join_use_nulls
|
||||
ANY INNER
|
||||
8 8
|
||||
2 2
|
||||
ANY LEFT
|
||||
1 \N val0
|
||||
9 \N val1
|
||||
8 8 val2
|
||||
5 \N val3
|
||||
9 \N val4
|
||||
1 \N val5
|
||||
10 \N val6
|
||||
1 \N val7
|
||||
5 \N val8
|
||||
2 2 val9
|
||||
ANY RIGHT
|
||||
2 2 val0
|
||||
8 8 val1
|
||||
8 8 val2
|
||||
\N 7 val3
|
||||
8 8 val4
|
||||
\N 4 val5
|
||||
\N 6 val6
|
||||
\N 4 val7
|
||||
2 2 val8
|
||||
2 2 val9
|
76
tests/queries/0_stateless/02249_full_sort_join.sql.j2
Normal file
76
tests/queries/0_stateless/02249_full_sort_join.sql.j2
Normal file
@ -0,0 +1,76 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
|
||||
CREATE TABLE t1 (key UInt32, s String) engine = MergeTree ORDER BY key;
|
||||
CREATE TABLE t2 (key UInt32, s String) engine = MergeTree ORDER BY key;
|
||||
|
||||
{% set table_size = 10 %}
|
||||
|
||||
INSERT INTO t1
|
||||
SELECT
|
||||
sipHash64(number, 'x') % {{ table_size }} + 1 as key,
|
||||
'val' || toString(number) as s
|
||||
FROM numbers_mt({{ table_size }});
|
||||
|
||||
INSERT INTO t2
|
||||
SELECT
|
||||
sipHash64(number, 'y') % {{ table_size }} + 1 as key,
|
||||
'val' || toString(number) as s
|
||||
FROM numbers_mt({{ table_size }});
|
||||
|
||||
SET join_algorithm = 'full_sorting_merge';
|
||||
|
||||
{% for block_size in range (1, table_size + 1) %}
|
||||
|
||||
SET max_block_size = {{ block_size }};
|
||||
|
||||
SELECT 'simple cases, block size = {{ block_size }}';
|
||||
|
||||
SELECT 'ANY INNER';
|
||||
SELECT t1.key, t2.key FROM t1
|
||||
ANY INNER JOIN t2
|
||||
ON t1.key == t2.key
|
||||
ORDER BY t1.s, t2.s
|
||||
;
|
||||
|
||||
SELECT 'ANY LEFT';
|
||||
SELECT t1.key, t2.key, t1.s FROM t1
|
||||
ANY LEFT JOIN t2
|
||||
ON t1.key == t2.key
|
||||
ORDER BY t1.s
|
||||
;
|
||||
|
||||
SELECT 'ANY RIGHT';
|
||||
SELECT t1.key, t2.key, t2.s FROM t1
|
||||
ANY RIGHT JOIN t2
|
||||
ON t1.key == t2.key
|
||||
ORDER BY t2.s
|
||||
;
|
||||
|
||||
{% endfor %}
|
||||
|
||||
|
||||
SET join_use_nulls = 1;
|
||||
|
||||
SELECT 'simple cases: join_use_nulls';
|
||||
|
||||
SELECT 'ANY INNER';
|
||||
SELECT t1.key, t2.key FROM t1
|
||||
ANY INNER JOIN t2
|
||||
ON t1.key == t2.key
|
||||
ORDER BY t1.s, t2.s
|
||||
;
|
||||
|
||||
SELECT 'ANY LEFT';
|
||||
SELECT t1.key, t2.key, t1.s FROM t1
|
||||
ANY LEFT JOIN t2
|
||||
ON t1.key == t2.key
|
||||
ORDER BY t1.s
|
||||
;
|
||||
|
||||
SELECT 'ANY RIGHT';
|
||||
SELECT t1.key, t2.key, t2.s FROM t1
|
||||
ANY RIGHT JOIN t2
|
||||
ON t1.key == t2.key
|
||||
ORDER BY t2.s
|
||||
;
|
Loading…
Reference in New Issue
Block a user