mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Generalize concept of temporary relations to "relation persistence".
This commit replaces pg_class.relistemp with pg_class.relpersistence; and also modifies the RangeVar node type to carry relpersistence rather than istemp. It also removes removes rd_istemp from RelationData and instead performs the correct computation based on relpersistence. For clarity, we add three new macros: RelationNeedsWAL(), RelationUsesLocalBuffers(), and RelationUsesTempNamespace(), so that we can clarify the purpose of each check that previous depended on rd_istemp. This is intended as infrastructure for the upcoming unlogged tables patch, as well as for future possible work on global temporary tables.
This commit is contained in:
		@@ -1050,8 +1050,8 @@ assign_default_tablespace(const char *newval, bool doit, GucSource source)
 | 
			
		||||
/*
 | 
			
		||||
 * GetDefaultTablespace -- get the OID of the current default tablespace
 | 
			
		||||
 *
 | 
			
		||||
 * Regular objects and temporary objects have different default tablespaces,
 | 
			
		||||
 * hence the forTemp parameter must be specified.
 | 
			
		||||
 * Temporary objects have different default tablespaces, hence the
 | 
			
		||||
 * relpersistence parameter must be specified.
 | 
			
		||||
 *
 | 
			
		||||
 * May return InvalidOid to indicate "use the database's default tablespace".
 | 
			
		||||
 *
 | 
			
		||||
@@ -1062,12 +1062,12 @@ assign_default_tablespace(const char *newval, bool doit, GucSource source)
 | 
			
		||||
 * default_tablespace GUC variable.
 | 
			
		||||
 */
 | 
			
		||||
Oid
 | 
			
		||||
GetDefaultTablespace(bool forTemp)
 | 
			
		||||
GetDefaultTablespace(char relpersistence)
 | 
			
		||||
{
 | 
			
		||||
	Oid			result;
 | 
			
		||||
 | 
			
		||||
	/* The temp-table case is handled elsewhere */
 | 
			
		||||
	if (forTemp)
 | 
			
		||||
	if (relpersistence == RELPERSISTENCE_TEMP)
 | 
			
		||||
	{
 | 
			
		||||
		PrepareTempTablespaces();
 | 
			
		||||
		return GetNextTempTableSpace();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user