mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Rewrite the FSM. Instead of relying on a fixed-size shared memory segment, the
free space information is stored in a dedicated FSM relation fork, with each relation (except for hash indexes; they don't use FSM). This eliminates the max_fsm_relations and max_fsm_pages GUC options; remove any trace of them from the backend, initdb, and documentation. Rewrite contrib/pg_freespacemap to match the new FSM implementation. Also introduce a new variant of the get_raw_page(regclass, int4, int4) function in contrib/pageinspect that let's you to return pages from any relation fork, and a new fsm_page_contents() function to inspect the new FSM pages.
This commit is contained in:
		@@ -7,7 +7,7 @@
 | 
			
		||||
 * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
 | 
			
		||||
 * Portions Copyright (c) 1994, Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * $PostgreSQL: pgsql/src/include/utils/rel.h,v 1.107 2008/06/19 00:46:06 alvherre Exp $
 | 
			
		||||
 * $PostgreSQL: pgsql/src/include/utils/rel.h,v 1.108 2008/09/30 10:52:14 heikki Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@@ -195,6 +195,9 @@ typedef struct RelationData
 | 
			
		||||
	List	   *rd_indpred;		/* index predicate tree, if any */
 | 
			
		||||
	void	   *rd_amcache;		/* available for use by index AM */
 | 
			
		||||
 | 
			
		||||
	/* Cached last-seen size of the FSM */
 | 
			
		||||
	BlockNumber	rd_fsm_nblocks_cache;
 | 
			
		||||
 | 
			
		||||
	/* use "struct" here to avoid needing to include pgstat.h: */
 | 
			
		||||
	struct PgStat_TableStatus *pgstat_info;		/* statistics collection area */
 | 
			
		||||
} RelationData;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user