Re: Create or replace function doesn't work so well

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Gavin Sherry <swm(at)linuxworld(dot)com(dot)au>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Create or replace function doesn't work so well
Date: 2001-11-06 22:41:30
Message-ID: 200111062241.fA6MfUZ27870@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Has this been resolved?

---------------------------------------------------------------------------

> Peter,
>
> On Thu, 18 Oct 2001, Peter Eisentraut wrote:
>
> > peter=# drop function test();
> > DROP
> >
>
> [snip]
>
> > The same can be observed with PL/Tcl and PL/Python, but not with PL/pgSQL
> > and plain SQL. Obviously, there is some caching going on, and a session
> > restart fixes everything, but the failure with this plain and simple test
> > case makes me wonder about this new feature...
> >
>
> I cannot recreate this on my devel system with plain SQL
>
> template1=# drop function test();
> DROP
> template1=# create or replace function test() returns int as 'select 1;'
> language 'sql';
> CREATE
> template1=# select test();
> test
> ------
> 1
> (1 row)
>
> template1=# create or replace function test() returns int as 'select 2;'
> language 'sql';
> CREATE
> template1=# select test();
> test
> ------
> 2
> (1 row)
>
>
> However,
>
> template1=# create or replace function test() returns int as 'begin
> template1'# return ''1'';
> template1'# end;
> template1'# ' language 'plpgsql';
> CREATE
> template1=# select test();
> test
> ------
> 1
> (1 row)
>
>
> template1=# create or replace function test() returns int as 'begin
> template1'# return ''2'';
> template1'# end;
> template1'# ' language 'plpgsql';
> CREATE
> template1=# select test();
> test
> ------
> 1
> (1 row)
>
>
> Yet,
>
> template1=# create or replace function test() returns int as 'select 3'
> language 'sql';
> CREATE
> template1=# select test();
> test
> ------
> 3
> (1 row)
>
> So, it must be caching at of procedural (C??) functions. Apologies for not
> testing this on all languages -- I presumed what was good for SQL would be
> good for PLpgSQL ;).
>
> I'll look into further but.
>
> Gavin
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2001-11-06 22:49:55 Re: Beta going well
Previous Message Bruce Momjian 2001-11-06 22:40:42 Re: compiling libpq++ on Solaris with Sun SPRO6U2 (fixed &