blob: 9d35a72bdf891f9e1db0dfec03ccc5f3c5e111db [file] [log] [blame]
/*-------------------------------------------------------------------------
*
* twophase_xlog.h
* Two-phase-commit state file.
*
*
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/access/twophase_xlog.h
*
*-------------------------------------------------------------------------
*/
#ifndef TWOPHASE_XLOG_H
#define TWOPHASE_XLOG_H
/* GPDB-specific: TwoPhaseFileHeader is defined in twophase.c in Postgres */
/*
* Header for a 2PC state file
*/
typedef struct TwoPhaseFileHeader
{
uint32 magic; /* format identifier */
uint32 total_len; /* actual file length */
TransactionId xid; /* original transaction XID */
Oid database; /* OID of database it was in */
TimestampTz prepared_at; /* time of preparation */
Oid owner; /* user running the transaction */
int32 nsubxacts; /* number of following subxact XIDs */
int32 ncommitrels; /* number of delete-on-commit rels */
int32 nabortrels; /* number of delete-on-abort rels */
int32 ncommitdbs; /* number of delete-on-commit dbs */
int32 nabortdbs; /* number of delete-on-abort dbs */
int32 ncommitstats; /* number of stats to drop on commit */
int32 nabortstats; /* number of stats to drop on abort */
int32 ninvalmsgs; /* number of cache invalidation messages */
bool initfileinval; /* does relcache init file need invalidation? */
Oid tablespace_oid_to_delete_on_abort;
Oid tablespace_oid_to_delete_on_commit;
uint16 gidlen; /* length of the GID - GID follows the header */
XLogRecPtr origin_lsn; /* lsn of this record at origin node */
TimestampTz origin_timestamp; /* time of prepare at origin node */
} TwoPhaseFileHeader;
#endif /* TWOPHASE_H */