]> granicus.if.org Git - postgresql/commitdiff
Add test case for bug #8410.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 30 Aug 2013 23:27:40 +0000 (19:27 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 30 Aug 2013 23:27:40 +0000 (19:27 -0400)
Per Andres Freund.

src/test/regress/expected/inherit.out
src/test/regress/sql/inherit.sql

index cc3670bd91401c12b948fa1fc71c0a8e9b3cfb3c..8520281f750b8a90a3bad418390ad55b09951e69 100644 (file)
@@ -1350,6 +1350,47 @@ ORDER BY x, y;
          ->  Index Only Scan using tenk1_unique2 on tenk1 b
 (6 rows)
 
+-- 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)
+        UNION ALL
+        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ) f(i)
+    ORDER BY f.i LIMIT 1)
+FROM generate_series(1, 3) g(i);
+                                     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)
+
+SELECT
+    (SELECT g.i FROM (
+        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+        UNION ALL
+        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ) f(i)
+    ORDER BY f.i LIMIT 1)
+FROM generate_series(1, 3) g(i);
+ i 
+---
+ 1
+ 2
+ 3
+(3 rows)
+
 reset enable_seqscan;
 reset enable_indexscan;
 reset enable_bitmapscan;
index 29c1e59fd0a84685c9a8236c6e02ded6869da764..e88a5847b928464ad1cce8ec75a0248b04e9f23c 100644 (file)
@@ -439,6 +439,26 @@ SELECT x, y FROM
    SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s
 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)
+        UNION ALL
+        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ) f(i)
+    ORDER BY f.i LIMIT 1)
+FROM generate_series(1, 3) g(i);
+
+SELECT
+    (SELECT g.i FROM (
+        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+        UNION ALL
+        (SELECT * FROM generate_series(1, 2) ORDER BY 1)
+    ) f(i)
+    ORDER BY f.i LIMIT 1)
+FROM generate_series(1, 3) g(i);
+
 reset enable_seqscan;
 reset enable_indexscan;
 reset enable_bitmapscan;