001: /*
002:
003: Derby - Class org.apache.derby.impl.store.raw.data.DirectAllocActions
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.impl.store.raw.data;
023:
024: import org.apache.derby.impl.store.raw.data.AllocationActions;
025: import org.apache.derby.impl.store.raw.data.BasePage;
026:
027: import org.apache.derby.iapi.services.sanity.SanityManager;
028: import org.apache.derby.iapi.services.io.FormatIdUtil;
029:
030: import org.apache.derby.iapi.store.raw.Loggable;
031: import org.apache.derby.iapi.store.raw.xact.RawTransaction;
032: import org.apache.derby.iapi.store.raw.log.LogInstant;
033:
034: import org.apache.derby.iapi.error.StandardException;
035:
036: public class DirectAllocActions implements AllocationActions {
037:
038: public DirectAllocActions() {
039: }
040:
041: /**
042: Set the allocation status of pageNumber to doStatus. To undo this
043: operation, set the allocation status of pageNumber to undoStatus
044:
045: @param t The transaction
046: @param allocPage the allocation page
047: @param pageNumber the page to allocation or deallocation
048: @param doStatus set the allocation status of the page this value
049: @param undoStatus on undo, set the allocation status of the page
050: this value
051:
052: @exception StandardException Standard Cloudscape error policy
053: */
054: public void actionAllocatePage(RawTransaction t,
055: BasePage allocPage, long pageNumber, int doStatus,
056: int undoStatus) throws StandardException {
057: ((AllocPage) allocPage).setPageStatus((LogInstant) null,
058: pageNumber, doStatus);
059: }
060:
061: /**
062: Chain one allocation page to the next.
063:
064: @param t The transaction
065: @param allocPage the allocation page whose next page chain needs
066: to be changed
067: @param pageNumber the next allocation page's number
068: @param pageOffset the next allocation page's page offset
069:
070: @exception StandardException Standard Cloudscape error policy
071: */
072: public void actionChainAllocPage(RawTransaction t,
073: BasePage allocPage, long pageNumber, long pageOffset)
074: throws StandardException {
075: ((AllocPage) allocPage).chainNextAllocPage((LogInstant) null,
076: pageNumber, pageOffset);
077: }
078:
079: /**
080: * Compress free pages.
081: * <p>
082: * Compress the free pages at the end of the range maintained by
083: * this allocation page. All pages being compressed should be FREE.
084: * Only pages in the last allocation page can be compressed.
085: * <p>
086: *
087: * @param t The transaction
088: * @param allocPage the allocation page to do compress on.
089: * @param new_highest_page The new highest page on this allocation
090: * page. The number is the offset of the page
091: * in the array of pages maintained by this
092: * allocation page, for instance a value of 0
093: * indicates all page except the first one are
094: * to be truncated. If all pages are
095: * truncated then the offset is set to -1.
096: * @param num_pages_truncated The number of allocated pages in this
097: * allocation page prior to the truncate.
098: * Note that all pages from NewHighestPage+1
099: * through newHighestPage+num_pages_truncated
100: * should be FREE.
101: *
102: * @exception StandardException Standard exception policy.
103: **/
104: public void actionCompressSpaceOperation(RawTransaction t,
105: BasePage allocPage, int new_highest_page,
106: int num_pages_truncated) throws StandardException {
107: ((AllocPage) allocPage).compressSpace((LogInstant) null,
108: new_highest_page, num_pages_truncated);
109: }
110: }
|