internal void FreePage(TreePage p) { PageFreed?.Invoke(p.PageNumber); if (p.IsOverflow) { var numberOfPages = _llt.DataPager.GetNumberOfOverflowPages(p.OverflowSize); for (int i = 0; i < numberOfPages; i++) { _llt.FreePage(p.PageNumber + i); } State.RecordFreedPage(p, numberOfPages); } else { _llt.FreePage(p.PageNumber); State.RecordFreedPage(p, 1); } }
internal void FreePage(TreePage p) { #if VALIDATE p.Freed = true; #endif PageFreed?.Invoke(p.PageNumber, p.Flags); if (p.IsOverflow) { var numberOfPages = VirtualPagerLegacyExtensions.GetNumberOfOverflowPages(p.OverflowSize); for (int i = 0; i < numberOfPages; i++) { _llt.FreePage(p.PageNumber + i); } State.RecordFreedPage(p, numberOfPages); } else { if (_newPageAllocator != null) { if (IsIndexTree == false) { ThrowAttemptToFreePageToNewPageAllocator(Name, p.PageNumber); } _newPageAllocator.FreePage(p.PageNumber); } else { if (IsIndexTree) { ThrowAttemptToFreeIndexPageToFreeSpaceHandling(Name, p.PageNumber); } _llt.FreePage(p.PageNumber); } State.RecordFreedPage(p, 1); } }