Re: temporary views - Mailing list pgsql-sql

From Bruce Momjian
Subject Re: temporary views
Date
Msg-id 200110080323.f983NJn04420@candle.pha.pa.us
Whole thread Raw
In response to Re: temporary views  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
> Peter Eisentraut <peter_e@gmx.net> writes:
> > Bruce Momjian writes:
> >> * Allow views on temporary tables to behave as temporary views
> 
> > I don't think this is a good idea.  Especially since our temp tables are
> > allowed to shadow persistent tables, it would not be obvious whether the
> > view you're creating with any given statement will become persistent or
> > temporary.
> 
> > I think an explicit CREATE TEMPORARY VIEW command would be fair and safe,
> > but until that is done we should probably concentrate on the SQL standard
> > behaviour.
> 
> I agree with Peter on this --- CREATE TEMP VIEW seems like a fine idea,
> but allowing views to be implicitly made temporary sounds like a good
> way to shoot yourself in the foot.  ISTM a plain CREATE VIEW should
> always create a permanent object, and therefore should error out if it
> refers to any temp tables.

We can handle the temp views thing two ways, either allow views to map
to temp tables by name, or allow temp views to map to temp tables that
exist at creation time and drop the views on session exit.  The original
poster clearly wanted the first behavior, but I agree with Peter that
the second has fewer surprises for the user and is more standard.

I have updated the TODO item to:
* Allow temporary views

> However, there are some interesting implications here for the recurring
> issue of how plpgsql functions ought to interact with temp tables.
> We've generally thought of the current behavior as a simple shortcoming
> of plpgsql's query caching logic, and no doubt it is --- but what
> *should* the behavior be?  Can a long-lived function validly refer to
> short-lived tables?  If so, what should the semantics be, exactly?

It would be interesting of plpgsql could try for an table match by oid
first, and if that fails, try a match by table name and match only if a
temp table is hit.  So basically the only table-name matching that would
happen would be hits on temp tables.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@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-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: temporary views
Next
From: Janning Vygen
Date:
Subject: Re: Problem with n to n relation