diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 9f1c26e0151..2df9f1685cb 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.185 2005/11/22 18:17:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.186 2005/12/14 16:28:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -523,7 +523,7 @@ ExecEvalWholeRowVar(ExprState *exprstate, ExprContext *econtext, Assert(variable->varno != OUTER); slot = econtext->ecxt_scantuple; - tuple = slot->tts_tuple; + tuple = ExecFetchSlotTuple(slot); tupleDesc = slot->tts_tupleDescriptor; /* diff --git a/src/test/regress/expected/select.out b/src/test/regress/expected/select.out index b51aea8fb5c..f1facdc8e9d 100644 --- a/src/test/regress/expected/select.out +++ b/src/test/regress/expected/select.out @@ -431,3 +431,24 @@ SELECT p.name, p.age FROM person* p ORDER BY age using >, name; mary | 8 (58 rows) +-- +-- Test some cases involving whole-row Var referencing a subquery +-- +select foo from (select 1) as foo; + foo +----- + (1) +(1 row) + +select foo from (select null) as foo; + foo +----- + () +(1 row) + +select foo from (select 'xyzzy',1,null) as foo; + foo +------------ + (xyzzy,1,) +(1 row) + diff --git a/src/test/regress/sql/select.sql b/src/test/regress/sql/select.sql index 02aac6c5068..223ccb58271 100644 --- a/src/test/regress/sql/select.sql +++ b/src/test/regress/sql/select.sql @@ -104,3 +104,9 @@ SELECT p.name, p.age FROM person* p; -- SELECT p.name, p.age FROM person* p ORDER BY age using >, name; +-- +-- Test some cases involving whole-row Var referencing a subquery +-- +select foo from (select 1) as foo; +select foo from (select null) as foo; +select foo from (select 'xyzzy',1,null) as foo;