Clarify comment about assignment and reset of temp namespace ID in MyProc

The new wording comes from Álvaro, which I modified a bit.

Reported-by: Andres Freund, Álvaro Herrera
Author: Álvaro Herrera, Michael Paquier
Discussion: https://postgr.es/m/20180809165047.GK13638@paquier.xyz
Backpatch-through: 11
This commit is contained in:
Michael Paquier 2018-08-21 08:32:18 +09:00
parent f3efef434f
commit 1339fcc896
1 changed files with 16 additions and 10 deletions

View File

@ -3938,8 +3938,10 @@ InitTempTableNamespace(void)
* decide if a temporary namespace is in use or not. We assume that * decide if a temporary namespace is in use or not. We assume that
* assignment of namespaceId is an atomic operation. Even if it is not, * assignment of namespaceId is an atomic operation. Even if it is not,
* the temporary relation which resulted in the creation of this temporary * the temporary relation which resulted in the creation of this temporary
* namespace is still locked until the current transaction commits, so it * namespace is still locked until the current transaction commits, and
* would not be accessible yet, acting as a barrier. * its pg_namespace row is not visible yet. However it does not matter:
* this flag makes the namespace as being in use, so no objects created on
* it would be removed concurrently.
*/ */
MyProc->tempNamespaceId = namespaceId; MyProc->tempNamespaceId = namespaceId;
@ -3976,10 +3978,12 @@ AtEOXact_Namespace(bool isCommit, bool parallel)
/* /*
* Reset the temporary namespace flag in MyProc. We assume that * Reset the temporary namespace flag in MyProc. We assume that
* this operation is atomic. Even if it is not, the temporary * this operation is atomic.
* table which created this namespace is still locked until this *
* transaction aborts so it would not be visible yet, acting as a * Because this transaction is aborting, the pg_namespace row is
* barrier. * not visible to anyone else anyway, but that doesn't matter:
* it's not a problem if objects contained in this namespace are
* removed concurrently.
*/ */
MyProc->tempNamespaceId = InvalidOid; MyProc->tempNamespaceId = InvalidOid;
} }
@ -4037,10 +4041,12 @@ AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid,
/* /*
* Reset the temporary namespace flag in MyProc. We assume that * Reset the temporary namespace flag in MyProc. We assume that
* this operation is atomic. Even if it is not, the temporary * this operation is atomic.
* table which created this namespace is still locked until this *
* transaction aborts so it would not be visible yet, acting as a * Because this subtransaction is aborting, the pg_namespace row
* barrier. * is not visible to anyone else anyway, but that doesn't matter:
* it's not a problem if objects contained in this namespace are
* removed concurrently.
*/ */
MyProc->tempNamespaceId = InvalidOid; MyProc->tempNamespaceId = InvalidOid;
} }