pgsql: Ignore inherited temp relations from other sessions when truncat

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Ignore inherited temp relations from other sessions when truncat
Date: 2018-12-27 01:19:54
Message-ID: E1gcKL4-0005Ct-Cj@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Ignore inherited temp relations from other sessions when truncating

Inheritance trees can include temporary tables if the parent is
permanent, which makes possible the presence of multiple temporary
children from different sessions. Trying to issue a TRUNCATE on the
parent in this scenario causes a failure, so similarly to any other
queries just ignore such cases, which makes TRUNCATE work
transparently.

This makes truncation behave similarly to any other DML query working on
the parent table with queries which need to be issues on children. A
set of isolation tests is added to cover basic cases.

Reported-by: Zhou Digoal
Author: Amit Langote, Michael Paquier
Discussion: https://postgr.es/m/15565-ce67a48d0244436a@postgresql.org
Backpatch-through: 9.4

Branch
------
REL9_6_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/285abc8df4d7741fc4e303fb6a906a364345ebbe

Modified Files
--------------
src/backend/commands/tablecmds.c | 23 ++-
src/test/isolation/expected/inherit-temp.out | 217 +++++++++++++++++++++++++++
src/test/isolation/isolation_schedule | 1 +
src/test/isolation/specs/inherit-temp.spec | 78 ++++++++++
4 files changed, 316 insertions(+), 3 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Alexander Korotkov 2018-12-27 01:25:17 pgsql: Remove entry tree root conflict checking from GIN predicate lock
Previous Message Michael Paquier 2018-12-27 01:09:18 Re: pgsql: Fix failure to check for open() or fsync() failures.