2001-08-25 20:52:43 +02:00
|
|
|
/*
|
|
|
|
* rmgr.c
|
|
|
|
*
|
|
|
|
* Resource managers definition
|
|
|
|
*
|
Fix recently-understood problems with handling of XID freezing, particularly
in PITR scenarios. We now WAL-log the replacement of old XIDs with
FrozenTransactionId, so that such replacement is guaranteed to propagate to
PITR slave databases. Also, rather than relying on hint-bit updates to be
preserved, pg_clog is not truncated until all instances of an XID are known to
have been replaced by FrozenTransactionId. Add new GUC variables and
pg_autovacuum columns to allow management of the freezing policy, so that
users can trade off the size of pg_clog against the amount of freezing work
done. Revise the already-existing code that forces autovacuum of tables
approaching the wraparound point to make it more bulletproof; also, revise the
autovacuum logic so that anti-wraparound vacuuming is done per-table rather
than per-database. initdb forced because of changes in pg_class, pg_database,
and pg_autovacuum catalogs. Heikki Linnakangas, Simon Riggs, and Tom Lane.
2006-11-05 23:42:10 +01:00
|
|
|
* $PostgreSQL: pgsql/src/backend/access/transam/rmgr.c,v 1.25 2006/11/05 22:42:07 tgl Exp $
|
2001-08-25 20:52:43 +02:00
|
|
|
*/
|
1999-09-27 17:48:12 +02:00
|
|
|
#include "postgres.h"
|
2001-08-25 20:52:43 +02:00
|
|
|
|
2004-08-29 23:08:48 +02:00
|
|
|
#include "access/clog.h"
|
2006-07-11 19:26:59 +02:00
|
|
|
#include "access/gin.h"
|
2005-05-17 05:34:18 +02:00
|
|
|
#include "access/gist_private.h"
|
2000-11-21 22:16:06 +01:00
|
|
|
#include "access/hash.h"
|
|
|
|
#include "access/heapam.h"
|
2005-06-08 17:50:28 +02:00
|
|
|
#include "access/multixact.h"
|
2000-11-21 22:16:06 +01:00
|
|
|
#include "access/nbtree.h"
|
|
|
|
#include "access/xact.h"
|
2004-07-22 00:31:26 +02:00
|
|
|
#include "access/xlog_internal.h"
|
2004-08-29 23:08:48 +02:00
|
|
|
#include "commands/dbcommands.h"
|
2000-11-30 02:47:33 +01:00
|
|
|
#include "commands/sequence.h"
|
2004-08-29 23:08:48 +02:00
|
|
|
#include "commands/tablespace.h"
|
|
|
|
#include "storage/smgr.h"
|
2000-10-21 17:43:36 +02:00
|
|
|
|
2001-08-25 20:52:43 +02:00
|
|
|
|
2004-07-22 00:31:26 +02:00
|
|
|
const RmgrData RmgrTable[RM_MAX_ID + 1] = {
|
2006-08-07 18:57:57 +02:00
|
|
|
{"XLOG", xlog_redo, xlog_desc, NULL, NULL, NULL},
|
|
|
|
{"Transaction", xact_redo, xact_desc, NULL, NULL, NULL},
|
|
|
|
{"Storage", smgr_redo, smgr_desc, NULL, NULL, NULL},
|
|
|
|
{"CLOG", clog_redo, clog_desc, NULL, NULL, NULL},
|
|
|
|
{"Database", dbase_redo, dbase_desc, NULL, NULL, NULL},
|
|
|
|
{"Tablespace", tblspc_redo, tblspc_desc, NULL, NULL, NULL},
|
|
|
|
{"MultiXact", multixact_redo, multixact_desc, NULL, NULL, NULL},
|
|
|
|
{"Reserved 7", NULL, NULL, NULL, NULL, NULL},
|
|
|
|
{"Reserved 8", NULL, NULL, NULL, NULL, NULL},
|
Fix recently-understood problems with handling of XID freezing, particularly
in PITR scenarios. We now WAL-log the replacement of old XIDs with
FrozenTransactionId, so that such replacement is guaranteed to propagate to
PITR slave databases. Also, rather than relying on hint-bit updates to be
preserved, pg_clog is not truncated until all instances of an XID are known to
have been replaced by FrozenTransactionId. Add new GUC variables and
pg_autovacuum columns to allow management of the freezing policy, so that
users can trade off the size of pg_clog against the amount of freezing work
done. Revise the already-existing code that forces autovacuum of tables
approaching the wraparound point to make it more bulletproof; also, revise the
autovacuum logic so that anti-wraparound vacuuming is done per-table rather
than per-database. initdb forced because of changes in pg_class, pg_database,
and pg_autovacuum catalogs. Heikki Linnakangas, Simon Riggs, and Tom Lane.
2006-11-05 23:42:10 +01:00
|
|
|
{"Heap2", heap2_redo, heap2_desc, NULL, NULL, NULL},
|
2006-08-07 18:57:57 +02:00
|
|
|
{"Heap", heap_redo, heap_desc, NULL, NULL, NULL},
|
|
|
|
{"Btree", btree_redo, btree_desc, btree_xlog_startup, btree_xlog_cleanup, btree_safe_restartpoint},
|
|
|
|
{"Hash", hash_redo, hash_desc, NULL, NULL, NULL},
|
|
|
|
{"Gin", gin_redo, gin_desc, gin_xlog_startup, gin_xlog_cleanup, gin_safe_restartpoint},
|
|
|
|
{"Gist", gist_redo, gist_desc, gist_xlog_startup, gist_xlog_cleanup, gist_safe_restartpoint},
|
|
|
|
{"Sequence", seq_redo, seq_desc, NULL, NULL, NULL}
|
2000-10-21 17:43:36 +02:00
|
|
|
};
|