Folks,
On 8.0.4 and 8.1b4 given:
create type return_value as (id INTEGER,message TEXT
);
this function:
create function return_test (vuser INT, vsession INT
) returns return_value as $fnc$
declare vtemp return_value;
begin
vtemp := row( -1, 'bad' );
return vtemp;
end; $fnc$ language plpgsql;
works, but this function:
create function return_test_2 (vuser INT, vsession INT
) returns return_value as $fnc$
begin
vtemp := row( -1, 'bad' );
end; $fnc$ language plpgsql;
gives this error at run time:
ERROR: syntax error at or near "vtemp" at character 1
QUERY: vtemp := row( -1, 'bad' )
CONTEXT: PL/pgSQL function "return_test_2" line 2 at SQL statement
LINE 1: vtemp := row( -1, 'bad' )
... the problem seems to be that RETURN will accept variables and constants
but not arbitrary composites. We should fix that eventually. Can we put
it on the TODO list?
--
--Josh
Josh Berkus
Aglio Database Solutions
San Francisco