Variable not found in subplan target lists, PostgreSQL 8.1 beta3
Hi,
I have a query that throws error "Variable not found in subplan target
lists".
This should allow it to be reproduce.
create temporary table table1 (
col1 integer not null,
col2 integer not null
);
create temporary table table2 ();
create or replace function udftable1row(integer, integer) returns table1 AS
$$
select $1, $2;
$$ language sql immutable;
create or replace function udf(table1) returns void as $$
$$ language sql immutable;
-- This throws "Variable not found in subplan target lists"
select
udf(t1)
from
udftable1Row(1,2) t1
cross join table2;
-- Now that we have Row constructor, I can get rid of
my function udftable1row() and this works ok
select
udf(t1)
from
(select (cast(row(1,2) as table1)).*) t1
cross join table2;
I am on PostgreSQL 8.1 beta3 under Windows XP Service Pack 2.
Thanks,
Jean-Pierre Pelletier
e-djuster
"Jean-Pierre Pelletier" <pelletier_32@sympatico.ca> writes:
I have a query that throws error "Variable not found in subplan target
lists".
This should allow it to be reproduce.
This seems to be fixed already in beta4. But thanks for the report!
Relevant fix is:
2005-10-19 13:31 tgl
* src/backend/optimizer/plan/createplan.c: Fix oversight in recent
changes to enable the 'physical tlist' optimization for subquery
and function scan nodes: we can't just do it unconditionally, we
still have to check whether there is any need for a whole-row Var.
I had been thinking that these node types couldn't have any system
columns, which is true, but that loop is also checking for attno
zero, ie, whole-row Var. Fix comment to not be so misleading. Per
test case from Richard Huxton.
regards, tom lane
Import Notes
Reply to msg id not found: BAYC1-PASMTP050076C60D94F0BA57C4A195760@CEZ.ICE018101c5d99e$7ef012d0$6401a8c0@JPReference msg id not found: BAYC1-PASMTP050076C60D94F0BA57C4A195760@CEZ.ICE