Пример #1
0
        /// <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());
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
        }