/* *PageopaquedatainaGiSTindexpage.
*/ #define F_LEAF (1 << 0) /* leaf page */ #define F_DELETED (1 << 1) /* the page has been deleted */ #define F_TUPLES_DELETED (1 << 2) /* some tuples on the page were
* deleted */ #define F_FOLLOW_RIGHT (1 << 3) /* page to the right has no downlink */ #define F_HAS_GARBAGE (1 << 4) /* some tuples on the page are dead,
* but not deleted yet */
typedefstruct GISTPageOpaqueData
{
PageGistNSN nsn; /* this value must change on page split */
BlockNumber rightlink; /* next page if any */
uint16 flags; /* see bit definitions above */
uint16 gist_page_id; /* for identification of GiST indexes */
} GISTPageOpaqueData;
/* *ThisistheSplitVectortobereturnedbythePickSplitmethod. *PickSplitshouldfilltheindexesoftuplestogototheleftsideinto *spl_left[],andthosetogototherightintospl_right[](notethemethod *isresponsibleforpalloc'ingbothofthesearrays!).Thetuplecounts *gointospl_nleft/spl_nright,andspl_ldatum/spl_rdatummustbesetto *theunionkeysforeachside. * *Ifspl_ldatum_existsandspl_rdatum_existsaretrue,thenweareperforming *a"secondarysplit"usinganon-firstindexcolumn.Inthiscasesome *decisionshavealreadybeenmadeaboutapagesplit,andthesetoftuples *beingpassedtoPickSplitisjustthetuplesaboutwhichweareundecided. *spl_ldatum/spl_rdatumthencontaintheunionkeysforthetuplesalready *chosentogoleftorright.IdeallythePickSplitmethodshouldtakethose *keysintoaccountwhiledecidingwhattodowiththeremainingtuples,ie *itshouldtryto"buildout"fromthoseunionssoastominimallyexpand *them.Ifitdoesso,itshouldunionthegiventuples'keysintothe *existingspl_ldatum/spl_rdatumvaluesratherthanjustsettingthosevalues *fromscratch,andthensetspl_ldatum_exists/spl_rdatum_existstofalseto *showithasdonethis. * *IfthePickSplitmethodfailstoclearspl_ldatum_exists/spl_rdatum_exists, *thecoreGiSTcodewillmakeitsowndecisionabouthowtomergethe *secondary-splitresultswiththepreviously-chosentuples,andwillthen *recomputetheunionkeysfromscratch.Thisisaworkablethoughoftennot *optimalapproach.
*/ typedefstruct GIST_SPLITVEC
{
OffsetNumber *spl_left; /* array of entries that go left */ int spl_nleft; /* size of this array */
Datum spl_ldatum; /* Union of keys in spl_left */ bool spl_ldatum_exists; /* true, if spl_ldatum already exists. */
OffsetNumber *spl_right; /* array of entries that go right */ int spl_nright; /* size of the array */
Datum spl_rdatum; /* Union of keys in spl_right */ bool spl_rdatum_exists; /* true, if spl_rdatum already exists. */
} GIST_SPLITVEC;
/* *Onadeletedpage,westorethisstruct.Adeletedpagedoesn'tcontainany *tuples,sowedon'tusethenormalpagelayoutwithlinepointers.Instead, *thisstructisstoredrightafterthestandardpageheader.pd_lowerpoints *totheendofthisstruct.Ifweaddfieldstothisstructinthefuture,we *candistinguishtheoldandnewformatsbypd_lower.
*/ typedefstruct GISTDeletedPageContents
{ /* last xid which could see the page in a scan */
FullTransactionId deleteXid;
} GISTDeletedPageContents;
extern StrategyNumber gisttranslatecmptype(CompareType cmptype, Oid opfamily);
#endif/* GIST_H */
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.17Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-08-08)
¤
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.