From abd3f8ca4b84707adba2e6d69413c724715cceb3 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 30 Aug 2013 21:40:21 -0400
Subject: [PATCH] Improve regression test for #8410.

The previous version of the query disregarded the result of the MergeAppend
instead of checking its results.

Andres Freund
---
 src/test/regress/expected/inherit.out | 49 +++++++++++++--------------
 src/test/regress/sql/inherit.sql      | 16 ++++-----
 2 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out
index 8520281f750..a2ef7ef7cd3 100644
--- a/src/test/regress/expected/inherit.out
+++ b/src/test/regress/expected/inherit.out
@@ -1353,42 +1353,41 @@ ORDER BY x, y;
 -- exercise rescan code path via a repeatedly-evaluated subquery
 explain (costs off)
 SELECT
-    (SELECT g.i FROM (
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ARRAY(SELECT f.i FROM (
+        (SELECT d + g.i FROM generate_series(4, 30, 3) d ORDER BY 1)
         UNION ALL
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+        (SELECT d + g.i FROM generate_series(0, 30, 5) d ORDER BY 1)
     ) f(i)
-    ORDER BY f.i LIMIT 1)
+    ORDER BY f.i LIMIT 10)
 FROM generate_series(1, 3) g(i);
-                                     QUERY PLAN                                     
-------------------------------------------------------------------------------------
+                           QUERY PLAN                           
+----------------------------------------------------------------
  Function Scan on generate_series g
    SubPlan 1
      ->  Limit
-           ->  Result
-                 ->  Merge Append
-                       Sort Key: generate_series.generate_series
-                       ->  Sort
-                             Sort Key: generate_series.generate_series
-                             ->  Function Scan on generate_series
-                       ->  Sort
-                             Sort Key: generate_series_1.generate_series
-                             ->  Function Scan on generate_series generate_series_1
-(12 rows)
+           ->  Merge Append
+                 Sort Key: ((d.d + g.i))
+                 ->  Sort
+                       Sort Key: ((d.d + g.i))
+                       ->  Function Scan on generate_series d
+                 ->  Sort
+                       Sort Key: ((d_1.d + g.i))
+                       ->  Function Scan on generate_series d_1
+(11 rows)
 
 SELECT
-    (SELECT g.i FROM (
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ARRAY(SELECT f.i FROM (
+        (SELECT d + g.i FROM generate_series(4, 30, 3) d ORDER BY 1)
         UNION ALL
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+        (SELECT d + g.i FROM generate_series(0, 30, 5) d ORDER BY 1)
     ) f(i)
-    ORDER BY f.i LIMIT 1)
+    ORDER BY f.i LIMIT 10)
 FROM generate_series(1, 3) g(i);
- i 
----
- 1
- 2
- 3
+            array             
+------------------------------
+ {1,5,6,8,11,11,14,16,17,20}
+ {2,6,7,9,12,12,15,17,18,21}
+ {3,7,8,10,13,13,16,18,19,22}
 (3 rows)
 
 reset enable_seqscan;
diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql
index e88a5847b92..86376554b01 100644
--- a/src/test/regress/sql/inherit.sql
+++ b/src/test/regress/sql/inherit.sql
@@ -442,21 +442,21 @@ ORDER BY x, y;
 -- exercise rescan code path via a repeatedly-evaluated subquery
 explain (costs off)
 SELECT
-    (SELECT g.i FROM (
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ARRAY(SELECT f.i FROM (
+        (SELECT d + g.i FROM generate_series(4, 30, 3) d ORDER BY 1)
         UNION ALL
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+        (SELECT d + g.i FROM generate_series(0, 30, 5) d ORDER BY 1)
     ) f(i)
-    ORDER BY f.i LIMIT 1)
+    ORDER BY f.i LIMIT 10)
 FROM generate_series(1, 3) g(i);
 
 SELECT
-    (SELECT g.i FROM (
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ARRAY(SELECT f.i FROM (
+        (SELECT d + g.i FROM generate_series(4, 30, 3) d ORDER BY 1)
         UNION ALL
-        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+        (SELECT d + g.i FROM generate_series(0, 30, 5) d ORDER BY 1)
     ) f(i)
-    ORDER BY f.i LIMIT 1)
+    ORDER BY f.i LIMIT 10)
 FROM generate_series(1, 3) g(i);
 
 reset enable_seqscan;
-- 
GitLab