mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	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:
		@@ -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;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user