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

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

public class CopyRowsOperation
extends PhysicalPageOperation

Represents copying num_rows from one page to another page.

See Also:
Serialized Form
Format IDLOGOP_COPY_ROWS the formatId is written by FormatIdOutputStream when this object is written out by writeObject
Purposecopy some rows from one page to another
Upgrade
Disk LayoutPhysicalPageOperation the superclass num_rows(CompressedInt) number of rows to copy destSlot(CompressedInt) the first slot number at the destination page recordIds(CompressedInt[num_rows]) the recordIds at the destination page OptionalData the after image of the rows to be inserted into the destination page

Field Summary
protected  int destSlot
           
protected  int num_rows
           
protected  ByteArray preparedLog
           
protected  int[] recordIds
           
protected  int[] reservedSpace
           
 
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
CopyRowsOperation()
           
CopyRowsOperation(RawTransaction t, BasePage destPage, BasePage srcPage, int destSlot, int num_rows, int srcSlot, int[] recordIds)
           
 
Method Summary
 void doMe(Transaction xact, LogInstant instant, LimitObjectInput in)
          Apply the change indicated by this operation and optional data.
 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 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, LogInstant CLRInstant, LimitObjectInput in)
          to undo this operation, purge all records that were copied over.
 void writeExternal(java.io.ObjectOutput out)
           
private  void writeOptionalDataToBuffer(RawTransaction t, BasePage srcPage, int srcSlot)
          Write the rows that are to be copied into this page
 
Methods inherited from class org.apache.derby.impl.store.raw.data.PhysicalPageOperation
generateUndo
 
Methods inherited from class org.apache.derby.impl.store.raw.data.PageBasicOperation
findpage, getPage, getPageForRedoRecovery, getPageId, getPageVersion, group, needsRedo, reclaimPrepareLocks, 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

num_rows

protected int num_rows

destSlot

protected int destSlot

recordIds

protected int[] recordIds

reservedSpace

protected int[] reservedSpace

preparedLog

protected transient ByteArray preparedLog
Constructor Detail

CopyRowsOperation

public CopyRowsOperation(RawTransaction t,
                         BasePage destPage,
                         BasePage srcPage,
                         int destSlot,
                         int num_rows,
                         int srcSlot,
                         int[] recordIds)
                  throws StandardException
Throws:
StandardException

CopyRowsOperation

public CopyRowsOperation()
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 PageBasicOperation
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 PageBasicOperation
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
Description copied from interface: Loggable
Apply the change indicated by this operation and optional data. If this method fail, the system will be shut down because the log record has already been written to disk. Moreover, the log record will be replayed during recovery and this doMe method will be called on the same page again, so if it fails again, recovery will fail and the database cannot be started. So it is very important to make sure that every resource you need, such as disk space, has been acquired before the logAndDo method is called!
This method cannot acquire any resource (like latching of a page) since it is called underneath the logging system, ie., the log record has already been written to the log stream.

The available() method of in indicates how much data can be read, i.e. how much was originally written.

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 error 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,
                   LogInstant CLRInstant,
                   LimitObjectInput in)
            throws StandardException,
                   java.io.IOException
to undo this operation, purge all records that were copied over.

Specified by:
undoMe in class PhysicalPageOperation
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:
java.io.IOException - Can be thrown by any of the methods of ObjectInput.
StandardException - Standard Derby error policy
See Also:
PhysicalPageOperation.undoMe(org.apache.derby.iapi.store.raw.Transaction, org.apache.derby.impl.store.raw.data.BasePage, org.apache.derby.iapi.store.raw.log.LogInstant, org.apache.derby.iapi.services.io.LimitObjectInput)

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

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,
                                       BasePage srcPage,
                                       int srcSlot)
                                throws StandardException,
                                       java.io.IOException
Write the rows that are to be copied into this page

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.