diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-07-19 02:12:35 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-07-19 02:12:35 +0000 |
commit | 7d4d5c00f00efaf935e35067375d43d9e72f5e03 (patch) | |
tree | 8e9cbb6e3e7e73274e2e06797e7f68f8ebade86d /src/include | |
parent | 8b77efddedf1fd6b06d35687ec18ac07bc8eb74b (diff) |
Arrange to recycle old XLOG log segment files as new segment files,
rather than deleting them only to have to create more. Steady state
is 2*CHECKPOINT_SEGMENTS + WAL_FILES + 1 segment files, which will
simply be renamed rather than constantly deleted and recreated.
To make this safe, added current XLOG file/offset number to page
header of XLOG pages, so that an un-overwritten page from an old
incarnation of a logfile can be reliably told from a valid page.
This change means that if you try to restart postmaster in a CVS-tip
database after installing the change, you'll get a complaint about
bad XLOG page magic number. If you don't want to initdb, run
contrib/pg_resetxlog (and be sure you shut down the old postmaster
cleanly).
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/access/xlog.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 41a8d84dade..73a60b2e0ce 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: xlog.h,v 1.23 2001/03/22 04:00:32 momjian Exp $ + * $Id: xlog.h,v 1.24 2001/07/19 02:12:35 tgl Exp $ */ #ifndef XLOG_H #define XLOG_H @@ -109,13 +109,14 @@ typedef struct XLogContRecord /* * Each page of XLOG file has a header like this: */ -#define XLOG_PAGE_MAGIC 0xD058 /* can be used as WAL version indicator */ +#define XLOG_PAGE_MAGIC 0xD059 /* can be used as WAL version indicator */ typedef struct XLogPageHeaderData { uint16 xlp_magic; /* magic value for correctness checks */ uint16 xlp_info; /* flag bits, see below */ StartUpID xlp_sui; /* StartUpID of first record on page */ + XLogRecPtr xlp_pageaddr; /* XLOG address of this page */ } XLogPageHeaderData; #define SizeOfXLogPHD MAXALIGN(sizeof(XLogPageHeaderData)) |