Re: BUG #4907: stored procedures and changed tables

Поиск
Список
Период
Сортировка
От Sergey Burladyan
Тема Re: BUG #4907: stored procedures and changed tables
Дата
Msg-id 87vdm12ve7.fsf@seb.progtech.ru
обсуждение исходный текст
Ответ на Re: BUG #4907: stored procedures and changed tables  (Alvaro Herrera <alvherre@commandprompt.com>)
Ответы Re: BUG #4907: stored procedures and changed tables  (Sergey Burladyan <eshkinkot@gmail.com>)
Re: BUG #4907: stored procedures and changed tables  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-bugs
Alvaro Herrera <alvherre@commandprompt.com> writes:

> Michael Tenenbaum wrote:
>=20
> > 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.
> >=20
> > 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.
>=20
> Does it work if you disconnect and connect again?

No, example:

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);
create function foo() returns setof t language plpgsql as $$begin return qu=
ery select * from t; end$$;
select foo();
alter table t add v text; alter table t drop i;
select foo();
ERROR:  42804: structure of query does not match function result type
=D0=9F=D0=9E=D0=94=D0=A0=D0=9E=D0=91=D0=9D=D0=9E:  Number of returned colum=
ns (1) does not match expected column count (2).
=D0=9A=D0=9E=D0=9D=D0=A2=D0=95=D0=9A=D0=A1=D0=A2:  PL/pgSQL function "foo" =
line 1 at RETURN QUERY
=D0=A0=D0=90=D0=A1=D0=9F=D0=9E=D0=9B=D0=9E=D0=96=D0=95=D0=9D=D0=98=D0=95:  =
validate_tupdesc_compat, pl_exec.c:5143
drop function foo();
\c
psql (8.4.0)
You are now connected to database "seb".
create function foo() returns setof t language plpgsql as $$begin return qu=
ery select * from t; end$$;
select foo();
ERROR:  42804: structure of query does not match function result type
=D0=9F=D0=9E=D0=94=D0=A0=D0=9E=D0=91=D0=9D=D0=9E:  Number of returned colum=
ns (1) does not match expected column count (2).
=D0=9A=D0=9E=D0=9D=D0=A2=D0=95=D0=9A=D0=A1=D0=A2:  PL/pgSQL function "foo" =
line 1 at RETURN QUERY
=D0=A0=D0=90=D0=A1=D0=9F=D0=9E=D0=9B=D0=9E=D0=96=D0=95=D0=9D=D0=98=D0=95:  =
validate_tupdesc_compat, pl_exec.c:5143

--=20
Sergey Burladyan

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: BUG #4915: installation failure: Failure to set permissions on the installed files
Следующее
От: Sergey Burladyan
Дата:
Сообщение: Re: BUG #4907: stored procedures and changed tables