"David G. Johnston" <david.g.johnston@gmail.com> writes:
>> Aside from being inconsistent, it doesn't cover all
>> the cases --- what if you have just one query output column, that is
>> composite, and you'd like it to go into a composite variable? That
>> doesn't work today, and this patch doesn't fix it, but it does create
>> enough confusion that we never would be able to fix it.
> Actually, this does work, just not the way one would immediately expect.
Uh ... how did you declare ct1, exactly? I tried this before claiming
it doesn't work, and it doesn't, for me:
create type complex as (r float8, i float8);
create or replace function mkc(a float8, b float8) returns complex
language sql as 'select a,b';
select mkc(1,2);
create or replace function test() returns void language plpgsql as $$
declare c complex;
begin select mkc(1,2) into c; raise notice 'c = %', c;
end$$;
select test();
I get
ERROR: invalid input syntax for type double precision: "(1,2)"
CONTEXT: PL/pgSQL function test() line 4 at SQL statement
That's because it's trying to assign the result of mkc() into c.r,
not into the whole composite variable.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers