SET citus.next_shard_id TO 20080000; CREATE SCHEMA anonymous_columns; SET search_path TO anonymous_columns; CREATE TABLE t0 (a int PRIMARY KEY, b int, "?column?" text); SELECT create_distributed_table('t0', 'a'); create_distributed_table --------------------------------------------------------------------- (1 row) INSERT INTO t0 VALUES (1, 2, 'hello'), (2, 4, 'world'); SELECT "?column?" FROM t0 ORDER BY 1; ?column? --------------------------------------------------------------------- hello world (2 rows) WITH a AS (SELECT * FROM t0) SELECT "?column?" FROM a ORDER BY 1; ?column? --------------------------------------------------------------------- hello world (2 rows) WITH a AS (SELECT '' FROM t0) SELECT * FROM a; ?column? --------------------------------------------------------------------- (2 rows) -- test CTE's that could be rewritten as subquery WITH a AS (SELECT '' FROM t0 GROUP BY a) SELECT * FROM a; ?column? --------------------------------------------------------------------- (2 rows) WITH a AS (SELECT '' FROM t0 GROUP BY b) SELECT * FROM a; ?column? --------------------------------------------------------------------- (2 rows) WITH a AS (SELECT '','' FROM t0 GROUP BY a) SELECT * FROM a; ?column? | ?column? --------------------------------------------------------------------- | | (2 rows) WITH a AS (SELECT '','' FROM t0 GROUP BY b) SELECT * FROM a; ?column? | ?column? --------------------------------------------------------------------- | | (2 rows) WITH a AS (SELECT 1, * FROM t0 WHERE a = 1) SELECT * FROM a; ?column? | a | b | ?column? --------------------------------------------------------------------- 1 | 1 | 2 | hello (1 row) -- test CTE's that are referenced multiple times and hence need to stay CTE's WITH a AS (SELECT '' FROM t0 WHERE a = 1) SELECT * FROM a, a b; ?column? | ?column? --------------------------------------------------------------------- | (1 row) WITH a AS (SELECT '','' FROM t0 WHERE a = 42) SELECT * FROM a, a b; ?column? | ?column? | ?column? | ?column? --------------------------------------------------------------------- (0 rows) -- test with explicit subqueries SELECT * FROM (SELECT a, '' FROM t0 GROUP BY a) as foo ORDER BY 1; a | ?column? --------------------------------------------------------------------- 1 | 2 | (2 rows) SELECT * FROM (SELECT a, '', '' FROM t0 GROUP BY a ) as foo ORDER BY 1; a | ?column? | ?column? --------------------------------------------------------------------- 1 | | 2 | | (2 rows) SELECT * FROM (SELECT b, '' FROM t0 GROUP BY b ) as foo ORDER BY 1; b | ?column? --------------------------------------------------------------------- 2 | 4 | (2 rows) SELECT * FROM (SELECT b, '', '' FROM t0 GROUP BY b ) as foo ORDER BY 1; b | ?column? | ?column? --------------------------------------------------------------------- 2 | | 4 | | (2 rows) -- some tests that follow very similar codeoaths SELECT a + 1 FROM t0 ORDER BY 1; ?column? --------------------------------------------------------------------- 2 3 (2 rows) SELECT a + 1, a - 1 FROM t0 ORDER BY 1; ?column? | ?column? --------------------------------------------------------------------- 2 | 0 3 | 1 (2 rows) WITH cte1 AS (SELECT row_to_json(row(a))->'f1' FROM t0) SELECT * FROM cte1 ORDER BY "?column?"::text; ?column? --------------------------------------------------------------------- 1 2 (2 rows) -- clean up after test SET client_min_messages TO WARNING; DROP SCHEMA anonymous_columns CASCADE;