# name: test/issues/general/test_2743.test # description: Issue 2743: RuntimeError: Not implemented Error: UNIONS are not supported in recursive CTEs yet # group: [general] statement ok PRAGMA enable_verification query II WITH RECURSIVE t(x, y) AS ( SELECT 1, 1 UNION ALL SELECT 1, 2 UNION ALL (SELECT x+1, 1 FROM t WHERE x < 10 AND y = 1 UNION ALL SELECT x+1, 2 FROM t WHERE x < 10 AND y = 2) ) SELECT * FROM t ORDER BY x, y; ---- 1 1 1 2 2 1 2 2 3 1 3 2 4 1 4 2 5 1 5 2 6 1 6 2 7 1 7 2 8 1 8 2 9 1 9 2 10 1 10 2 query II WITH RECURSIVE t(x, y) AS ( SELECT 1, 1 UNION ALL SELECT 1, 2 UNION ALL SELECT t, z FROM t, LATERAL (SELECT x+1, 2 WHERE t.y = 1 UNION ALL SELECT x+1, 1 WHERE t.y = 2) AS _(t, z) WHERE t.x < 10 ) SELECT * FROM t ORDER BY x, y; ---- 1 1 1 2 2 1 2 2 3 1 3 2 4 1 4 2 5 1 5 2 6 1 6 2 7 1 7 2 8 1 8 2 9 1 9 2 10 1 10 2 query II WITH RECURSIVE t(x, y) AS ( SELECT 1, 1 UNION SELECT 1, 2 UNION (SELECT x+1, 1 FROM t WHERE x < 10 AND y = 1 UNION ALL SELECT x+1, 1 FROM t WHERE x < 10 AND y = 2) ) SELECT * FROM t ORDER BY x, y; ---- 1 1 1 2 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 statement ok CREATE TABLE flights ( source TEXT, dest TEXT, carrier TEXT ); statement ok INSERT INTO flights VALUES ('A', 'B', 'C1'), ('A', 'C', 'C2'), ('A', 'D', 'C1'), ('B', 'D', 'C3'), ('C', 'E', 'C3') ; statement ok CREATE TABLE trains ( source TEXT, dest TEXT ); statement ok INSERT INTO trains VALUES ('B', 'C'), ('A', 'E'), ('C', 'E') ; query III WITH RECURSIVE connections(source, dest, carrier) AS ( (SELECT f.source, f.dest, f.carrier FROM flights f WHERE f.source = 'A' UNION ALL SELECT r.source, r.dest, 'Rail' AS carrier FROM trains r WHERE r.source = 'A') UNION ALL -- two recursive terms below (SELECT c.source, f.dest, f.carrier FROM connections c, flights f WHERE c.dest = f.source UNION ALL SELECT c.source, r.dest, 'Rail' AS carrier FROM connections c, trains r WHERE c.dest = r.source) ) SELECT * FROM connections ORDER BY source, dest, carrier; ---- A B C1 A C C2 A C Rail A D C1 A D C3 A E C3 A E C3 A E Rail A E Rail A E Rail query I WITH RECURSIVE t(x) AS ( (SELECT 2 UNION SELECT 1) UNION ALL (SELECT x+1 FROM t WHERE x < 4 UNION SELECT x*2 FROM t WHERE x >= 4 AND x < 8 UNION ALL SELECT x+1 FROM t WHERE x >= 4 AND x < 8) ) SELECT * FROM t ORDER BY x; ---- 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 8 8 10 10 12 12 14 14 query I WITH RECURSIVE foo(i) AS (values (1) UNION (SELECT i+1 FROM foo WHERE i < 2 UNION ALL SELECT i+1 FROM foo WHERE i < 2 UNION SELECT i+1 FROM foo WHERE i < 2 UNION ALL SELECT i+1 FROM foo WHERE i < 2 UNION SELECT i+1 FROM foo WHERE i < 2 UNION ALL SELECT i+1 FROM foo WHERE i < 2 UNION SELECT i+1 FROM foo WHERE i < 2 UNION ALL SELECT i+1 FROM foo WHERE i < 2 UNION SELECT i+1 FROM foo WHERE i < 2 UNION ALL SELECT i+1 FROM foo WHERE i < 2 UNION SELECT i+1 FROM foo WHERE i < 2) ) SELECT * FROM foo ORDER BY i; ---- 1 2