pgsql: Ignore inherited temp relations from other sessions whentruncat - Mailing list pgsql-committers

From Michael Paquier
Subject pgsql: Ignore inherited temp relations from other sessions whentruncat
Date
Msg-id E1gcKL4-0005Cn-Bp@gemulon.postgresql.org
Whole thread Raw
List 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 work on the 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
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/1e504f01da11db0181d7b28bb30cb5eeb0767184

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(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix failure to check for open() or fsync() failures.
Next
From: Alexander Korotkov
Date:
Subject: pgsql: Remove entry tree root conflict checking from GIN predicatelock