diff --git a/src/test/regress/expected/tsrf.out b/src/test/regress/expected/tsrf.out index 983ce17c83911c416f204c7c3fb1cea21492c40e..805e8db9f650194b750707ca0dbe8cb168887dca 100644 --- a/src/test/regress/expected/tsrf.out +++ b/src/test/regress/expected/tsrf.out @@ -130,39 +130,32 @@ SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few (2 rows) -- check HAVING works when GROUP BY does [not] reference SRF output -SELECT dataa, generate_series(1,3), count(*) FROM few GROUP BY 1 HAVING count(*) > 1; +SELECT dataa, generate_series(1,1), count(*) FROM few GROUP BY 1 HAVING count(*) > 1; dataa | generate_series | count -------+-----------------+------- a | 1 | 2 - a | 2 | 2 - a | 3 | 2 -(3 rows) +(1 row) -SELECT dataa, generate_series(1,3), count(*) FROM few GROUP BY 1, 2 HAVING count(*) > 1; +SELECT dataa, generate_series(1,1), count(*) FROM few GROUP BY 1, 2 HAVING count(*) > 1; dataa | generate_series | count -------+-----------------+------- a | 1 | 2 - a | 2 | 2 - a | 3 | 2 -(3 rows) +(1 row) -- it's weird to have GROUP BYs that increase the number of results -SELECT few.dataa, count(*), min(id), max(id) FROM few GROUP BY few.dataa; - dataa | count | min | max --------+-------+-----+----- - b | 1 | 3 | 3 - a | 2 | 1 | 2 +SELECT few.dataa, count(*) FROM few WHERE dataa = 'a' GROUP BY few.dataa ORDER BY 2; + dataa | count +-------+------- + a | 2 +(1 row) + +SELECT few.dataa, count(*) FROM few WHERE dataa = 'a' GROUP BY few.dataa, unnest('{1,1,3}'::int[]) ORDER BY 2; + dataa | count +-------+------- + a | 2 + a | 4 (2 rows) -SELECT few.dataa, count(*), min(id), max(id) FROM few GROUP BY few.dataa, unnest('{1,1,3}'::int[]); - dataa | count | min | max --------+-------+-----+----- - b | 2 | 3 | 3 - a | 4 | 1 | 2 - b | 1 | 3 | 3 - a | 2 | 1 | 2 -(4 rows) - -- SRFs are not allowed in aggregate arguments SELECT min(generate_series(1, 3)) FROM few; ERROR: set-valued function called in context that cannot accept a set diff --git a/src/test/regress/sql/tsrf.sql b/src/test/regress/sql/tsrf.sql index 633dfd64c9ed19da6b804f04730bb73b127bd55f..524779581da99e09fe9c6d9496e8ce7373531a85 100644 --- a/src/test/regress/sql/tsrf.sql +++ b/src/test/regress/sql/tsrf.sql @@ -37,12 +37,12 @@ SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few WHERE few.id = 1 GROUP BY few.dataa, 5; -- check HAVING works when GROUP BY does [not] reference SRF output -SELECT dataa, generate_series(1,3), count(*) FROM few GROUP BY 1 HAVING count(*) > 1; -SELECT dataa, generate_series(1,3), count(*) FROM few GROUP BY 1, 2 HAVING count(*) > 1; +SELECT dataa, generate_series(1,1), count(*) FROM few GROUP BY 1 HAVING count(*) > 1; +SELECT dataa, generate_series(1,1), count(*) FROM few GROUP BY 1, 2 HAVING count(*) > 1; -- it's weird to have GROUP BYs that increase the number of results -SELECT few.dataa, count(*), min(id), max(id) FROM few GROUP BY few.dataa; -SELECT few.dataa, count(*), min(id), max(id) FROM few GROUP BY few.dataa, unnest('{1,1,3}'::int[]); +SELECT few.dataa, count(*) FROM few WHERE dataa = 'a' GROUP BY few.dataa ORDER BY 2; +SELECT few.dataa, count(*) FROM few WHERE dataa = 'a' GROUP BY few.dataa, unnest('{1,1,3}'::int[]) ORDER BY 2; -- SRFs are not allowed in aggregate arguments SELECT min(generate_series(1, 3)) FROM few;