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.
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?
regards, tom lane