windows-nt/Source/XPSP1/NT/net/jet500/xjet/inc/bm.h

71 lines
1.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/* structure used by BMExpungelink to fix indexes
/**/
typedef struct _bmfix {
PIB *ppib; /* bm cleanup thread */
FUCB *pfucb; /* cursor to node */
FUCB *pfucbSrc; /* cursor to backlink */
BF **rgpbf; /* wait latched buffers required for bmfix */
INT cpbf;
INT cpbfMax;
SRID sridOld;
SRID sridNew;
} BMFIX;
/* structure used by BMDeleteNode
/**/
typedef struct _bmdelnode {
SRID sridFather;
PN pn;
INT fUndeletableNodeSeen :1;
INT fConflictSeen :1;
INT fVersionedNodeSeen :1;
INT fNodeDeleted :1;
INT fPageRemoved :1;
INT fLastNode :1;
INT fLastNodeWithLinks :1;
INT fInternalPage :1; // is the current page leaf-level?
INT fAttemptToDeleteMaxKey :1;
} BMDELNODE;
/* register pages for bookmark cleanup. To register a page, the pn
/* of the page, pgno of domain FDP and srid of visible father are
/* needed.
/**/
ERR ErrMPLInit( VOID );
VOID MPLTerm( VOID );
VOID MPLRegister( FCB *pfcb, SSIB *pssib, PN pn, SRID sridFather );
VOID MPLPurge(DBID dbid);
VOID MPLPurgeFDP( DBID dbid, PGNO pgnoFDP );
VOID MPLPurgePgno( DBID dbid, PGNO pgnoFirst, PGNO pgnoLast );
ERR ErrMPLStatus( VOID );
extern PIB *ppibBMClean;
ERR ErrBMInit( VOID );
ERR ErrBMTerm( VOID );
ERR ErrBMDoEmptyPage(
FUCB *pfucb,
RMPAGE *prmpage,
BOOL fAllocBuf,
BOOL *pfRmParent,
BOOL fSkipDelete);
ERR ErrBMDoMerge( FUCB *pfucb, FUCB *pfucbRight, SPLIT *psplit, LRMERGE *plrmerge );
ERR ErrBMDoMergeParentPageUpdate( FUCB *pfucb, SPLIT *psplit );
ERR ErrBMAddToLatchedBFList( RMPAGE *prmpage, BF *pbfLatched );
ERR ErrBMCleanBeforeSplit( PIB *ppib, FCB *pfcb, PN pn );
ERR ErrBMClean( PIB *ppib );
BOOL FBMMaxKeyInPage( FUCB *pfucb );
#ifdef DEBUG
VOID AssertNotInMPL( DBID dbid, PGNO pgnoFirst, PGNO pgnoLast );
VOID AssertMPLPurgeFDP( DBID dbid, PGNO pgnoFDP );
BOOL FMPLLookupPN( PN pn );
//#define OLC_DEBUG 1
#endif