Re: AW: [HACKERS] Another TEMP table trick - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: AW: [HACKERS] Another TEMP table trick
Date
Msg-id 199901310124.UAA01370@candle.pha.pa.us
Whole thread Raw
In response to Re: AW: [HACKERS] Another TEMP table trick  (Hannu Krosing <hannu@trust.ee>)
List pgsql-hackers
> Bruce Momjian wrote:
> >
> > > There could be a problem with GUI tools that rely on these rows
> > > to format their output (like pgaccess or ODBC --> M$ Access) though.
> > 
> > Oh, never thought of that.  A select of pg_class will return no rows for
> > that table because it is a temp table.
> 
> One more reson to move \d from psql to backend maybe with syntax like 
> Oracle's "DESC xxx" unless there is something in ANSI standard for that.
> 
> Or implement the ANSI system tables (I think there were some ;) and
> views.
> 
> Then the front-end tools can be advised to use these (and TEMP TABLES
> can 
> add rows to other (possibly structure-permanent) TEMP tables that are
> UNIONed 
> withe real pg_class to give them real values.
> > Or we can even implement just temp _rows_ for tables that exist in a 
> session only (maybe like in independant uncommitted transactions), 
> and add the info for temp tables to pg_class (and friends) as temp rows.

I have thought some more about it, and I now want to create proper
pg_class rows for the temp tables.

The temp tables are named pg_temp.$pid.$seqno.  What I am going to do
for the temp table is to add an _extra_ entry in the system cache for
the user-supplied name RELNAME lookup.  All other lookups of pg_class by
oid, and pg_attribute, etc use just the relid, which works without any
translation.

The advantage is that I can keep the system tables consistent, have less
code overhead, and allow things like sequential scans of pg_class see
the table, even though it will not be under the user-supplied name.

Most interfaces already don't display pg_* tables, so this will be OK. 
I will add a new relkind for the temp tables.  I will also now be able
to test in vacuum if the temp table was orphaned after a backend crash,
and delete it.

I will prevent psql \dS from displaying the temp tables.

Should be a few more days.
--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: "Cary O'Brien"
Date:
Subject: Backends and semaphores
Next
From: The Hermit Hacker
Date:
Subject: Re: [HACKERS] Reducing sema usage (was Postmaster dies with many child processes)