org.apache.derby.impl.store.raw.data
Class PhysicalUndoOperation

java.lang.Object
  extended by org.apache.derby.impl.store.raw.data.PageBasicOperation
      extended by org.apache.derby.impl.store.raw.data.PhysicalUndoOperation
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, Formatable, TypedFormat, Compensation, Loggable, RePreparable

public class PhysicalUndoOperation
extends PageBasicOperation
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
Format IDLOGOP_PAGE_PHYSICAL_UNDO the formatId is written by FormatIdOutputStream when this object is written out by writeObject
Purposeupdate a physiacl log operation
Upgrade
Disk LayoutPageBasicOperation the super class OptionalData none (compensation operation never have optional data)

Field Summary
private  PhysicalPageOperation 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
  PhysicalUndoOperation()
          Return my format identifier.
protected PhysicalUndoOperation(BasePage page)
           
  PhysicalUndoOperation(BasePage page, PhysicalPageOperation op)
          Set up a compensation operation during run time rollback
 
Method Summary
 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 undoOp
 ByteArray 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 record
 void 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 PageUndoOperation during recovery redo.
 java.lang.String toString()
          DEBUG: Print self.
 
Methods inherited from class org.apache.derby.impl.store.raw.data.PageBasicOperation
findpage, getPage, getPageForRedoRecovery, getPageId, getPageVersion, needsRedo, readExternal, reclaimPrepareLocks, resetPageNumber, writeExternal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.store.raw.Loggable
needsRedo
 
Methods inherited from interface java.io.Externalizable
readExternal, writeExternal
 

Field Detail

undoOp

private transient PhysicalPageOperation undoOp
The operation to be rolled back

Constructor Detail

PhysicalUndoOperation

protected PhysicalUndoOperation(BasePage page)

PhysicalUndoOperation

public PhysicalUndoOperation(BasePage page,
                             PhysicalPageOperation op)
Set up a compensation operation during run time rollback


PhysicalUndoOperation

public PhysicalUndoOperation()
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).

setUndoOp

public void setUndoOp(Undoable op)
Set up a PageUndoOperation during recovery redo.

Specified by:
setUndoOp in interface Compensation
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 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 InputStream.
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

    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

    toString

    public java.lang.String toString()
    DEBUG: Print self.

    Overrides:
    toString in class PageBasicOperation

    Built on Thu 2010-12-23 20:49:13+0000, from revision ???

    Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.