diff options
Diffstat (limited to 'src/include/access/xlog.h')
| -rw-r--r-- | src/include/access/xlog.h | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index e4f9747de7..1b4fecdb96 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.79 2007/06/28 00:02:39 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.80 2007/06/30 19:12:02 tgl Exp $ */ #ifndef XLOG_H #define XLOG_H @@ -16,6 +16,7 @@ #include "lib/stringinfo.h" #include "storage/buf.h" #include "utils/pg_crc.h" +#include "utils/timestamp.h" /* @@ -150,6 +151,7 @@ extern char *XLogArchiveCommand; extern int XLogArchiveTimeout; extern char *XLOG_sync_method; extern const char XLOG_sync_method_default[]; +extern bool log_checkpoints; #define XLogArchivingActive() (XLogArchiveCommand[0] != '\0') @@ -157,12 +159,39 @@ extern const char XLOG_sync_method_default[]; extern bool XLOG_DEBUG; #endif -/* OR-able flags for RequestCheckpoint, CreateCheckPoint and subsidiaries */ +/* + * OR-able request flag bits for checkpoints. The "cause" bits are used only + * for logging purposes. Note: the flags must be defined so that it's + * sensible to OR together request flags arising from different requestors. + */ + +/* These directly affect the behavior of CreateCheckPoint and subsidiaries */ #define CHECKPOINT_IS_SHUTDOWN 0x0001 /* Checkpoint is for shutdown */ #define CHECKPOINT_IMMEDIATE 0x0002 /* Do it without delays */ #define CHECKPOINT_FORCE 0x0004 /* Force even if no activity */ -#define CHECKPOINT_WARNONTIME 0x0008 /* Enable CheckPointWarning */ -#define CHECKPOINT_WAIT 0x0010 /* Wait for completion */ +/* These are important to RequestCheckpoint */ +#define CHECKPOINT_WAIT 0x0008 /* Wait for completion */ +/* These indicate the cause of a checkpoint request */ +#define CHECKPOINT_CAUSE_XLOG 0x0010 /* XLOG consumption */ +#define CHECKPOINT_CAUSE_TIME 0x0020 /* Elapsed time */ + +/* Checkpoint statistics */ +typedef struct CheckpointStatsData +{ + TimestampTz ckpt_start_t; /* start of checkpoint */ + TimestampTz ckpt_write_t; /* start of flushing buffers */ + TimestampTz ckpt_sync_t; /* start of fsyncs */ + TimestampTz ckpt_sync_end_t; /* end of fsyncs */ + TimestampTz ckpt_end_t; /* end of checkpoint */ + + int ckpt_bufs_written; /* # of buffers written */ + + int ckpt_segs_added; /* # of new xlog segments created */ + int ckpt_segs_removed; /* # of xlog segments deleted */ + int ckpt_segs_recycled; /* # of xlog segments recycled */ +} CheckpointStatsData; + +extern CheckpointStatsData CheckpointStats; extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata); |
