mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Widen xl_len field of XLogRecord header to 32 bits, so that we'll have
a more tolerable limit on the number of subtransactions or deleted files in COMMIT and ABORT records. Buy back the extra space by eliminating the xl_xact_prev field, which isn't being used for anything and is rather unlikely ever to be used for anything. This does not force initdb, but you do need to do pg_resetxlog if you want to upgrade an existing 8.0 installation without initdb.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.57 2004/08/29 05:06:55 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.58 2004/08/29 16:34:48 tgl Exp $
|
||||
*/
|
||||
#ifndef XLOG_H
|
||||
#define XLOG_H
|
||||
@@ -35,18 +35,18 @@ typedef struct XLogRecord
|
||||
{
|
||||
crc64 xl_crc; /* CRC for this record */
|
||||
XLogRecPtr xl_prev; /* ptr to previous record in log */
|
||||
XLogRecPtr xl_xact_prev; /* ptr to previous record of this xact */
|
||||
TransactionId xl_xid; /* xact id */
|
||||
uint16 xl_len; /* total len of rmgr data */
|
||||
uint32 xl_len; /* total len of rmgr data */
|
||||
uint8 xl_info; /* flag bits, see below */
|
||||
RmgrId xl_rmid; /* resource manager for this record */
|
||||
|
||||
/* Depending on MAXALIGN, there are either 2 or 6 wasted bytes here */
|
||||
|
||||
/* ACTUAL LOG DATA FOLLOWS AT END OF STRUCT */
|
||||
|
||||
} XLogRecord;
|
||||
|
||||
#define SizeOfXLogRecord MAXALIGN(sizeof(XLogRecord))
|
||||
#define MAXLOGRECSZ 65535 /* the most that'll fit in xl_len */
|
||||
|
||||
#define XLogRecGetData(record) ((char*) (record) + SizeOfXLogRecord)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user