“On commit drop” is generally good practice for several reasons: if your 
function is called in a loop, or the create statement is in a loop or you want 
to call your function more than once in a given session (with out explicitly 
dropping your temp table).
The commit in question is the function btw. 

> On Jan 28, 2018, at 8:53 AM, Andy Colson <a...@squeakycode.net> wrote:
> 
>> On 01/28/2018 08:46 AM, Ryan Murphy wrote:
>>    I believe the main, and maybe only, concern is the bloating of the system 
>> catalog tables since you are constantly adding and removing records.  Yes, 
>> they will be vacuumed but vacuuming and bloat on catalog tables slows every 
>> single query down to some, degree since every query has to lookup its 
>> objects is those catalogs.  Though caching probably alleviates some of that
>> Yes, that's exactly the concern I heard, thanks for reminding me.
>> If I want to e.g. temporarily store a "setof records" or a "table" result in 
>> a variable as part of a calculation in a plpgsql function, do I have any 
>> other option than CREATE TEMPORARY TABLE?  It didn't seem to work when I 
>> DECLAREd a variable of type "setof table_name" or "setof 
>> table_name%rowtype", and then SELECT INTO it.
> 
> You may not need temp tables at all.  You can use subselects, derived tables, 
> and cte's:
> 
> select sum(a+b) as total
> from (
>   select a, b+1
>   from detail
> ) as tmpx;
> 
> 
> This does the same thing as a temp table, with no temp table.
> 
> -Andy
> 

Reply via email to