pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Lex Berezhny <LBerezhny@DevIS.com>
To: pgsql-sql@postgresql.org
Subject: TEMP tables
Date: 02 Feb 2003 20:25:51 -0500
Message-ID: <1044235551.2176.29.camel@buddha> (raw)

hi,

I have a plpgsql procedure that needs to create a temporary table, use
it as a stack internally, and then disgard it when the procedure exits.

This works great if I only call this procedure ONCE per session. Calling
it a second time within the same session produces:

WARNING:  Error occurred while executing PL/pgSQL function render
WARNING:  line 8 at SQL statement
ERROR:  Relation 'stack' already exists

(line 8 is the CREATE TEMP TABLE statement)

But when I add DROP TABLE stack at the end (but within) the procedure,
while it works okay the first time around, it produces the following
error after first execution:

WARNING:  Error occurred while executing PL/pgSQL function render
WARNING:  line 9 at SQL statement
ERROR:  pg_class_aclcheck: relation 20900 not found

(line 9 is a SELECT * FROM stack statement)

It seems that after a table is created, dropped and then created again
it's not recognised.

When i do this outside of a procedure it works fine (i can create/drop a
temp table as many times as i want). Is there something magical that
procedures do when a table is created inside of them? (like cache the
relation id, and when you swap it underneath them, they panic?) Just
thoughts. Honestly, I have no clue :-) Which is why I am asking :-)

What are the recommendations or solutions on using temporary tables
inside functions on a per call basis?

thanks a lot,

 - lex

-- 
Lex Berezhny <LBerezhny@DevIS.com>




view thread (4+ messages)  latest in thread

Message-ID: <1044235551.2176.29.camel@buddha>
Permalink:  ../1044235551.2176.29.camel@buddha/
Also on:    postgresql.org/message-id/1044235551.2176.29.camel@buddha

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: LBerezhny@DevIS.com
  Subject: Re: TEMP tables
  In-Reply-To: <1044235551.2176.29.camel@buddha>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox