org.apache.derby.impl.store.access.btree.index
Class B2IUndo

java.lang.Object
  extended byorg.apache.derby.impl.store.access.btree.index.B2IUndo
All Implemented Interfaces:
java.io.Externalizable, Formatable, LogicalUndo, java.io.Serializable, TypedFormat

public class B2IUndo
extends java.lang.Object
implements LogicalUndo, Formatable

The B2IUndo interface packages up the routines which the rawstore needs to call to perform logical undo of a record in a B2i. The rawstore will determine that a page has changed since the record was written, and if it has it will call the findUndo() interface, to find the page where the record exists (as it may have moved).

This class must not contain any persistent state, as this class is stored in the log record of the insert/delete.

See Also:
LogicalUndoable, Undoable.generateUndo(org.apache.derby.iapi.store.raw.Transaction, org.apache.derby.iapi.services.io.LimitObjectInput), Serialized Form

Constructor Summary
B2IUndo()
           
 
Method Summary
 Page findUndo(Transaction rawtran, LogicalUndoable pageOp, LimitObjectInput in)
          Find the page and record to undo.
 int getTypeFormatId()
          Return my format identifier.
 void readExternal(ArrayInputStream in)
           
 void readExternal(java.io.ObjectInput in)
          Restore the in-memory representation from the stream.
 void writeExternal(java.io.ObjectOutput out)
          This object has no state, so nothing to write.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

B2IUndo

public B2IUndo()
Method Detail

findUndo

public Page findUndo(Transaction rawtran,
                     LogicalUndoable pageOp,
                     LimitObjectInput in)
              throws StandardException,
                     java.io.IOException
Find the page and record to undo. If no logical undo is necessary, i.e., row has not moved, then just return the latched page where undo should go. If the record has moved, it has a new recordId on the new page, this routine needs to call pageOp.resetRecord with the new RecordHandle so that the logging system can update the compensation Operation with the new location.

Specified by:
findUndo in interface LogicalUndo
Parameters:
rawtran - the transaction doing the rollback
pageOp - the page operation that supports logical undo. This LogicalUndo function pointer is a field of that pageOperation
in - data stored in the log stream that contains the record data necessary to restore the row.
Throws:
StandardException - Standard Cloudscape error policy
java.io.IOException - Method may read from InputStream

getTypeFormatId

public int getTypeFormatId()
Return my format identifier.

Specified by:
getTypeFormatId in interface TypedFormat
Returns:
The identifier. (A UUID stuffed in an array of 16 bytes).
See Also:
TypedFormat.getTypeFormatId()

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
This object has no state, so nothing to write.

Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Restore the in-memory representation from the stream. This object has no state, so nothing to restore.

Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.lang.ClassNotFoundException - Thrown if the stored representation is serialized and a class named in the stream could not be found.
java.io.IOException
See Also:
Externalizable.readExternal(java.io.ObjectInput)

readExternal

public void readExternal(ArrayInputStream in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Throws:
java.io.IOException
java.lang.ClassNotFoundException

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

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