Class LogicalUndoOperation
- java.lang.Object
-
- org.apache.derby.impl.store.raw.data.PageBasicOperation
-
- org.apache.derby.impl.store.raw.data.LogicalUndoOperation
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,Formatable
,TypedFormat
,Compensation
,Loggable
,RePreparable
public final class LogicalUndoOperation extends PageBasicOperation implements Compensation
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:
- Serialized Form
Format ID LOGOP_PAGE_LOGICAL_UNDO the formatId is written by FormatIdOutputStream when this object is written out by writeObject Purpose undo a logical log operation Upgrade Disk Layout PageBasicOperation the super class recordId(CompressedInt) the recordId of the changed row (this may not be the recordId during rollback if the record moved from one page to another) OptionalData none (compensation operation never have optional data)
-
-
Field Summary
Fields Modifier and Type Field Description protected int
recordId
private LogicalPageOperation
undoOp
The operation to be rolled back-
Fields inherited from class org.apache.derby.impl.store.raw.data.PageBasicOperation
containerHdl, foundHere, page
-
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 Description LogicalUndoOperation()
Return my format identifier.LogicalUndoOperation(BasePage page)
LogicalUndoOperation(BasePage page, int recordId, LogicalPageOperation op)
Set up a compensation operation during run time rollback
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
doMe(Transaction xact, LogInstant instant, LimitObjectInput in)
Apply the undo operation, in this implementation of the RawStore, it can only call the undoMe method of undoOpByteArray
getPreparedLog()
the default for optional data is set to null.int
getTypeFormatId()
Get a universally unique identifier for the type of this object.int
group()
A page operation is a RAWSTORE log recordvoid
readExternal(java.io.ObjectInput in)
Read this invoid
releaseResource(Transaction xact)
Release latched page and any other resources acquired during a previous findpage, safe to call multiple times.void
restoreMe(Transaction xact, BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in)
Undo the change indicated by this log operation and optional data.void
setUndoOp(Undoable op)
Set up a LogicalOperation during recovery redo.java.lang.String
toString()
DEBUG: Print self.void
writeExternal(java.io.ObjectOutput out)
Write this out.-
Methods inherited from class org.apache.derby.impl.store.raw.data.PageBasicOperation
findpage, getPage, getPageForRedoRecovery, getPageId, getPageVersion, needsRedo, reclaimPrepareLocks, resetPageNumber
-
-
-
-
Field Detail
-
recordId
protected int recordId
-
undoOp
private transient LogicalPageOperation undoOp
The operation to be rolled back
-
-
Constructor Detail
-
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 Detail
-
getTypeFormatId
public int getTypeFormatId()
Description copied from interface:TypedFormat
Get a universally unique identifier for the type of this object.- Specified by:
getTypeFormatId
in interfaceTypedFormat
- Returns:
- The identifier. (A UUID stuffed in an array of 16 bytes).
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
Write this out.- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Overrides:
writeExternal
in classPageBasicOperation
- Throws:
java.io.IOException
- error writing to log stream
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
Read this in- Specified by:
readExternal
in interfacejava.io.Externalizable
- Overrides:
readExternal
in classPageBasicOperation
- Throws:
java.io.IOException
- error reading from log streamjava.lang.ClassNotFoundException
- log stream corrupted
-
restoreMe
public void restoreMe(Transaction xact, BasePage undoPage, LogInstant CLRinstant, LimitObjectInput in)
Description copied from class:PageBasicOperation
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- Specified by:
restoreMe
in 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
public void setUndoOp(Undoable op)
Set up a LogicalOperation during recovery redo.- Specified by:
setUndoOp
in 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:
doMe
in 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 ObjectInput.StandardException
- Standard Derby policy.
-
releaseResource
public void releaseResource(Transaction xact)
Description copied from class:PageBasicOperation
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:
releaseResource
in interfaceLoggable
- Overrides:
releaseResource
in classPageBasicOperation
-
group
public int group()
Description copied from class:PageBasicOperation
A page operation is a RAWSTORE log record- Specified by:
group
in interfaceLoggable
- Overrides:
group
in classPageBasicOperation
-
getPreparedLog
public final ByteArray getPreparedLog()
Description copied from class:PageBasicOperation
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:
getPreparedLog
in interfaceLoggable
- Overrides:
getPreparedLog
in classPageBasicOperation
-
toString
public java.lang.String toString()
DEBUG: Print self.- Overrides:
toString
in classPageBasicOperation
-
-