Re: BUG #4585: out parameter name cuases disruption in custom aggregate? - Mailing list pgsql-bugs

From Robert Treat
Subject Re: BUG #4585: out parameter name cuases disruption in custom aggregate?
Date
Msg-id 200812161617.04550.xzilla@users.sourceforge.net
Whole thread Raw
In response to BUG #4585: out parameter name cuases disruption in custom aggregate?  ("robert treat" <xzilla@users.sourceforge.net>)
List pgsql-bugs
On Tuesday 16 December 2008 15:40:17 robert treat wrote:
> The following bug has been logged online:
>
> Bug reference:      4585
> Logged by:          robert treat
> Email address:      xzilla@users.sourceforge.net
> PostgreSQL version: 8.3.x
> Operating system:   solaris/linux
> Description:        out parameter name cuases disruption in custom
> aggregate?
> Details:
>
> using pagila schema{1}, and array_accum from docs{2}, I uncovered the
> following odd behavior.
>
> pagila=# create or replace function wtf(out actorid int) returns setof int
> as $$ declare v_wtf int[]; begin v_wtf := array_accum(actor_id) from actor
> limit 3; raise notice 'wtf --> %',v_wtf; return; end $$ language plpgsql;
> CREATE FUNCTION
> pagila=# select * from wtf();
> NOTICE:  wtf --> {1,2,3,4,5,6,7,8,9,10}
>  actorid
> ---------
> (0 rows)
>
> pagila=# create or replace function wtf(out actor_id int) returns setof int
> as $$ declare v_wtf int[]; begin v_wtf := array_accum(actor_id) from actor
> limit 3; raise notice 'wtf --> %',v_wtf; return; end $$ language plpgsql;
> CREATE FUNCTION
> pagila=# select * from wtf();
> NOTICE:  wtf --> {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
>  actor_id
> ----------
> (0 rows)
>
> Apparently the assignment of the integer value is somehow dependent on the
> name of the out parameter; when it matches the column name, you get nulls
> back.  Is this a bug?
>
> {1} http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/dbsamples/pagila/
> {2} http://www.postgresql.org/docs/current/interactive/xaggr.html

I meant to add that in my real code I worked around this by aliasing the
column name, so that it was clear to postgres what was supposed to be accum'd
(otherwise I think it treats your column name as actually a reference to $1,
which is the out param and not set).  Still seems like it could be a bug, but
there is a least a work around.

--
Robert Treat
Conjecture: http://www.xzilla.net
Consulting: http://www.omniti.com

pgsql-bugs by date:

Previous
From: "Dave Page"
Date:
Subject: Re: BUG #4584: PostgreSQL service doesn't start
Next
From: Tom Lane
Date:
Subject: Re: BUG #4585: out parameter name cuases disruption in custom aggregate?