Class 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 IDLOGOP_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 LayoutPageBasicOperation 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 Detail

      • recordId

        protected int recordId
    • 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 interface TypedFormat
        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 interface java.io.Externalizable
        Overrides:
        writeExternal in class PageBasicOperation
        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 interface java.io.Externalizable
        Overrides:
        readExternal in class PageBasicOperation
        Throws:
        java.io.IOException - error reading from log stream
        java.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 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
      • 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 interface Loggable
        Parameters:
        xact - the Transaction that is doing the rollback
        instant - the log instant of this undo operation
        in - 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 interface Loggable
Overrides:
releaseResource in class PageBasicOperation