mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
stateless tests: Add test for unequal JOINs
This commit is contained in:
parent
54bc5d12ef
commit
d59ccbdb50
@ -0,0 +1,290 @@
|
||||
-- { echoOn }
|
||||
-- inequality operation
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
--
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
--
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
-- BETWEEN
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
1 10 alpha 0 0
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
1 10 alpha 0 0
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
0 0 1 5 ALPHA
|
||||
0 0 4 25 delta
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
0 0 1 5 ALPHA
|
||||
0 0 4 25 delta
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
0 0 1 5 ALPHA
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 0 0
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
0 0 1 5 ALPHA
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 0 0
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
--
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
-- Stupid condition
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 2 10 beta
|
||||
3 20 gamma 0 0
|
||||
-- Window functions with stupid condition
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 LEFT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 15 3
|
||||
2 15 beta 2 10 beta 15 3
|
||||
3 20 gamma 0 0 15 3
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 LEFT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 15 3
|
||||
2 15 beta 2 10 beta 15 3
|
||||
3 20 gamma 0 0 15 3
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 INNER JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 12.5 3
|
||||
2 15 beta 2 10 beta 12.5 3
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 INNER JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 12.5 3
|
||||
2 15 beta 2 10 beta 12.5 3
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 RIGHT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta 8.333333333333334 7
|
||||
1 10 alpha 1 5 ALPHA 8.333333333333334 7
|
||||
2 15 beta 2 10 beta 8.333333333333334 7
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 RIGHT JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta 8.333333333333334 7
|
||||
1 10 alpha 1 5 ALPHA 8.333333333333334 7
|
||||
2 15 beta 2 10 beta 8.333333333333334 7
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 FULL JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta 11.25 7
|
||||
1 10 alpha 1 5 ALPHA 11.25 7
|
||||
2 15 beta 2 10 beta 11.25 7
|
||||
3 20 gamma 0 0 11.25 7
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 FULL JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
0 0 4 25 delta 11.25 7
|
||||
1 10 alpha 1 5 ALPHA 11.25 7
|
||||
2 15 beta 2 10 beta 11.25 7
|
||||
3 20 gamma 0 0 11.25 7
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
@ -0,0 +1,82 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
|
||||
|
||||
CREATE TABLE t1 (
|
||||
key UInt32,
|
||||
a UInt32,
|
||||
attr String
|
||||
) ENGINE = MergeTree ORDER BY key;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
key UInt32,
|
||||
a UInt32,
|
||||
attr String
|
||||
) ENGINE = MergeTree ORDER BY key;
|
||||
|
||||
INSERT INTO t1 (key, a, attr) VALUES (1, 10, 'alpha'), (2, 15, 'beta'), (3, 20, 'gamma');
|
||||
INSERT INTO t2 (key, a, attr) VALUES (1, 5, 'ALPHA'), (2, 10, 'beta'), (4, 25, 'delta');
|
||||
|
||||
|
||||
SET allow_experimental_analyzer=1;
|
||||
SET allow_experimental_join_condition=1;
|
||||
SET join_use_nulls=0;
|
||||
-- { echoOn }
|
||||
-- inequality operation
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
--
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND t1.a > t2.key AND t1.key + t2.a > 1 ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
--
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.key < t2.a OR t1.a % 2 = 0) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
-- BETWEEN
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t2.a BETWEEN 8 AND t1.a) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
--
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.a IN (SELECT a FROM t2 WHERE a = 10)) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
-- Stupid condition
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
-- Window functions with stupid condition
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.*, AVG(t1.a) OVER () AS avg_b, SUM(t2.key) OVER () AS sum_c FROM t1 {{ join_type }} JOIN t2 ON t1.key == t2.key AND (t1.a * length(t2.attr) / length(t1.attr) <> t2.a + t1.key - t2.key) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
@ -0,0 +1,90 @@
|
||||
-- { echoOn }
|
||||
|
||||
-- Support for query lower
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
0 0 2 10 beta
|
||||
0 0 4 25 delta
|
||||
1 10 alpha 1 5 ALPHA
|
||||
2 15 beta 0 0
|
||||
3 20 gamma 0 0
|
||||
-- Subquery JOIN
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) LEFT JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
2 15 beta 0 0 0 0
|
||||
3 20 gamma 0 0 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) LEFT JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
2 15 beta 0 0 0 0
|
||||
3 20 gamma 0 0 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) INNER JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) INNER JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) RIGHT JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
0 0 0 0 0 10
|
||||
0 0 0 0 2 1000
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) RIGHT JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
0 0 0 0 0 10
|
||||
0 0 0 0 2 1000
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
SET join_algorithm='hash';
|
||||
SELECT * FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) FULL JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
0 0 0 0 0 10
|
||||
0 0 0 0 2 1000
|
||||
0 0 2 10 beta 0 0
|
||||
0 0 4 25 delta 0 0
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
2 15 beta 0 0 0 0
|
||||
3 20 gamma 0 0 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT * FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) FULL JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
0 0 0 0 0 10
|
||||
0 0 0 0 2 1000
|
||||
0 0 2 10 beta 0 0
|
||||
0 0 4 25 delta 0 0
|
||||
1 10 alpha 1 5 ALPHA 1 100
|
||||
2 15 beta 0 0 0 0
|
||||
3 20 gamma 0 0 0 0
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
@ -0,0 +1,44 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
|
||||
|
||||
CREATE TABLE t1 (
|
||||
key UInt32,
|
||||
a UInt32,
|
||||
attr String
|
||||
) ENGINE = MergeTree ORDER BY key;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
key UInt32,
|
||||
a UInt32,
|
||||
attr String
|
||||
) ENGINE = MergeTree ORDER BY key;
|
||||
|
||||
INSERT INTO t1 (key, a, attr) VALUES (1, 10, 'alpha'), (2, 15, 'beta'), (3, 20, 'gamma');
|
||||
INSERT INTO t2 (key, a, attr) VALUES (1, 5, 'ALPHA'), (2, 10, 'beta'), (4, 25, 'delta');
|
||||
|
||||
|
||||
SET allow_experimental_analyzer=1;
|
||||
SET allow_experimental_join_condition=1;
|
||||
SET join_use_nulls=0;
|
||||
-- { echoOn }
|
||||
|
||||
-- Support for query lower
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT * FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
|
||||
-- Subquery JOIN
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT * FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.attr != t2.attr) {{ join_type }} JOIN (SELECT * FROM VALUES('key UInt64, a UInt64', (0, 10), (1, 100), (2, 1000))) t3 ON t1.key=t3.key AND t2.key=t3.key AND t3.a!=t1.a AND t3.a!=t2.a ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
@ -0,0 +1,123 @@
|
||||
-- { echoOn }
|
||||
|
||||
-- These queries work
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
2 15 2 10
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
2 15 2 10
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
2 15 2 10
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
2 15 2 10
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
1 10 0 0
|
||||
2 15 0 0
|
||||
3 20 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
1 10 0 0
|
||||
2 15 0 0
|
||||
3 20 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 2 10
|
||||
0 0 4 25
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 2 10
|
||||
0 0 4 25
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 2 10
|
||||
0 0 4 25
|
||||
1 10 0 0
|
||||
2 15 0 0
|
||||
3 20 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 2 10
|
||||
0 0 4 25
|
||||
1 10 0 0
|
||||
2 15 0 0
|
||||
3 20 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
2 15 2 10
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
2 15 2 10
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
2 15 2 10
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 RIGHT JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
2 15 2 10
|
||||
SET join_algorithm='hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
||||
SET join_algorithm='grace_hash';
|
||||
SELECT t1.*, t2.* FROM t1 FULL JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
0 0 1 5
|
||||
0 0 4 25
|
||||
1 10 0 0
|
||||
2 15 2 10
|
||||
3 20 0 0
|
@ -0,0 +1,47 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
|
||||
|
||||
CREATE TABLE t1 (
|
||||
key UInt32,
|
||||
a UInt32
|
||||
) ENGINE = MergeTree ORDER BY key;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
key UInt32,
|
||||
a UInt32
|
||||
) ENGINE = MergeTree ORDER BY key;
|
||||
|
||||
INSERT INTO t1 (key, a) VALUES (1, 10), (2, 15), (3, 20);
|
||||
INSERT INTO t2 (key, a) VALUES (1, 5), (2, 10), (4, 25);
|
||||
|
||||
SET allow_experimental_analyzer=1;
|
||||
SET allow_experimental_join_condition=1;
|
||||
SET join_algorithm='hash';
|
||||
-- { echoOn }
|
||||
|
||||
-- These queries work
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND ((t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.a=2 AND (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
{% for join_type in ['LEFT', 'INNER', 'RIGHT', 'FULL'] -%}
|
||||
{% for algorithm in ['hash', 'grace_hash'] -%}
|
||||
SET join_algorithm='{{ algorithm }}';
|
||||
SELECT t1.*, t2.* FROM t1 {{ join_type }} JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a = (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
|
||||
-- LOGICAL_ERROR Not-ready Set is passed as the second argument for function 'in'
|
||||
-- https://github.com/ClickHouse/ClickHouse/issues/64513
|
||||
-- SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.key = t2.key AND (t1.a=2 OR (t2.a IN (SELECT a FROM t1 WHERE a = 10))) ORDER BY ALL;
|
Loading…
Reference in New Issue
Block a user