Add some more use of Page/PageData rather than char *

Discussion: https://www.postgresql.org/message-id/flat/692ee0da-49da-4d32-8dca-da224cc2800e@eisentraut.org
This commit is contained in:
Peter Eisentraut 2025-01-20 13:05:50 +01:00
parent 4f4a1d853a
commit 443a8e4ae3
2 changed files with 12 additions and 11 deletions

View File

@ -72,7 +72,7 @@ typedef struct
RelFileLocator rlocator; /* identifies the relation and block */ RelFileLocator rlocator; /* identifies the relation and block */
ForkNumber forkno; ForkNumber forkno;
BlockNumber block; BlockNumber block;
const char *page; /* page content */ const PageData *page; /* page content */
uint32 rdata_len; /* total length of data in rdata chain */ uint32 rdata_len; /* total length of data in rdata chain */
XLogRecData *rdata_head; /* head of the chain of data registered with XLogRecData *rdata_head; /* head of the chain of data registered with
* this block */ * this block */
@ -138,8 +138,8 @@ static XLogRecData *XLogRecordAssemble(RmgrId rmid, uint8 info,
XLogRecPtr RedoRecPtr, bool doPageWrites, XLogRecPtr RedoRecPtr, bool doPageWrites,
XLogRecPtr *fpw_lsn, int *num_fpi, XLogRecPtr *fpw_lsn, int *num_fpi,
bool *topxid_included); bool *topxid_included);
static bool XLogCompressBackupBlock(const char *page, uint16 hole_offset, static bool XLogCompressBackupBlock(const PageData *page, uint16 hole_offset,
uint16 hole_length, char *dest, uint16 *dlen); uint16 hole_length, void *dest, uint16 *dlen);
/* /*
* Begin constructing a WAL record. This must be called before the * Begin constructing a WAL record. This must be called before the
@ -307,7 +307,7 @@ XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags)
*/ */
void void
XLogRegisterBlock(uint8 block_id, RelFileLocator *rlocator, ForkNumber forknum, XLogRegisterBlock(uint8 block_id, RelFileLocator *rlocator, ForkNumber forknum,
BlockNumber blknum, const char *page, uint8 flags) BlockNumber blknum, const PageData *page, uint8 flags)
{ {
registered_buffer *regbuf; registered_buffer *regbuf;
@ -648,7 +648,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
if (include_image) if (include_image)
{ {
const char *page = regbuf->page; const PageData *page = regbuf->page;
uint16 compressed_len = 0; uint16 compressed_len = 0;
/* /*
@ -941,13 +941,13 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
* the length of compressed block image. * the length of compressed block image.
*/ */
static bool static bool
XLogCompressBackupBlock(const char *page, uint16 hole_offset, uint16 hole_length, XLogCompressBackupBlock(const PageData *page, uint16 hole_offset, uint16 hole_length,
char *dest, uint16 *dlen) void *dest, uint16 *dlen)
{ {
int32 orig_len = BLCKSZ - hole_length; int32 orig_len = BLCKSZ - hole_length;
int32 len = -1; int32 len = -1;
int32 extra_bytes = 0; int32 extra_bytes = 0;
const char *source; const void *source;
PGAlignedBlock tmp; PGAlignedBlock tmp;
if (hole_length != 0) if (hole_length != 0)

View File

@ -15,6 +15,7 @@
#include "access/xlogdefs.h" #include "access/xlogdefs.h"
#include "storage/block.h" #include "storage/block.h"
#include "storage/buf.h" #include "storage/buf.h"
#include "storage/bufpage.h"
#include "storage/relfilelocator.h" #include "storage/relfilelocator.h"
#include "utils/relcache.h" #include "utils/relcache.h"
@ -47,16 +48,16 @@ extern void XLogEnsureRecordSpace(int max_block_id, int ndatas);
extern void XLogRegisterData(const char *data, uint32 len); extern void XLogRegisterData(const char *data, uint32 len);
extern void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags); extern void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags);
extern void XLogRegisterBlock(uint8 block_id, RelFileLocator *rlocator, extern void XLogRegisterBlock(uint8 block_id, RelFileLocator *rlocator,
ForkNumber forknum, BlockNumber blknum, const char *page, ForkNumber forknum, BlockNumber blknum, const PageData *page,
uint8 flags); uint8 flags);
extern void XLogRegisterBufData(uint8 block_id, const char *data, uint32 len); extern void XLogRegisterBufData(uint8 block_id, const char *data, uint32 len);
extern void XLogResetInsertion(void); extern void XLogResetInsertion(void);
extern bool XLogCheckBufferNeedsBackup(Buffer buffer); extern bool XLogCheckBufferNeedsBackup(Buffer buffer);
extern XLogRecPtr log_newpage(RelFileLocator *rlocator, ForkNumber forknum, extern XLogRecPtr log_newpage(RelFileLocator *rlocator, ForkNumber forknum,
BlockNumber blkno, char *page, bool page_std); BlockNumber blkno, Page page, bool page_std);
extern void log_newpages(RelFileLocator *rlocator, ForkNumber forknum, int num_pages, extern void log_newpages(RelFileLocator *rlocator, ForkNumber forknum, int num_pages,
BlockNumber *blknos, char **pages, bool page_std); BlockNumber *blknos, Page *pages, bool page_std);
extern XLogRecPtr log_newpage_buffer(Buffer buffer, bool page_std); extern XLogRecPtr log_newpage_buffer(Buffer buffer, bool page_std);
extern void log_newpage_range(Relation rel, ForkNumber forknum, extern void log_newpage_range(Relation rel, ForkNumber forknum,
BlockNumber startblk, BlockNumber endblk, bool page_std); BlockNumber startblk, BlockNumber endblk, bool page_std);