Class PageBasicOperation
java.lang.Object
org.apache.derby.impl.store.raw.data.PageBasicOperation
- All Implemented Interfaces:
Externalizable, Serializable, Formatable, TypedFormat, Loggable, RePreparable
- Direct Known Subclasses:
LogicalPageOperation, LogicalUndoOperation, PhysicalPageOperation, PhysicalUndoOperation, SetReservedSpaceOperation
A PageBasicOperation changed the content of a page, this is the root class of all
page oriented operation. Each PageBasicOperation record change(s)
that apply to one and only one page. The pageID that is changed
must be recorded in the log operation - in other words, redo
must be physical (or more correctly, in Gray's term, physiological, since
changes are logical within a page).
Undo can be logical, but the undo logic must be hidden in generateUndo. By the time a compensation operation is logged as a LogOperation, the page that needs roll back must be determined.
Undo can be logical, but the undo logic must be hidden in generateUndo. By the time a compensation operation is logged as a LogOperation, the page that needs roll back must be determined.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected RawContainerHandleprotected booleanprotected BasePageprivate PageKeyprivate longFields inherited from interface Loggable
ABORT, BI_LOG, CHECKSUM, COMMIT, COMPENSATION, FILE_RESOURCE, FIRST, LAST, PREPARE, RAWSTORE, XA_NEEDLOCK -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal BasePagefindpage(Transaction xact) Find the page the operation applies to and latch it, this only uses the segmentId, containerId, and pageId stored in this log record to find the page.final PagegetPage()protected BasePageSubclass (e.g., init page) that wishes to do something about missing pages in load tran should override this method to return the pageprotected final PageKeyfinal longthe default for optional data is set to null.intgroup()A page operation is a RAWSTORE log recordfinal booleanneedsRedo(Transaction xact) Returns true if this op should be redone during recovery redo, if so, get and latched the page.voidvoidreclaimPrepareLocks(Transaction t, LockingPolicy locking_policy) reclaim locks associated with the changes in this log record.voidreleaseResource(Transaction xact) Release latched page and any other resources acquired during a previous findpage, safe to call multiple times.protected final voidresetPageNumber(long pageNumber) Reset the pageNumberabstract voidrestoreMe(Transaction xact, BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in) Undo the change indicated by this log operation and optional data.toString()voidMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface TypedFormat
getTypeFormatId
-
Field Details
-
pageId
-
pageVersion
private long pageVersion -
page
-
containerHdl
-
foundHere
protected transient boolean foundHere
-
-
Constructor Details
-
PageBasicOperation
PageBasicOperation(BasePage page) -
PageBasicOperation
PageBasicOperation()
-
-
Method Details
-
toString
-
writeExternal
- Specified by:
writeExternalin interfaceExternalizable- Throws:
IOException
-
readExternal
- Specified by:
readExternalin interfaceExternalizable- Throws:
IOExceptionClassNotFoundException
-
needsRedo
Returns true if this op should be redone during recovery redo, if so, get and latched the page.- Specified by:
needsRedoin interfaceLoggable- Parameters:
xact- The transaction trying to redo this operation- Returns:
- true if operation needs redoing, false if not.
- Throws:
StandardException- Standard Derby policy.- See Also:
-
releaseResource
Release latched page and any other resources acquired during a previous findpage, safe to call multiple times. In this RawStore implementataion, resource is acquired by a log operation in one of two places- during runtime or recovery undo in PageOperation.generateUndo()
- during recovery redo in PageBasicOperation.needsRedo()
- Specified by:
releaseResourcein interfaceLoggable
-
group
-
getPreparedLog
the default for optional data is set to null. If an operation has optional data, the operation need to prepare the optional data for this method. WARNING: If a log operation extends this class, and the operation has optional data, it MUST overwrite this method to return a ByteArray that contains the optional data.- Specified by:
getPreparedLogin interfaceLoggable- Throws:
StandardException- Standard Derby policy.
-
reclaimPrepareLocks
public void reclaimPrepareLocks(Transaction t, LockingPolicy locking_policy) throws StandardException reclaim locks associated with the changes in this log record.- Specified by:
reclaimPrepareLocksin interfaceRePreparable- Throws:
StandardException- Standard exception policy.
-
resetPageNumber
protected final void resetPageNumber(long pageNumber) Reset the pageNumber -
getPageId
-
findpage
Find the page the operation applies to and latch it, this only uses the segmentId, containerId, and pageId stored in this log record to find the page.- Returns:
- null if container is dropped and committed (possibly stubbified), else return the latched page
- Throws:
StandardException- Standard Derby policy.
-
getPageForRedoRecovery
Subclass (e.g., init page) that wishes to do something about missing pages in load tran should override this method to return the page- Throws:
StandardException- Derby Standard error policy
-
getPage
-
getPageVersion
public final long getPageVersion() -
restoreMe
public abstract void restoreMe(Transaction xact, BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in) throws StandardException, IOException Undo the change indicated by this log operation and optional data. The page the undo should apply to is the latched undoPage. The undoPage must be the same page as the doMe page and the undo operation must restore the before image of the row that changed.
this can only be used under special circumstances: namely table level locking, and no internal or nested transaction, and all operations are rollec back with restoreMe instead of undoMe.
This method is here to support BeforeImageLogging- Parameters:
xact- the Transaction doing the rollbackundoPage- the page to rollback changes onCLRinstant- the log instant of this (PageUndo) operationin- optional data for the rollback operation- Throws:
IOException- Can be thrown by any of the methods of ObjectInput.StandardException- Standard Derby policy.
-