pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Christoph Haller <ch@rodos.fzk.de>
To: pgsql-sql@postgresql.org
Cc: m.papper@fantastic.com
Subject: Re: Finding if a temp table exists in the current connection
Date: Fri, 04 Apr 2003 13:16:16 +0200
Message-ID: <3E8D6980.5060308@rodos.fzk.de> (raw)

 >
 > Is there a way (i.e., access theinternal pg_ tables) to find out if a
 > particular temp table already exists (in the current connection)?
 >
 > I have written some stored procedures that check if a table exists 
and if a
 > column exists in a table. This is used so I can perform upgrades of our
 > system (if table doesnt exist, call create table... sql).
 >
 > I would like to do a similar thing for temp tables.
 >
 > I have noticed that if another connection creates a temp table, it will
 > show up in the pg_* tables so that all ocnnections can see the table.
 >
 > Is there some standard SQL way to test?
 >
I'm using 7.3.2 and it seems there is a way.
I've found out by starting a psql session using the -E option.
This shows you the SQL behind \dt which shows the current temp tables.
It looks like they are created in name spaces called "pg_temp_<N>,
where N is simply a connection counter.

SELECT n.nspname as "Schema",c.relname as "Name"
FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid 
= c.relnamespace
where n.nspname like 'pg_temp_%' AND pg_catalog.pg_table_is_visible(c.oid) ;

If I do (within 1st connection)
create temp table tgif (dummy int);
and the select above returns
  Schema   | Name
-----------+------
 pg_temp_1 | tgif
(1 row)
And within a 2nd connection
create temp table tgif (dummy int);
and the select above returns
  Schema   | Name
-----------+------
 pg_temp_2 | tgif
(1 row)

Does this help?

Regards, Christoph




view thread (3+ messages)  latest in thread

Message-ID: <3E8D6980.5060308@rodos.fzk.de>
Permalink:  ../3E8D6980.5060308@rodos.fzk.de/
Also on:    postgresql.org/message-id/3E8D6980.5060308@rodos.fzk.de

 · 

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: ch@rodos.fzk.de, m.papper@fantastic.com
  Subject: Re: Finding if a temp table exists in the current connection
  In-Reply-To: <3E8D6980.5060308@rodos.fzk.de>

* 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