summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane2010-06-21 00:14:48 +0000
committerTom Lane2010-06-21 00:14:48 +0000
commitf685cbbac849064a170375e41fc36ad517f6210c (patch)
tree5c6e3c318703bb8604f04e053d564c3152e771b8 /src/test
parent31c47e53aa4b951bdd54eb6b47590e6c9124e427 (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.out30
-rw-r--r--src/test/regress/sql/subselect.sql14
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;