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

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:
  • Field Details

    • recordId

      protected int recordId
    • undoOp

      private transient LogicalPageOperation 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: TypedFormat
      Get a universally unique identifier for the type of this object.
      Specified by:
      getTypeFormatId in interface TypedFormat
      Returns:
      The identifier. (A UUID stuffed in an array of 16 bytes).
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Write this out.
      Specified by:
      writeExternal in interface Externalizable
      Overrides:
      writeExternal in class PageBasicOperation
      Throws:
      IOException - error writing to log stream
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Read this in
      Specified by:
      readExternal in interface Externalizable
      Overrides:
      readExternal in class PageBasicOperation
      Throws:
      IOException - error reading from log stream
      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 class PageBasicOperation
      Parameters:
      xact - the Transaction doing the rollback
      undoPage - the page to rollback changes on
      CLRinstant - the log instant of this (PageUndo) operation
      in - optional data for the rollback operation
    • setUndoOp

      public void setUndoOp(Undoable op)
      Set up a LogicalOperation during recovery redo.
      Specified by:
      setUndoOp in interface Compensation
      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:
      doMe in interface Loggable
      Parameters:
      xact - the Transaction that is doing the rollback
      instant - the log instant of this undo operation
      in - optional data
      Throws:
      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 interface Loggable
      Overrides:
      releaseResource in class PageBasicOperation
    • group

      public int group()
      Description copied from class: PageBasicOperation
      A page operation is a RAWSTORE log record
      Specified by:
      group in interface Loggable
      Overrides:
      group in class PageBasicOperation
    • 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 interface Loggable
      Overrides:
      getPreparedLog in class PageBasicOperation
    • toString

      public String toString()
      DEBUG: Print self.
      Overrides:
      toString in class PageBasicOperation