diff options
author | Jeff Davis <jdavis@postgresql.org> | 2022-04-08 00:02:10 -0700 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2022-04-08 00:26:44 -0700 |
commit | 2258e76f90bf0254504644df0515cddc0c0a87f9 (patch) | |
tree | 3b88e93614a4e065aa4cbf2d6ff3be25052d0822 /src/include/access | |
parent | 708007dced2b05ed9b4f1963e91b2eb67413bd19 (diff) | |
download | postgresql-2258e76f90bf0254504644df0515cddc0c0a87f9.tar.gz postgresql-2258e76f90bf0254504644df0515cddc0c0a87f9.zip |
Add contrib/pg_walinspect.
Provides similar functionality to pg_waldump, but from a SQL interface
rather than a separate utility.
Author: Bharath Rupireddy
Reviewed-by: Greg Stark, Kyotaro Horiguchi, Andres Freund, Ashutosh Sharma, Nitin Jadhav, RKN Sai Krishna
Discussion: https://postgr.es/m/CALj2ACUGUYXsEQdKhEdsBzhGEyF3xggvLdD8C0VT72TNEfOiog%40mail.gmail.com
Diffstat (limited to 'src/include/access')
-rw-r--r-- | src/include/access/xlog.h | 2 | ||||
-rw-r--r-- | src/include/access/xlog_internal.h | 6 | ||||
-rw-r--r-- | src/include/access/xlogreader.h | 2 | ||||
-rw-r--r-- | src/include/access/xlogstats.h | 40 | ||||
-rw-r--r-- | src/include/access/xlogutils.h | 4 |
5 files changed, 50 insertions, 4 deletions
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index e302bd102cd..5e1e3446aed 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -31,7 +31,7 @@ extern XLogRecPtr XactLastRecEnd; extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd; /* these variables are GUC parameters related to XLOG */ -extern int wal_segment_size; +extern PGDLLIMPORT int wal_segment_size; extern int min_wal_size_mb; extern int max_wal_size_mb; extern int wal_keep_size_mb; diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h index d9df7f295d5..750f6341205 100644 --- a/src/include/access/xlog_internal.h +++ b/src/include/access/xlog_internal.h @@ -320,7 +320,7 @@ typedef struct RmgrData struct XLogRecordBuffer *buf); } RmgrData; -extern RmgrData RmgrTable[]; +extern PGDLLIMPORT RmgrData RmgrTable[]; extern void RmgrStartup(void); extern void RmgrCleanup(void); extern void RmgrNotFound(RmgrId rmid); @@ -350,6 +350,10 @@ extern XLogRecPtr RequestXLogSwitch(bool mark_unimportant); extern void GetOldestRestartPoint(XLogRecPtr *oldrecptr, TimeLineID *oldtli); +extern void XLogRecGetBlockRefInfo(XLogReaderState *record, bool pretty, + bool detailed_format, StringInfo buf, + uint32 *fpi_len); + /* * Exported for the functions in timeline.c and xlogarchive.c. Only valid * in the startup process. diff --git a/src/include/access/xlogreader.h b/src/include/access/xlogreader.h index d8eb8576110..727e9fe9718 100644 --- a/src/include/access/xlogreader.h +++ b/src/include/access/xlogreader.h @@ -344,9 +344,7 @@ extern void XLogReaderSetDecodeBuffer(XLogReaderState *state, /* Position the XLogReader to given record */ extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr); -#ifdef FRONTEND extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr); -#endif /* FRONTEND */ /* Return values from XLogPageReadCB. */ typedef enum XLogPageReadResult diff --git a/src/include/access/xlogstats.h b/src/include/access/xlogstats.h new file mode 100644 index 00000000000..453bb1f4913 --- /dev/null +++ b/src/include/access/xlogstats.h @@ -0,0 +1,40 @@ +/*------------------------------------------------------------------------- + * + * xlogstats.h + * Definitions for WAL Statitstics + * + * Copyright (c) 2022, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/include/access/xlogstats.h + * + *------------------------------------------------------------------------- + */ +#ifndef XLOGSTATS_H +#define XLOGSTATS_H + +#define MAX_XLINFO_TYPES 16 + +typedef struct XLogRecStats +{ + uint64 count; + uint64 rec_len; + uint64 fpi_len; +} XLogRecStats; + +typedef struct XLogStats +{ + uint64 count; +#ifdef FRONTEND + XLogRecPtr startptr; + XLogRecPtr endptr; +#endif + XLogRecStats rmgr_stats[RM_MAX_ID + 1]; + XLogRecStats record_stats[RM_MAX_ID + 1][MAX_XLINFO_TYPES]; +} XLogStats; + +extern void XLogRecGetLen(XLogReaderState *record, uint32 *rec_len, + uint32 *fpi_len); +extern void XLogRecStoreStats(XLogStats *stats, XLogReaderState *record); + +#endif /* XLOGSTATS_H */ diff --git a/src/include/access/xlogutils.h b/src/include/access/xlogutils.h index ff40f96e423..3746e31e40f 100644 --- a/src/include/access/xlogutils.h +++ b/src/include/access/xlogutils.h @@ -93,6 +93,10 @@ extern void FreeFakeRelcacheEntry(Relation fakerel); extern int read_local_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *cur_page); +extern int read_local_xlog_page_no_wait(XLogReaderState *state, + XLogRecPtr targetPagePtr, int reqLen, + XLogRecPtr targetRecPtr, + char *cur_page); extern void wal_segment_open(XLogReaderState *state, XLogSegNo nextSegNo, TimeLineID *tli_p); |