From: | Sergey Burladyan <eshkinkot(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
Cc: | Michael Tenenbaum <michael(at)strategic-techs(dot)com>, pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #4907: stored procedures and changed tables |
Date: | 2009-07-10 01:27:30 |
Message-ID: | 87r5wp2upp.fsf@seb.progtech.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Sergey Burladyan <eshkinkot(at)gmail(dot)com> writes:
> Alvaro Herrera <alvherre(at)commandprompt(dot)com> writes:
>
> > Michael Tenenbaum wrote:
> >
> > > If I have a stored procedure that returns a set of records of a table, I get
> > > an error message that the procedure's record is the wrong type after I
> > > change some columns in the table.
> > >
> > > Deleting the procedure then rewriting the procedure does not help. The only
> > > thing that works is deleting both the stored procedure and the table and
> > > starting over again.
> >
> > Does it work if you disconnect and connect again?
>
> No, example:
More simple:
PostgreSQL 8.4.0 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.3-13) 4.3.3, 32-bit
create table t (i int);
alter table t add v text; alter table t drop i;
create function foo() returns setof t language plpgsql as $$begin return query select * from t; end$$;
select foo();
ERROR: 42804: structure of query does not match function result type
ПОДРОБНО: Number of returned columns (1) does not match expected column count (2).
КОНТЕКСТ: PL/pgSQL function "foo" line 1 at RETURN QUERY
РАСПОЛОЖЕНИЕ: validate_tupdesc_compat, pl_exec.c:5143
So, function with RETURNS SETOF tbl does not work if it created after ALTER TABLE
8.3.7 too:
PostgreSQL 8.3.7 on i486-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.3-5) 4.3.3
create table t (i int);
alter table t add v text; alter table t drop i;
create function foo() returns setof t language plpgsql as $$begin return query select * from t; end$$;
select * from foo();
ERROR: 42804: structure of query does not match function result type
КОНТЕКСТ: PL/pgSQL function "foo" line 1 at RETURN QUERY
РАСПОЛОЖЕНИЕ: exec_stmt_return_query, pl_exec.c:2173
--
Sergey Burladyan
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2009-07-10 04:26:06 | Re: BUG #4907: stored procedures and changed tables |
Previous Message | Sergey Burladyan | 2009-07-10 01:12:48 | Re: BUG #4907: stored procedures and changed tables |