public bool RemoveEntry(LowLevelTransaction lltx, long key, out FixedSizeTreeNodeEntry entry) { var page = GetPageForUpdate(lltx, key, Constants.BTreeLeafPageDepth); if (page == null) { entry = FixedSizeTreeNodeEntry.Empty; return(false); } if (true) { page.Search(key); } if (page.LastMatch != 0 || page.LastMatchIndex < 0) { entry = FixedSizeTreeNodeEntry.Empty; return(false); } if (page.FixedHeader.Count == 1) { lltx.WriteMultiLogBegin(); } if (true) { entry = page.RemoveEntry(lltx, page.LastMatchIndex); } if (page.FixedHeader.Count == 0) { RemovePageRecursion(lltx, page, entry.Key); lltx.WriteMultiLogEnd(); } return(true); }
public bool TryGetEntry(LowLevelTransaction lltx, long key, out FixedSizeTreeNodeEntry nodeEntry) { var page = GetPageForQuery(lltx, key, Constants.BTreeLeafPageDepth); if (page == null) { nodeEntry = FixedSizeTreeNodeEntry.Empty; return(false); } if (true) { page.Search(key); } if (page.LastMatch != 0 || page.LastMatchIndex < 0) { nodeEntry = FixedSizeTreeNodeEntry.Empty; return(false); } nodeEntry = page.GetNodeEntry(page.LastMatchIndex); return(true); }
public bool MoveNext(LowLevelTransaction lltx, out FixedSizeTreeNodeEntry entry) { ref var fixedHeader = ref Current.FixedHeader;