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

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.DeleteOperation
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, Formatable, TypedFormat, Loggable, LogicalUndoable, RePreparable, Undoable

public final class DeleteOperation
extends LogicalPageOperation

Represents a delete (or undelete) of a record in a page.

See Also:
Serialized Form
Format IDLOGOP_DELETE the formatId is written by FormatIdOutputStream when this object is written out by writeObject
Purposedelete a record from a page.
Upgrade
Disk LayoutLogicalPageOperation the super class doMeSlot(CompressedInt) the slot of the record to delete delete(boolean) if true, delete, else undelete OptionalData if we need logical undo, write the row that was deleted as the optional data. If we don't need logical undo, no optional data

Field Summary
protected  boolean delete
           
protected  int doMeSlot
           
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
DeleteOperation()
           
DeleteOperation(RawTransaction t, BasePage page, int slot, int recordId, boolean delete, LogicalUndo undo)
           
 
Method Summary
 void doMe(Transaction xact, LogInstant instant, LimitObjectInput in)
          Mark the record as deleted on the page.
 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()
           
 void undoMe(Transaction xact, BasePage undoPage, int undoRecordId, LogInstant CLRInstant, LimitObjectInput in)
          Mark the record as not deleted, and then fix up the in-memory copy of the page.
 void writeExternal(java.io.ObjectOutput out)
          Write this out.
private  void writeOptionalDataToBuffer(RawTransaction t)
          if logical undo, writes out the row that was deleted
 
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

delete

protected boolean delete

preparedLog

protected transient ByteArray preparedLog
Constructor Detail

DeleteOperation

public DeleteOperation(RawTransaction t,
                       BasePage page,
                       int slot,
                       int recordId,
                       boolean delete,
                       LogicalUndo undo)
                throws StandardException
Throws:
StandardException

DeleteOperation

public DeleteOperation()
Method Detail

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 LogicalPageOperation
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 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
Mark the record as deleted on the page.

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
Mark the record as not deleted, and then fix up the in-memory copy of the page. All logical undo logic has already been taken care of by generateUndo.

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:
StandardException - Thrown by methods I call
java.io.IOException - Thrown by methods I call
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)
                                throws StandardException,
                                       java.io.IOException
if logical undo, writes out the row that was deleted

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

toString

public java.lang.String toString()
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.