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