Re: how do I check if a temporary table exists? - Mailing list pgsql-sql

From Tom Lane
Subject Re: how do I check if a temporary table exists?
Date
Msg-id 23017.985451983@sss.pgh.pa.us
Whole thread Raw
In response to Re: how do I check if a temporary table exists?  (darcy@druid.net (D'Arcy J.M. Cain))
List pgsql-sql
darcy@druid.net (D'Arcy J.M. Cain) writes:
> Thus spake datactrl
>> How do I check if a temporary table exists? Searching pg_tables with a
>> temporary table name we chose always fails.

> What do you mean?  You know that it exists because you just created it
> and the create succeeded.  Can you describe a situation where you need
> to know about a temp table and don't already know?

I can see that it might take some unpleasant restructuring of his client
application to make that knowledge available where & when it's needed.

> It can't go into the pg_tables table because then it would be visible
> to other processes.  Are you perhaps misunderstanding temp tables?  You
> cannot see them except from the process that created them.

I agree with datactrl that this is a deficiency: the whole point of
system catalogs is that you are supposed to be able to look in them
to see what you have.  It should be possible to look up temp tables
in pg_class.  They actually are in there (and quite visible to other
processes BTW); what you don't know is the mapping from your logical
name for the table to its real name pg_tempXXXX.

I'm hoping that this can be fixed when we implement schemas.  Seems
like it would be natural to make temp tables live in a per-backend
schema.  Then they wouldn't need names like pg_tempXXXX.  You would
probably need to know the name of your current temp schema, but that
seems like a more tractable thing to deal with than mappings of
individual temp table names.
        regards, tom lane


pgsql-sql by date:

Previous
From: Andrew Perrin
Date:
Subject: all views in database broken at once
Next
From: Bruce Momjian
Date:
Subject: Re: how do I check if a temporary table exists?