Re: Way to identify the current session's temp tables within pg_class ?

From: Marc Mamin <M(dot)Mamin(at)intershop(dot)de>
To: "'Michael Paquier'" <michael(dot)paquier(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Way to identify the current session's temp tables within pg_class ?
Date: 2014-08-25 13:03:56
Message-ID: B6F6FD62F2624C4C9916AC0175D56D8828AC90B3@jenmbs01.ad.intershop.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> -----Original Message-----
> From: Michael Paquier [mailto:michael(dot)paquier(at)gmail(dot)com]
> On Mon, Aug 25, 2014 at 7:48 PM, Marc Mamin <M(dot)Mamin(at)intershop(dot)de>
> wrote:
> > Hello,
> >
> > When different sessions create temp tables with the same name:
> > How can I identify the oid of the one created within the current
> session ?
>
> You can use pg_my_temp_schema for this purpose. It returns the OID of
> the schema where temporary objects are stored for a given session.
> Note that this returns InvalidOid if no temporary objects are defined.

thanks,

I've also notice that ::regclass only returns the oid of the "accessible" table.
It is sufficient for my need, although it doesn't tell whether the table is temporary or not:

SELECT * FROM pg_class where oid='foo'::regclass

regards,

marc

> Here is an example:
> =# select pg_my_temp_schema();
> pg_my_temp_schema
> -------------------
> 0
> (1 row)
> =# create temp table aa (a int);
> CREATE TABLE
> =# SELECT nspname FROM pg_namespace WHERE oid = pg_my_temp_schema();
> nspname
> -----------
> pg_temp_4
> (1 row)
>
> Regards,
> --
> Michael

In response to

Browse pgsql-general by date

  From Date Subject
Next Message W. Matthew Wilson 2014-08-25 13:32:11 Re: How to insert either a value or the column default?
Previous Message Albe Laurenz 2014-08-25 13:03:15 Re: Using fmgr_hook