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:
parent
8fb9aa0874
commit
9fc9933695
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user