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

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

public 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
Purposeundo 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 Summary
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, COMMIT, COMPENSATION, FILE_RESOURCE, FIRST, LAST, PREPARE, RAWSTORE, XA_NEEDLOCK
 
Constructor Summary
  LogicalUndoOperation()
          Return my format identifier.
protected LogicalUndoOperation(BasePage page)
           
  LogicalUndoOperation(BasePage page, int recordId, LogicalPageOperation 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 log operations are responsible to create the ByteArray, and the log operations should write out any optional data for the change to the ByteArray.
 int getTypeFormatId()
          Get a universally unique identifier for the type of this object.
 int group()
          Get the loggable's group value
 void readExternal(java.io.ObjectInput in)
          Read this in
 void releaseResource(Transaction xact)
          Release any resource that was acquired for doMe for rollback or recovery redo.
 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, getPageForLoadTran, getPageId, getPageVersion, needsRedo, reclaimPrepareLocks, resetPageNumber
 
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
 

Field Detail

recordId

protected int recordId

undoOp

private transient LogicalPageOperation undoOp
The operation to be rolled back

Constructor Detail

LogicalUndoOperation

protected LogicalUndoOperation(BasePage page)

LogicalUndoOperation

public 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

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:
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 ObjectInput.
StandardException - Standard Cloudscape policy.

releaseResource

public void releaseResource(Transaction xact)
Description copied from interface: Loggable
Release any resource that was acquired for doMe for rollback or recovery redo. This resource is acquired in either generateUndo (if this is a compensation operation during run time rollback or recovery rollback) or in needsRedo (if this is during recovery redo). The run time transaction context should have all the resource already acquird for run time roll forward, so there is no need to releaseResource during run time roll forward. This method must be safe to be called multiple times.

Specified by:
releaseResource in interface Loggable
Overrides:
releaseResource in class PageBasicOperation

group

public int group()
Description copied from interface: Loggable
Get the loggable's group value

Specified by:
group in interface Loggable
Overrides:
group in class PageBasicOperation

getPreparedLog

public final ByteArray getPreparedLog()
Description copied from interface: Loggable
The log operations are responsible to create the ByteArray, and the log operations should write out any optional data for the change to the ByteArray. The ByteArray can be prepared when the log operation is constructed, or it can be prepared when getPreparedLog() is called. Called by the log manager to allow the log operation to pass the buffer which contains optional data that will be available in to doMe() methods.

Specified by:
getPreparedLog in interface Loggable
Overrides:
getPreparedLog in class PageBasicOperation

toString

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

Overrides:
toString in class PageBasicOperation


Apache Derby V10.0 Engine Documentation - Copyright © 1997,2004 The Apache Software Foundation or its licensors, as applicable.