/// <summary> /// </summary> /// <param name="tx"></param> /// <param name="page"></param> /// <returns></returns> public static OverflowPage ModifyPage(this ILowLevelTransaction tx, OverflowPage page) { var newPage = tx.ModifyPage(page.StoreId, page.PageNumber); if (newPage == null) { throw new InvalidOperationException($"modify page failed,pagerid:{page.StoreId},pagenumber:{page.PageNumber}"); } return(newPage.AsOverflow()); }
public void OnChanged(OverflowPage page, TreePageChangeFlags flags) { switch (flags) { case TreePageChangeFlags.New: Header.PageCount++; Header.OverflowCount++; break; case TreePageChangeFlags.Free: Header.PageCount--; Header.OverflowCount--; break; } }
public static OverflowPage[] AllocateOverflows(this ILowLevelTransaction tx, int pagerId, uint count) { var pages = tx.AllocatePage(pagerId, count); var overflows = new OverflowPage[count]; for (var i = 0; i < overflows.Length; i++) { if (i == 0) { overflows[i] = pages[i].AsOverflow(); continue; } overflows[i] = pages[i].AsOverflow(); overflows[i - 1].Header.NextPageNumber = overflows[i].PageNumber; } return(overflows); }