private static IndexNode BinaryInsertNode(IndexLink baseLink, IndexNode baseNode, EntryInfo entry, Engine engine) { IndexUnit pageIndex = engine.GetFreeIndexPage(); IndexNode newNode = pageIndex.Nodes[pageIndex.NodeIndex]; baseLink.PageID = pageIndex.UnitID; baseLink.Index = pageIndex.NodeIndex; newNode.UpdateFromEntry(entry); newNode.DataPageID = DataFactory.GetStartDataPageID(engine); if (pageIndex.UnitID != baseNode.IndexPage.UnitID) { engine.CacheIndexPage.AddPage(baseNode.IndexPage, true); } engine.CacheIndexPage.AddPage(pageIndex, true); return newNode; }
private static IndexNode GetChildIndexNode(IndexLink link, Engine engine) { return engine.CacheIndexPage.GetPage(link.PageID).Nodes[link.Index]; }