2023-02-14 13:12:10 +00:00
|
|
|
SET allow_experimental_analyzer = 1;
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS t1;
|
|
|
|
DROP TABLE IF EXISTS t2;
|
|
|
|
DROP TABLE IF EXISTS t3;
|
|
|
|
|
|
|
|
CREATE TABLE t1 (a UInt64, b UInt64) ENGINE = Memory;
|
|
|
|
INSERT INTO t1 VALUES (1, 2), (3, 4), (5, 6);
|
|
|
|
|
|
|
|
CREATE TABLE t2 (a UInt64, b UInt64) ENGINE = Memory;
|
|
|
|
INSERT INTO t2 VALUES (3, 4), (5, 6), (7, 8);
|
|
|
|
|
|
|
|
CREATE TABLE t3 (a UInt64, b UInt64) ENGINE = Memory;
|
|
|
|
INSERT INTO t3 VALUES (5, 6), (7, 8), (9, 10);
|
|
|
|
|
|
|
|
SET cross_to_inner_join_rewrite = 1;
|
|
|
|
|
|
|
|
SELECT * FROM t1, t2, (SELECT a as x from t3 where a + 1 = b ) as t3
|
|
|
|
WHERE t1.a = if(t2.b > 0, t2.a, 0) AND t2.a = t3.x AND 1
|
|
|
|
;
|
|
|
|
|
|
|
|
SELECT * FROM t1, t2, (SELECT a as x from t3 where a + 1 = b ) as t3
|
|
|
|
WHERE t1.a = if(t2.b > 0, t2.a, 0)
|
|
|
|
ORDER BY t1.a, t2.a, t3.x
|
|
|
|
;
|
|
|
|
|
2023-02-20 11:50:28 +00:00
|
|
|
-- { echoOn }
|
2023-02-14 13:12:10 +00:00
|
|
|
|
2023-02-20 11:50:28 +00:00
|
|
|
EXPLAIN QUERY TREE
|
|
|
|
SELECT * FROM t1, t2, (SELECT a as x from t3 where a + 1 = b ) as t3
|
|
|
|
WHERE t1.a = if(t2.b > 0, t2.a, 0) AND t2.a = t3.x AND 1;
|
2023-02-14 13:12:10 +00:00
|
|
|
|
2023-02-20 11:50:28 +00:00
|
|
|
EXPLAIN QUERY TREE
|
|
|
|
SELECT * FROM t1, t2, (SELECT a as x from t3 where a + 1 = b ) as t3
|
|
|
|
WHERE t1.a = if(t2.b > 0, t2.a, 0) AND t2.a = t3.x AND 1
|
|
|
|
SETTINGS cross_to_inner_join_rewrite = 0;
|
|
|
|
|
|
|
|
EXPLAIN QUERY TREE
|
|
|
|
SELECT * FROM t1, t2, (SELECT a as x from t3 where a + 1 = b ) as t3
|
|
|
|
WHERE t1.a = if(t2.b > 0, t2.a, 0);
|
|
|
|
|
|
|
|
-- { echoOff }
|
2023-02-14 13:12:10 +00:00
|
|
|
|
|
|
|
SELECT * FROM t1, t2, (SELECT a as x from t3 where a + 1 = b ) as t3
|
|
|
|
WHERE t1.a = if(t2.b > 0, t2.a, 0)
|
|
|
|
SETTINGS cross_to_inner_join_rewrite = 2; -- { serverError INCORRECT_QUERY }
|
|
|
|
|
|
|
|
DROP TABLE IF EXISTS t1;
|
|
|
|
DROP TABLE IF EXISTS t2;
|
|
|
|
DROP TABLE IF EXISTS t3;
|