]> granicus.if.org Git - postgresql/commit
Ignore inherited temp relations from other sessions when truncating
authorMichael Paquier <michael@paquier.xyz>
Thu, 27 Dec 2018 01:17:13 +0000 (10:17 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 27 Dec 2018 01:17:13 +0000 (10:17 +0900)
commitd4486700b58387e6b4d0304a61d0d89f1031595c
tree43a3b0c48991399f54a92aaa5883d3ee2934547d
parent9939ea16c2dcf98e7fe05666ed3c3d547a655250
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
src/backend/commands/tablecmds.c
src/test/isolation/expected/inherit-temp.out [new file with mode: 0644]
src/test/isolation/isolation_schedule
src/test/isolation/specs/inherit-temp.spec [new file with mode: 0644]