2008/8/5 Asko Oja <[EMAIL PROTECTED]>: > 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> wrote: >>> >>> Martin Pihlak <[EMAIL PROTECTED]> 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 >> > > -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers