ClickHouse/tests/queries/0_stateless/00826_cross_to_inner_join.sql

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

94 lines
5.1 KiB
MySQL
Raw Normal View History

2019-10-18 16:34:06 +00:00
SET enable_optimize_predicate_expression = 0;
2022-02-11 14:15:56 +00:00
SET optimize_move_to_prewhere = 1;
SET convert_query_to_cnf = 0;
2019-02-01 16:36:40 +00:00
2024-10-18 11:31:45 +00:00
select * from system.one l cross join system.one r order by all;
2019-06-03 17:36:27 +00:00
DROP TABLE IF EXISTS t1_00826;
DROP TABLE IF EXISTS t2_00826;
2019-02-01 16:36:40 +00:00
2019-06-03 17:36:27 +00:00
CREATE TABLE t1_00826 (a Int8, b Nullable(Int8)) ENGINE = Memory;
CREATE TABLE t2_00826 (a Int8, b Nullable(Int8)) ENGINE = Memory;
2019-02-01 16:36:40 +00:00
2019-06-03 17:36:27 +00:00
INSERT INTO t1_00826 values (1,1), (2,2);
INSERT INTO t2_00826 values (1,1), (1,2);
INSERT INTO t2_00826 (a) values (2), (3);
2019-02-01 16:36:40 +00:00
SELECT '--- cross ---';
2024-11-26 12:59:38 +00:00
SELECT * FROM t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a ORDER BY ALL;
SELECT '--- cross nullable ---';
2024-11-26 12:59:38 +00:00
SELECT * FROM t1_00826 cross join t2_00826 where t1_00826.b = t2_00826.b ORDER BY ALL;
SELECT '--- cross nullable vs not nullable ---';
SELECT * FROM t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.b ORDER BY t1_00826.a;
SELECT '--- cross self ---';
SELECT * FROM t1_00826 x cross join t1_00826 y where x.a = y.a and x.b = y.b ORDER BY x.a;
SELECT '--- cross one table expr ---';
2019-06-03 17:36:27 +00:00
SELECT * FROM t1_00826 cross join t2_00826 where t1_00826.a = t1_00826.b order by (t1_00826.a, t2_00826.a, t2_00826.b);
SELECT '--- cross multiple ands ---';
2024-10-18 11:31:45 +00:00
select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b order by all;
SELECT '--- cross and inside and ---';
2024-10-18 11:31:45 +00:00
select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and (t1_00826.b = t2_00826.b and 1) order by all;
SELECT '--- cross split conjunction ---';
2024-10-18 11:31:45 +00:00
select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b and t1_00826.a >= 1 and t2_00826.b = 1 order by all;
2019-02-01 16:36:40 +00:00
SELECT '--- and or ---';
2024-10-18 11:31:45 +00:00
select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b and (t1_00826.a >= 1 OR t2_00826.b = 1) order by all;
SELECT '--- arithmetic expr ---';
2024-10-18 11:31:45 +00:00
select * from t1_00826 cross join t2_00826 where t1_00826.a + 1 = t2_00826.a + t2_00826.b AND (t1_00826.a + t1_00826.b + t2_00826.a + t2_00826.b > 5) order by all;
SELECT '--- is null or ---';
2024-10-18 11:31:45 +00:00
select * from t1_00826 cross join t2_00826 where t1_00826.b = t2_00826.a AND (t2_00826.b IS NULL OR t2_00826.b > t2_00826.a) ORDER BY t1_00826.a;
SELECT '--- do not rewrite alias ---';
2024-11-26 12:59:38 +00:00
SELECT a as b FROM t1_00826 cross join t2_00826 where t1_00826.b = t2_00826.a AND b > 0 ORDER BY ALL;
SELECT '--- comma ---';
2024-11-26 12:59:38 +00:00
SELECT * FROM t1_00826, t2_00826 where t1_00826.a = t2_00826.a ORDER BY ALL;
SELECT '--- comma nullable ---';
2024-11-26 12:59:38 +00:00
SELECT * FROM t1_00826, t2_00826 where t1_00826.b = t2_00826.b ORDER BY ALL;
SELECT '--- comma and or ---';
2024-11-26 12:59:38 +00:00
SELECT * FROM t1_00826, t2_00826 where t1_00826.a = t2_00826.a AND (t2_00826.b IS NULL OR t2_00826.b < 2)
ORDER BY ALL;
2019-02-01 16:36:40 +00:00
SELECT '--- cross ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a order by all;
SELECT '--- cross nullable ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826, t2_00826 where t1_00826.a = t2_00826.a order by all;
SELECT '--- cross nullable vs not nullable ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.b order by all;
SELECT '--- cross self ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 x cross join t1_00826 y where x.a = y.a and x.b = y.b order by all;
SELECT '--- cross one table expr ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t1_00826.b order by all;
SELECT '--- cross multiple ands ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b order by all;
SELECT '--- cross and inside and ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and (t1_00826.a = t2_00826.a and (t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b)) order by all;
2019-02-01 16:36:40 +00:00
SELECT '--- cross split conjunction ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b and t1_00826.a >= 1 and t2_00826.b > 0 order by all;
2019-02-01 17:22:28 +00:00
SELECT '--- and or ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a = t2_00826.a and t1_00826.b = t2_00826.b and (t1_00826.a >= 1 OR t2_00826.b = 1) order by all;
SELECT '--- arithmetic expr ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.a + 1 = t2_00826.a + t2_00826.b AND (t1_00826.a + t1_00826.b + t2_00826.a + t2_00826.b > 5) order by all;
SELECT '--- is null or ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826 cross join t2_00826 where t1_00826.b = t2_00826.a AND (t2_00826.b IS NULL OR t2_00826.b > t2_00826.a) order by all;
SELECT '--- do not rewrite alias ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select a as b from t1_00826 cross join t2_00826 where t1_00826.b = t2_00826.a AND b > 0 order by all;
SELECT '--- comma ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826, t2_00826 where t1_00826.a = t2_00826.a order by all;
SELECT '--- comma nullable ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826, t2_00826 where t1_00826.b = t2_00826.b order by all;
SELECT '--- comma and or ---';
2024-10-18 11:31:45 +00:00
EXPLAIN SYNTAX select * from t1_00826, t2_00826 where t1_00826.a = t2_00826.a AND (t2_00826.b IS NULL OR t2_00826.b < 2) order by all;
2019-06-03 17:36:27 +00:00
DROP TABLE t1_00826;
DROP TABLE t2_00826;