pgsql: Have DISCARD ALL/TEMP remove leftover temp tables

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Have DISCARD ALL/TEMP remove leftover temp tables
Date: 2018-12-27 19:20:09
Message-ID: E1gcbCT-0001La-Qm@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Have DISCARD ALL/TEMP remove leftover temp tables

Previously, it would only remove temp tables created in the same
session; but if the session uses the BackendId of a previously crashed
backend that left temp tables around, those would not get removed.
Since autovacuum would not drop them either (because it sees that the
BackendId is in use by the current session) these can cause annoying
xid-wraparound warnings.

Apply to branches 9.4 to 10. This is not a problem since version 11,
because commit 943576bddcb5 added state tracking that makes autovacuum
realize that those temp tables are not ours, so it removes them.

This is useful to handle in DISCARD, because even though it does not
handle all situations, it does handle the common one where a connection
pooler keeps the same session open for an indefinitely long time.

Discussion: https://postgr.es/m/20181226190834.wsk2wzott5yzrjiq@alvherre.pgsql
Reviewed-by: Takayuki Tsunakawa, Michaël Paquier

Branch
------
REL9_4_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/2602838fa33824a0803f3b1f3814889ac7e93192

Modified Files
--------------
src/backend/catalog/namespace.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Alexander Korotkov 2018-12-28 00:44:15 pgsql: Reduce length of GIN predicate locking isolation test suite
Previous Message Alvaro Herrera 2018-12-27 19:04:16 pgsql: Make autovacuum more selective about temp tables to keep