Class LogicalUndoOperation
java.lang.Object
org.apache.derby.impl.store.raw.data.PageBasicOperation
org.apache.derby.impl.store.raw.data.LogicalUndoOperation
- All Implemented Interfaces:
Externalizable, Serializable, Formatable, TypedFormat, Compensation, Loggable, RePreparable
LogicalUndoOperation is a compensation operation that rolls back the change of
an LogicalUndoable operation. A LogicalUndoOperation itself is not undo-able, i.e,
it is loggable but not undoable.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intprivate LogicalPageOperationThe operation to be rolled backFields inherited from class PageBasicOperation
containerHdl, foundHere, pageFields inherited from interface Loggable
ABORT, BI_LOG, CHECKSUM, COMMIT, COMPENSATION, FILE_RESOURCE, FIRST, LAST, PREPARE, RAWSTORE, XA_NEEDLOCK -
Constructor Summary
ConstructorsConstructorDescriptionReturn my format identifier.LogicalUndoOperation(BasePage page) LogicalUndoOperation(BasePage page, int recordId, LogicalPageOperation op) Set up a compensation operation during run time rollback -
Method Summary
Modifier and TypeMethodDescriptionfinal 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 undoOpfinal ByteArraythe default for optional data is set to null.intGet a universally unique identifier for the type of this object.intgroup()A page operation is a RAWSTORE log recordvoidRead this invoidreleaseResource(Transaction xact) Release latched page and any other resources acquired during a previous findpage, safe to call multiple times.voidrestoreMe(Transaction xact, BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in) Undo the change indicated by this log operation and optional data.voidSet up a LogicalOperation during recovery redo.toString()DEBUG: Print self.voidWrite this out.Methods inherited from class PageBasicOperation
findpage, getPage, getPageForRedoRecovery, getPageId, getPageVersion, needsRedo, reclaimPrepareLocks, resetPageNumber
-
Field Details
-
recordId
protected int recordId -
undoOp
The operation to be rolled back
-
-
Constructor Details
-
LogicalUndoOperation
LogicalUndoOperation(BasePage page) -
LogicalUndoOperation
LogicalUndoOperation(BasePage page, int recordId, LogicalPageOperation op) Set up a compensation operation during run time rollback -
LogicalUndoOperation
public LogicalUndoOperation()Return my format identifier.
-
-
Method Details
-
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).
-
writeExternal
Write this out.- Specified by:
writeExternalin interfaceExternalizable- Overrides:
writeExternalin classPageBasicOperation- Throws:
IOException- error writing to log stream
-
readExternal
Read this in- Specified by:
readExternalin interfaceExternalizable- Overrides:
readExternalin classPageBasicOperation- Throws:
IOException- error reading from log streamClassNotFoundException- log stream corrupted
-
restoreMe
public void restoreMe(Transaction xact, BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in) Description copied from class:PageBasicOperationUndo 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- Specified by:
restoreMein classPageBasicOperation- 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
-
setUndoOp
Set up a LogicalOperation during recovery redo.- Specified by:
setUndoOpin interfaceCompensation- Parameters:
op- the Undoable operation- See Also:
-
doMe
public final void doMe(Transaction xact, LogInstant instant, LimitObjectInput in) throws StandardException, 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:
IOException- Can be thrown by any of the methods of ObjectInput.StandardException- Standard Derby policy.
-
releaseResource
Description copied from class:PageBasicOperationRelease 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- Overrides:
releaseResourcein classPageBasicOperation
-
group
public int group()Description copied from class:PageBasicOperationA page operation is a RAWSTORE log record- Specified by:
groupin interfaceLoggable- Overrides:
groupin classPageBasicOperation
-
getPreparedLog
Description copied from class:PageBasicOperationthe 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- Overrides:
getPreparedLogin classPageBasicOperation
-
toString
-