diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2010-07-08 00:14:04 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2010-07-08 00:14:04 +0000 |
| commit | d4d32eefdf3df4eb9aadea08e3d07af753457fbb (patch) | |
| tree | fb6752d683f2d24c5956d8feebbb33e0ff6dd76e /src/test | |
| parent | 5b1b3ef742723009e5f9b7a009aa8eda3578305a (diff) | |
| download | postgresql-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')
| -rw-r--r-- | src/test/regress/expected/subselect.out | 14 | ||||
| -rw-r--r-- | src/test/regress/sql/subselect.sql | 12 |
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; |
