Re: plan invalidation vs stored procedures

From: "Asko Oja" <ascoja(at)gmail(dot)com>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Martin Pihlak" <martin(dot)pihlak(at)gmail(dot)com>, "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>, "Pg Hackers" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: plan invalidation vs stored procedures
Date: 2008-08-05 14:08:39
Message-ID: ecd779860808050708j329d8734ufb9f1a66334012b6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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(at)gmail(dot)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.
>
> On Tue, Aug 5, 2008 at 4:51 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
>> Martin Pihlak <martin(dot)pihlak(at)gmail(dot)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(at)postgresql(dot)org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-hackers
>>
>
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Martin Pihlak 2008-08-05 14:12:34 Re: plan invalidation vs stored procedures
Previous Message Asko Oja 2008-08-05 14:04:56 Re: plan invalidation vs stored procedures