summaryrefslogtreecommitdiff
path: root/src/test/regress
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-07-08 00:14:04 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2010-07-08 00:14:04 +0000
commitd4d32eefdf3df4eb9aadea08e3d07af753457fbb (patch)
treefb6752d683f2d24c5956d8feebbb33e0ff6dd76e /src/test/regress
parent5b1b3ef742723009e5f9b7a009aa8eda3578305a (diff)
downloadpostgresql-d4d32eefdf3df4eb9aadea08e3d07af753457fbb.tar.gz
Fix "cannot handle unplanned sub-select" error that can occur when a
sub-select contains a join alias reference that expands into an expression containing another sub-select. Per yesterday's report from Merlin Moncure and subsequent off-list investigation. Back-patch to 7.4. Older versions didn't attempt to flatten sub-selects in ways that would trigger this problem.
Diffstat (limited to 'src/test/regress')
-rw-r--r--src/test/regress/expected/subselect.out14
-rw-r--r--src/test/regress/sql/subselect.sql12
2 files changed, 26 insertions, 0 deletions
diff --git a/src/test/regress/expected/subselect.out b/src/test/regress/expected/subselect.out
index b0b260f184..e839ad7f96 100644
--- a/src/test/regress/expected/subselect.out
+++ b/src/test/regress/expected/subselect.out
@@ -507,3 +507,17 @@ select (select (a.*)::text) from view_a a;
(42)
(1 row)
+--
+-- Test case for sublinks pushed down into subselects via join alias expansion
+--
+select
+ (select sq1) as qq1
+from
+ (select exists(select 1 from int4_tbl where f1 = q2) as sq1, 42 as dummy
+ from int8_tbl) sq0
+ join
+ int4_tbl i4 on dummy = i4.f1;
+ qq1
+-----
+(0 rows)
+
diff --git a/src/test/regress/sql/subselect.sql b/src/test/regress/sql/subselect.sql
index 45be164d1d..f6657fa535 100644
--- a/src/test/regress/sql/subselect.sql
+++ b/src/test/regress/sql/subselect.sql
@@ -323,3 +323,15 @@ select view_a from view_a;
select (select view_a) from view_a;
select (select (select view_a)) from view_a;
select (select (a.*)::text) from view_a a;
+
+--
+-- Test case for sublinks pushed down into subselects via join alias expansion
+--
+
+select
+ (select sq1) as qq1
+from
+ (select exists(select 1 from int4_tbl where f1 = q2) as sq1, 42 as dummy
+ from int8_tbl) sq0
+ join
+ int4_tbl i4 on dummy = i4.f1;