Vyacheslav Kalinin <vka@mgcp.com> writes:
>> They're just there to hold temporary tables (so that the names of such
>> tables don't conflict with any non-temporary tables). The reason they
>> seem to accumulate is we only create one when needed, and there's one
>> for each concurrently executing backend if it creates any temp tables.
> Hm, do they get garbage-collected in any way? I have several such schemes
> that won't disappear even though no other sessions but one is there.
No, that would just be a waste of cycles since they'll be needed again
eventually. The steady-state situation should be that you have
max_connections of them, more or less, if you ever get up to
max_connections live connections.
> On a side note: I can drop temporary tables of other sessions via "DROP
> pg_temp_xx.table" (although I can't seem to affect table data seen from
> other session). Is there any security issues/gotchas here?
If you can do that without being superuser, I'd take an interest.
Otherwise the answer is "don't do that".
regards, tom lane