org.apache.derby.impl.store.raw.data
Class PhysicalUndoOperation
- java.lang.Object
-
- org.apache.derby.impl.store.raw.data.PhysicalUndoOperation
-
- All Implemented Interfaces:
- java.io.Externalizable, java.io.Serializable, Formatable, TypedFormat, Compensation, Loggable, RePreparable
public final class PhysicalUndoOperation extends java.lang.Object implements Compensation
PhysicalUndoOperation is a compensation operation that rolls back the change of an Undo-able operation. A PhysicalUndoOperation itself is not undo-able, i.e, it is loggable but not undoable.- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from interface org.apache.derby.iapi.store.raw.Loggable
ABORT, BI_LOG, CHECKSUM, COMMIT, COMPENSATION, FILE_RESOURCE, FIRST, LAST, PREPARE, RAWSTORE, XA_NEEDLOCK
-
-
Constructor Summary
Constructors Constructor and Description PhysicalUndoOperation()Return my format identifier.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voiddoMe(Transaction xact, LogInstant instant, LimitObjectInput in)Apply the undo operation, in this implementation of the RawStore, it can only call the undoMe method of undoOporg.apache.derby.impl.store.raw.data.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.PagegetPage()longgetPageVersion()ByteArraygetPreparedLog()the default for optional data is set to null.intgetTypeFormatId()Get a universally unique identifier for the type of this object.intgroup()A page operation is a RAWSTORE log recordbooleanneedsRedo(Transaction xact)Returns true if this op should be redone during recovery redo, if so, get and latched the page.voidreadExternal(java.io.ObjectInput in)voidreclaimPrepareLocks(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.voidrestoreMe(Transaction xact, org.apache.derby.impl.store.raw.data.BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in)Undo the change indicated by this log operation and optional data.voidsetUndoOp(Undoable op)Set up a PageUndoOperation during recovery redo.java.lang.StringtoString()DEBUG: Print self.voidwriteExternal(java.io.ObjectOutput out)
-
-
-
Constructor Detail
-
PhysicalUndoOperation
public PhysicalUndoOperation()
Return my format identifier.
-
-
Method Detail
-
getTypeFormatId
public int getTypeFormatId()
Description copied from interface:TypedFormatGet a universally unique identifier for the type of this object.- Specified by:
getTypeFormatIdin interfaceTypedFormat- Returns:
- The identifier. (A UUID stuffed in an array of 16 bytes).
-
setUndoOp
public void setUndoOp(Undoable op)
Set up a PageUndoOperation during recovery redo.- Specified by:
setUndoOpin interfaceCompensation- Parameters:
op- the Undoable operation- See Also:
Loggable.needsRedo(org.apache.derby.iapi.store.raw.Transaction)
-
doMe
public final void doMe(Transaction xact, LogInstant instant, LimitObjectInput in) throws StandardException, java.io.IOException
Apply the undo operation, in this implementation of the RawStore, it can only call the undoMe method of undoOp- Specified by:
doMein interfaceLoggable- Parameters:
xact- the Transaction that is doing the rollbackinstant- the log instant of this undo operationin- optional data- Throws:
java.io.IOException- Can be thrown by any of the methods of InputStream.StandardException- Standard Derby policy.
-
releaseResource
public void releaseResource(Transaction xact)
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
public int group()
A page operation is a RAWSTORE log record
-
getPreparedLog
public final ByteArray 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
-
restoreMe
public void restoreMe(Transaction xact, org.apache.derby.impl.store.raw.data.BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in)
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
-
toString
public java.lang.String toString()
DEBUG: Print self.
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException- Specified by:
writeExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException- Specified by:
readExternalin interfacejava.io.Externalizable- Throws:
java.io.IOExceptionjava.lang.ClassNotFoundException
-
needsRedo
public final boolean needsRedo(Transaction xact) throws StandardException
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:
Loggable.releaseResource(org.apache.derby.iapi.store.raw.Transaction)
-
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.
-
findpage
public final org.apache.derby.impl.store.raw.data.BasePage findpage(Transaction xact) throws StandardException
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.
-
getPage
public final Page getPage()
-
getPageVersion
public final long getPageVersion()
-
-
DataMelt 3.0 © DataMelt by jWork.ORG