mirror of
https://github.com/postgres/postgres.git
synced 2025-10-29 22:49:41 +03:00
redo/undo support functions and cleanups.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: htup.h,v 1.35 2000/09/07 09:58:35 vadim Exp $
|
||||
* $Id: htup.h,v 1.36 2000/10/20 11:01:14 vadim Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -95,7 +95,7 @@ typedef struct xl_heap_delete
|
||||
xl_heaptid target; /* deleted tuple id */
|
||||
} xl_heap_delete;
|
||||
|
||||
#define SizeOfHeapDelete (offsetof(xl_heaptid, tid) + SizeOfIptrData))
|
||||
#define SizeOfHeapDelete (offsetof(xl_heaptid, tid) + SizeOfIptrData)
|
||||
|
||||
/* This is what we need to know about insert - 26 + data */
|
||||
typedef struct xl_heap_insert
|
||||
@@ -111,12 +111,13 @@ typedef struct xl_heap_insert
|
||||
|
||||
#define SizeOfHeapInsert (offsetof(xl_heap_insert, mask) + sizeof(uint8))
|
||||
|
||||
/* This is what we need to know about update - 28 + data */
|
||||
/* This is what we need to know about update - 32 + data */
|
||||
typedef struct xl_heap_update
|
||||
{
|
||||
xl_heaptid target; /* deleted tuple id */
|
||||
ItemPointerData newtid; /* new inserted tuple id */
|
||||
/* something from header of new tuple version */
|
||||
Oid t_oid;
|
||||
int16 t_natts;
|
||||
uint8 t_hoff;
|
||||
uint8 mask; /* low 8 bits of t_infomask */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: xact.h,v 1.27 2000/07/28 01:04:40 tgl Exp $
|
||||
* $Id: xact.h,v 1.28 2000/10/20 11:01:14 vadim Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -78,6 +78,35 @@ typedef TransactionStateData *TransactionState;
|
||||
(*((TransactionId*) (dest)) = NullTransactionId)
|
||||
|
||||
|
||||
#ifdef XLOG
|
||||
|
||||
/*
|
||||
* XLOG allows to store some information in high 4 bits of log
|
||||
* record xl_info field
|
||||
*/
|
||||
#define XLOG_XACT_COMMIT 0x00
|
||||
#define XLOG_XACT_ABORT 0x20
|
||||
|
||||
typedef struct xl_xact_commit
|
||||
{
|
||||
time_t xtime;
|
||||
/*
|
||||
* Array of RelFileNode-s to drop may follow
|
||||
* at the end of struct
|
||||
*/
|
||||
} xl_xact_commit;
|
||||
|
||||
#define SizeOfXactCommit ((offsetof(xl_xact_commit, xtime) + sizeof(time_t)))
|
||||
|
||||
typedef struct xl_xact_abort
|
||||
{
|
||||
time_t xtime;
|
||||
} xl_xact_abort;
|
||||
|
||||
#define SizeOfXactAbort ((offsetof(xl_xact_abort, xtime) + sizeof(time_t)))
|
||||
|
||||
#endif
|
||||
|
||||
/* ----------------
|
||||
* extern definitions
|
||||
* ----------------
|
||||
@@ -108,6 +137,9 @@ extern void AbortOutOfAnyTransaction(void);
|
||||
|
||||
extern TransactionId DisabledTransactionId;
|
||||
|
||||
extern void XactPushRollback(void (*func) (void *), void* data);
|
||||
extern void XactPopRollback(void);
|
||||
|
||||
/* defined in xid.c */
|
||||
extern Datum xidin(PG_FUNCTION_ARGS);
|
||||
extern Datum xidout(PG_FUNCTION_ARGS);
|
||||
|
||||
@@ -72,12 +72,24 @@ typedef XLogPageHeaderData *XLogPageHeader;
|
||||
|
||||
#define XLP_FIRST_IS_SUBRECORD 0x0001
|
||||
|
||||
#define XLByteLT(left, right) \
|
||||
(right.xlogid > left.xlogid || \
|
||||
(right.xlogid == left.xlogid && right.xrecoff > left.xrecoff))
|
||||
|
||||
#define XLByteLE(left, right) \
|
||||
(right.xlogid > left.xlogid || \
|
||||
(right.xlogid == left.xlogid && right.xrecoff >= left.xrecoff))
|
||||
|
||||
#define XLByteEQ(left, right) \
|
||||
(right.xlogid == left.xlogid && right.xrecoff == left.xrecoff)
|
||||
|
||||
/*
|
||||
* StartUpID (SUI) - system startups counter.
|
||||
* It's to allow removing pg_log after shutdown.
|
||||
*/
|
||||
typedef uint32 StartUpID;
|
||||
extern StartUpID ThisStartUpID;
|
||||
extern bool InRecovery;
|
||||
|
||||
extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info,
|
||||
char *hdr, uint32 hdrlen,
|
||||
|
||||
Reference in New Issue
Block a user