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

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

public final class UpdateFieldOperation
extends LogicalPageOperation

Represents the update of a particular field of a row on a page.

See Also:
Serialized Form
Format IDLOGOP_UPDATE_FIELD the formatId is written by FormatIdOutputStream when this object is written out by writeObject
Purposeupdate a field of a record on the page
Upgrade
Disk LayoutLogicalPageOperation the super class doMeSlot(CompressedInt) the slot of the record being updated fieldId(CompressedInt) the recordId of the record being updated OptionalData The after image of the column (length included), follow by the old image of the record (length included). If this is logically undoable, then the before image of the entire row is logged

Field Summary
protected  int doMeSlot
           
protected  int fieldId
           
protected  ByteArray preparedLog
           
 
Fields inherited from class org.apache.derby.impl.store.raw.data.LogicalPageOperation
recordId, undo
 
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
UpdateFieldOperation()
           
UpdateFieldOperation(RawTransaction t, BasePage page, int slot, int recordId, int fieldId, java.lang.Object column, LogicalUndo undo)
           
 
Method Summary
 void doMe(Transaction xact, LogInstant instant, LimitObjectInput in)
          Change the value of a field.
 ByteArray getPreparedLog()
          the default for optional data is set to null.
 int getTypeFormatId()
          Return my format identifier.
 void readExternal(java.io.ObjectInput in)
          Read this in
 void restoreLoggedRow(java.lang.Object[] row, LimitObjectInput in)
          Restore the row stored in the optional data of the log record.
 void restoreMe(Transaction xact, BasePage undoPage, LogInstant CLRInstant, LimitObjectInput in)
          restore the before image of the page
 java.lang.String toString()
          DEBUG: Print self.
 void undoMe(Transaction xact, BasePage undoPage, int undoRecordId, LogInstant CLRInstant, LimitObjectInput in)
          Restore field to its old value.
 void writeExternal(java.io.ObjectOutput out)
           
private  void writeOptionalDataToBuffer(RawTransaction t, java.lang.Object column)
          Write the old column value and and new column value as optional data.
 
Methods inherited from class org.apache.derby.impl.store.raw.data.LogicalPageOperation
generateUndo, getContainer, getRecordHandle, reclaimPrepareLocks, resetRecordHandle
 
Methods inherited from class org.apache.derby.impl.store.raw.data.PageBasicOperation
findpage, getPage, getPageForRedoRecovery, getPageId, getPageVersion, group, needsRedo, releaseResource, 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
group, needsRedo, releaseResource
 

Field Detail

doMeSlot

protected int doMeSlot

fieldId

protected int fieldId

preparedLog

protected transient ByteArray preparedLog
Constructor Detail

UpdateFieldOperation

public UpdateFieldOperation(RawTransaction t,
                            BasePage page,
                            int slot,
                            int recordId,
                            int fieldId,
                            java.lang.Object column,
                            LogicalUndo undo)
                     throws StandardException
Throws:
StandardException

UpdateFieldOperation

public UpdateFieldOperation()
Method Detail

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Specified by:
writeExternal in interface java.io.Externalizable
Overrides:
writeExternal in class LogicalPageOperation
Throws:
java.io.IOException

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 LogicalPageOperation
Throws:
java.io.IOException - error reading from log stream
java.lang.ClassNotFoundException - log stream corrupted

getTypeFormatId

public int getTypeFormatId()
Return my format identifier.

Returns:
The identifier. (A UUID stuffed in an array of 16 bytes).

doMe

public void doMe(Transaction xact,
                 LogInstant instant,
                 LimitObjectInput in)
          throws StandardException,
                 java.io.IOException
Change the value of a field.

Parameters:
xact - the Transaction
instant - the log instant of this operation
in - optional data
Throws:
java.io.IOException - Can be thrown by any of the methods of ObjectInput.
StandardException - Standard Derby policy.
See Also:
Loggable.doMe(org.apache.derby.iapi.store.raw.Transaction, org.apache.derby.iapi.store.raw.log.LogInstant, org.apache.derby.iapi.services.io.LimitObjectInput)

undoMe

public void undoMe(Transaction xact,
                   BasePage undoPage,
                   int undoRecordId,
                   LogInstant CLRInstant,
                   LimitObjectInput in)
            throws StandardException,
                   java.io.IOException
Restore field to its old value.

Specified by:
undoMe in class LogicalPageOperation
Parameters:
xact - the Transaction doing the rollback
undoPage - the page to rollback changes on
undoRecordId - the recordId to rollback changes on
CLRInstant - the log instant of this (PageUndo) operation
in - optional data for the rollback operation
Throws:
java.io.IOException - Can be thrown by any of the methods of ObjectInput.
StandardException - Standard Derby policy.
See Also:
LogicalPageOperation.undoMe(org.apache.derby.iapi.store.raw.Transaction, org.apache.derby.impl.store.raw.data.BasePage, int, org.apache.derby.iapi.store.raw.log.LogInstant, org.apache.derby.iapi.services.io.LimitObjectInput)

restoreLoggedRow

public void restoreLoggedRow(java.lang.Object[] row,
                             LimitObjectInput in)
                      throws StandardException,
                             java.io.IOException
Restore the row stored in the optional data of the log record.

Parameters:
row - an IN/OUT parameter, caller passed in the row with the correct column number and type, the log operation will restore the row with the optional data stored in the log record.
Throws:
java.io.IOException - error reading from log stream
StandardException - Standard Derby error policy
See Also:
LogicalUndo

restoreMe

public void restoreMe(Transaction xact,
                      BasePage undoPage,
                      LogInstant CLRInstant,
                      LimitObjectInput in)
               throws StandardException,
                      java.io.IOException
restore the before image of the page

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
Throws:
StandardException - Standard Derby Error Policy
java.io.IOException - problem reading the complete log record from the input stream

getPreparedLog

public 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

writeOptionalDataToBuffer

private void writeOptionalDataToBuffer(RawTransaction t,
                                       java.lang.Object column)
                                throws StandardException,
                                       java.io.IOException
Write the old column value and and new column value as optional data. If logical undo, writes out the entire row's before image.

Throws:
java.io.IOException - Can be thrown by any of the methods of ObjectOutput.
StandardException - Standard Derby policy.

toString

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

Overrides:
toString in class PageBasicOperation

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

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