Re: plan invalidation vs stored procedures
От | Pavel Stehule |
---|---|
Тема | Re: plan invalidation vs stored procedures |
Дата | |
Msg-id | 162867790808050717u677508c7s3f44cc888d7ed1cd@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: plan invalidation vs stored procedures ("Asko Oja" <ascoja@gmail.com>) |
Ответы |
Re: plan invalidation vs stored procedures
Re: plan invalidation vs stored procedures |
Список | pgsql-hackers |
2008/8/5 Asko Oja <ascoja@gmail.com>: > postgres=# create or replace function pavel ( i_param text, status OUT int, > status_text OUT text ) returns record as $$ select 200::int, 'ok'::text; $$ > language sql; > CREATE FUNCTION > postgres=# create or replace function pavel ( i_param text, status OUT int, > status_text OUT text, more_text OUT text ) returns record as $$ select > 200::int, 'ok'::text, 'tom'::text; $$ language sql; > ERROR: cannot change return type of existing function > DETAIL: Row type defined by OUT parameters is different. > HINT: Use DROP FUNCTION first. > > On Tue, Aug 5, 2008 at 5:04 PM, Asko Oja <ascoja@gmail.com> wrote: >> >> > This is simply a bad, wrong, stupid way to do it. Why do you not use >> > CREATE OR REPLACE FUNCTION? >> I totally agree we should get this fixed first :) >> >> postgres=# create or replace function pavel ( i_param text, status OUT >> int, status_text OUT text ) returns record as $$ select 200::int, >> 'ok'::text; $$ language sql; >> ERROR: cannot change return type of existing function >> HINT: Use DROP FUNCTION first. >> you cannot change header of function. It's same as change C header of function without complete recompilation. >> On Tue, Aug 5, 2008 at 4:51 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> >>> Martin Pihlak <martin.pihlak@gmail.com> writes: >>> > create function foo() returns integer as $$ begin return 1; end; $$ >>> > language plpgsql; >>> > CREATE FUNCTION >>> > prepare c1 as select * from foo(); >>> > PREPARE >>> > execute c1; >>> > foo >>> > ----- >>> > 1 >>> > (1 row) >>> >>> > drop function foo(); >>> > DROP FUNCTION >>> > create function foo() returns integer as $$ begin return 2; end; $$ >>> > language plpgsql; >>> > CREATE FUNCTION >>> > execute c1; >>> > psql:test.sql:11: ERROR: cache lookup failed for function 36555 >>> >>> This is simply a bad, wrong, stupid way to do it. Why do you not use >>> CREATE OR REPLACE FUNCTION? >>> >>> 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 >> > >
В списке pgsql-hackers по дате отправления: