/* Action types */ #define GIN_SEGMENT_UNMODIFIED 0/* no action (not used in WAL records) */ #define GIN_SEGMENT_DELETE 1/* a whole segment is removed */ #define GIN_SEGMENT_INSERT 2/* a whole segment is added */ #define GIN_SEGMENT_REPLACE 3/* a segment is replaced */ #define GIN_SEGMENT_ADDITEMS 4/* items are added to existing segment */
typedefstruct ginxlogSplit
{
RelFileLocator locator;
BlockNumber rrlink; /* right link, or root's blocknumber if root
* split */
BlockNumber leftChildBlkno; /* valid on a non-leaf split */
BlockNumber rightChildBlkno;
uint16 flags; /* see below */
} ginxlogSplit;
/* *FlagsusedinginxlogInsertandginxlogSplitrecords
*/ #define GIN_INSERT_ISDATA 0x01 /* for both insert and split records */ #define GIN_INSERT_ISLEAF 0x02 /* ditto */ #define GIN_SPLIT_ROOT 0x04 /* only for split records */
typedefstruct ginxlogDeletePage
{
OffsetNumber parentOffset;
BlockNumber rightLink;
TransactionId deleteXid; /* last Xid which could see this page in scan */
} ginxlogDeletePage;
#define XLOG_GIN_UPDATE_META_PAGE 0x60
/* *BackupBlk0:metapage *BackupBlk1:tailpage
*/ typedefstruct ginxlogUpdateMeta
{
RelFileLocator locator;
GinMetaPageData metadata;
BlockNumber prevTail;
BlockNumber newRightlink;
int32 ntuples; /* if ntuples > 0 then metadata.tail was *updatedwiththatmanytuples;elsenewsub
* list was inserted */ /* array of inserted tuples follows */
} ginxlogUpdateMeta;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.