Re: BUG #5644: Selecting ROW() in variable with 9.0 not compatible with 8.4

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Valentine Gogichashvili" <valgog(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #5644: Selecting ROW() in variable with 9.0 not compatible with 8.4
Date: 2010-09-05 15:27:27
Message-ID: 18651.1283700447@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

"Valentine Gogichashvili" <valgog(at)gmail(dot)com> writes:
> After migration to 9.0RC1 some stored procedures, working ok in 8.4 does not
> work in 9.0.
> The problem is that SELECT ROW(a,b,c) INTO var does not work any longer in
> 9.0.

It didn't work in 8.4 either. I tried the attached and got some variant
of

ERROR: invalid input syntax for integer: "(1,a)"
CONTEXT: PL/pgSQL function "foo" line 9 at SQL statement

in every release back to 8.1.

regards, tom lane

CREATE TYPE ta AS (a1 integer, a2 text);
CREATE TYPE tb AS (b1 integer, b2 ta);

create or replace function foo() returns void language plpgsql as $$
DECLARE
a ta;
b tb;
BEGIN

SELECT 1, 'a' INTO a; -- ok
RAISE INFO 'a is %', a;

SELECT ROW(1, 'a') INTO a; -- ok in 8.4 but fails in 9.0
RAISE INFO 'a is %', a;


SELECT 1, 'a' INTO b.b2; -- ok
RAISE INFO 'b is %', b;

END;
$$;

select foo();

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Peter Eisentraut 2010-09-05 18:47:43 Re: issue about information_schema REFERENTIAL_CONSTRAINTS
Previous Message Valentine Gogichashvili 2010-09-05 14:48:06 BUG #5644: Selecting ROW() in variable with 9.0 not compatible with 8.4