/*-------------------------------------------------------------------------
 *
 * xlogstats.h
 *		Definitions for WAL Statistics
 *
 * Copyright (c) 2022-2023, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
 *		src/include/access/xlogstats.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef XLOGSTATS_H
#define XLOGSTATS_H

#include "access/rmgr.h"
#include "access/xlogreader.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 */
