diff options
| author | Tom Lane | 2010-06-21 00:14:48 +0000 |
|---|---|---|
| committer | Tom Lane | 2010-06-21 00:14:48 +0000 |
| commit | f685cbbac849064a170375e41fc36ad517f6210c (patch) | |
| tree | 5c6e3c318703bb8604f04e053d564c3152e771b8 /src/test | |
| parent | 31c47e53aa4b951bdd54eb6b47590e6c9124e427 (diff) | |
Fix mishandling of whole-row Vars referencing a view or sub-select.
If such a Var appeared within a nested sub-select, we failed to translate it
correctly during pullup of the view, because the recursive call to
replace_rte_variables_mutator was looking for the wrong sublevels_up value.
Bug was introduced during the addition of the PlaceHolderVar mechanism.
Per bug #5514 from Marcos Castedo.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/subselect.out | 30 | ||||
| -rw-r--r-- | src/test/regress/sql/subselect.sql | 14 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/test/regress/expected/subselect.out b/src/test/regress/expected/subselect.out index 49ee53741b2..b0b260f1847 100644 --- a/src/test/regress/expected/subselect.out +++ b/src/test/regress/expected/subselect.out @@ -477,3 +477,33 @@ group by f1,f2,fs; ----+----+---- (0 rows) +-- +-- Test case for bug #5514 (mishandling of whole-row Vars in subselects) +-- +create temp table table_a(id integer); +insert into table_a values (42); +create temp view view_a as select * from table_a; +select view_a from view_a; + view_a +-------- + (42) +(1 row) + +select (select view_a) from view_a; + ?column? +---------- + (42) +(1 row) + +select (select (select view_a)) from view_a; + ?column? +---------- + (42) +(1 row) + +select (select (a.*)::text) from view_a a; + ?column? +---------- + (42) +(1 row) + diff --git a/src/test/regress/sql/subselect.sql b/src/test/regress/sql/subselect.sql index fd8d5df3a01..45be164d1d1 100644 --- a/src/test/regress/sql/subselect.sql +++ b/src/test/regress/sql/subselect.sql @@ -309,3 +309,17 @@ select * from (select distinct f1, f2, (select f2 from t1 x where x.f1 = up.f1) as fs from t1 up) ss group by f1,f2,fs; + +-- +-- Test case for bug #5514 (mishandling of whole-row Vars in subselects) +-- + +create temp table table_a(id integer); +insert into table_a values (42); + +create temp view view_a as select * from table_a; + +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; |
