Function caches wrong OID of temporary table?

From: Phil Endecott <spam_from_postgresql_general(at)chezphil(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: Function caches wrong OID of temporary table?
Date: 2004-09-08 11:37:30
Message-ID: 413EEEFA.5050406@chezphil.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Dear PostgreSQL experts,

I have encountered a problem with temporary tables inside plpgsql
functions. I suspect that this is a known issue; if someone could
confirm and suggest a workaround I'd be grateful.

My function creates a couple of temporary tables, uses them, and drops
them before returning:

create temporary table s as select 123 as id;
create temporary table t ( id integer );
....
insert into t (select id from s);
....
drop table s;
drop table t;
return;

When I run this the first time it works as expected. When I run it a
second time I get this message:

ERROR: relation with OID 590209 does not exist
CONTEXT: PL/pgSQL function "f" line 18 at SQL statement

(Line 18 is the insert-select statement.)

I imagine that it has cached that one of the tables is object 590209,
but has not noticed that the table has been dropped and recreated before
the second invokation of the function.

I can supply a better test case if that would help.

Regards,

--Phil.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Oliver Elphick 2004-09-08 11:51:55 Re: Function caches wrong OID of temporary table?
Previous Message Jerome Lyles 2004-09-08 10:38:04 Re: Postgresql and scripting