From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
Cc: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Anthony Bykov <a(dot)bykov(at)postgrespro(dot)ru>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Re: issue: record or row variable cannot be part of multiple-item INTO list |
Date: | 2017-09-19 20:59:07 |
Message-ID: | 1776.1505854747@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
"David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2017-09-19 21:03:07 | Re: pgsql: Make new crash restart test a bit more robust. |
Previous Message | Andres Freund | 2017-09-19 20:53:18 | Re: pgsql: Make new crash restart test a bit more robust. |