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;