BUG #2678: Create or replace function with OUT args - Mailing list pgsql-bugs

From Jeff Trout
Subject BUG #2678: Create or replace function with OUT args
Date
Msg-id 200610051642.k95Ggg9l002690@wwwmaster.postgresql.org
Whole thread Raw
List pgsql-bugs
The following bug has been logged online:

Bug reference:      2678
Logged by:          Jeff Trout
Email address:      threshar@torgo.978.org
PostgreSQL version: 8.1.4
Operating system:   OSX 10.4.8 (Also occurs on FC4 w/kernel 2.6.16
Description:        Create or replace function with OUT args
Details:

it seems there may be some bug with cache coherency when replacing functions
that use OUT arguments.  This happens on Linux (2.6.16 ) - same version of
PG. (I didn't test across the pg restart as others are using that system).
I've created and replaced hundreds of "normal" functions. so I think it has
to do with OUT params.

Here's a transcript:

skittlebrau:/tmp postgres$ cat broken2.sql
create or replace function cachebroken(p_id int, out o_val1 int, out o_val2
int)
as $$
BEGIN

        o_val1 := 12;
        o_val2 := 45;

END
$$
language 'plpgsql';
skittlebrau:/tmp postgres$ psql indie
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

indie=# \i broken2.sql
CREATE FUNCTION
indie=# \i broken2.sql
CREATE FUNCTION
indie=# \i broken2.sql
CREATE FUNCTION
indie=# \i broken2.sql
CREATE FUNCTION
indie=# \q
skittlebrau:/tmp postgres$ psql indie
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

indie=# \i broken2.sql
psql:broken2.sql:10: ERROR:  missing cache data for cache id 27
indie=# \i broken2.sql
psql:broken2.sql:10: ERROR:  missing cache data for cache id 27
indie=# \q
skittlebrau:/tmp postgres$ pg_ctl -D /usr/local/pgsql/data/ -m fast restart
waiting for postmaster to shut down....LOG:  logger shutting down
 done
postmaster stopped
postmaster starting
skittlebrau:/tmp postgres$ psql indie
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

indie=# \i broken2.sql
psql:broken2.sql:10: ERROR:  missing cache data for cache id 27
indie=# drop function cachebroken (int);
DROP FUNCTION
indie=# \i broken2.sql
CREATE FUNCTION
indie=# \q

Occurs on: indie=# select version();
                                                                   version

----------------------------------------------------------------------------
------------------------------------------------------------------
 PostgreSQL 8.1.4 on powerpc-apple-darwin8.8.0, compiled by GCC
powerpc-apple-darwin8-gcc-4.0.0 (GCC) 4.0.0 (Apple Computer, Inc. build
5026)
(1 row)

indie=# select version();
                                              version

----------------------------------------------------------------------------
-----------------------
 PostgreSQL 8.1.4 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.0.1
20050727 (Red Hat 4.0.1-5)
(1 row)

pgsql-bugs by date:

Previous
From: "CN"
Date:
Subject: BUG #2677: BCC 5.5 can't compile libpq 8.2 beta 1
Next
From: Bob Friesenhahn
Date:
Subject: Re: BUG #2674: libedit not detected