Class UpdateOperation
java.lang.Object
org.apache.derby.impl.store.raw.data.PageBasicOperation
org.apache.derby.impl.store.raw.data.PhysicalPageOperation
org.apache.derby.impl.store.raw.data.UpdateOperation
- All Implemented Interfaces:
Externalizable
,Serializable
,Formatable
,TypedFormat
,Loggable
,RePreparable
,Undoable
Represents the update of a particular row on a page.
- See Also:
-
Field Summary
FieldsFields 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
ConstructorsConstructorDescriptionUpdateOperation
(RawTransaction t, BasePage page, int slot, int recordId, Object[] row, FormatableBitSet validColumns, int realStartColumn, DynamicByteArrayOutputStream logBuffer, int realSpaceOnPage, RecordHandle headRowHandle) -
Method Summary
Modifier and TypeMethodDescriptionvoid
doMe
(Transaction xact, LogInstant instant, LimitObjectInput in) Store the new record directly over the old record, the implementation of storeRecord is responsible for removing any old data.int
Return the last column of the row this operation loggedthe default for optional data is set to null.private RecordHandle
return RecordHandle of the update row.int
Return my format identifier.void
Read this invoid
reclaimPrepareLocks
(Transaction t, LockingPolicy locking_policy) reclaim locks associated with the changes in this log record.void
restoreMe
(Transaction xact, BasePage undoPage, LogInstant CLRInstant, LimitObjectInput in) restore the before image of the pagetoString()
void
undoMe
(Transaction xact, BasePage undoPage, LogInstant CLRInstant, LimitObjectInput in) Store the old record directly over the new record, the implementation of storeRecord is responsible for removing any new data.void
private void
writeOptionalDataToBuffer
(RawTransaction t, DynamicByteArrayOutputStream logBuffer, Object[] row, FormatableBitSet validColumns, int realStartColumn, int realSpaceOnPage, RecordHandle headRowHandle) Write out the changed colums of new record (from the row) followed by changed columns of the old record (from the 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, 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 Details
-
doMeSlot
protected int doMeSlot -
recordId
protected int recordId -
nextColumn
protected transient int nextColumn -
preparedLog
-
-
Constructor Details
-
UpdateOperation
UpdateOperation(RawTransaction t, BasePage page, int slot, int recordId, Object[] row, FormatableBitSet validColumns, int realStartColumn, DynamicByteArrayOutputStream logBuffer, int realSpaceOnPage, RecordHandle headRowHandle) throws StandardException - Throws:
StandardException
-
UpdateOperation
public UpdateOperation()
-
-
Method Details
-
writeExternal
- Specified by:
writeExternal
in interfaceExternalizable
- Overrides:
writeExternal
in classPageBasicOperation
- Throws:
IOException
-
readExternal
Read this in- Specified by:
readExternal
in interfaceExternalizable
- Overrides:
readExternal
in classPageBasicOperation
- Throws:
IOException
- error reading from log streamClassNotFoundException
- log stream corrupted
-
getTypeFormatId
public int getTypeFormatId()Return my format identifier.- Returns:
- The identifier. (A UUID stuffed in an array of 16 bytes).
-
getNextStartColumn
public int getNextStartColumn()Return the last column of the row this operation logged -
doMe
public void doMe(Transaction xact, LogInstant instant, LimitObjectInput in) throws StandardException, IOException Store the new record directly over the old record, the implementation of storeRecord is responsible for removing any old data.- Parameters:
xact
- the Transactioninstant
- the log instant of this operationin
- optional data- Throws:
StandardException
- Thrown by methods I callIOException
- Thrown by methods I call- See Also:
-
undoMe
public void undoMe(Transaction xact, BasePage undoPage, LogInstant CLRInstant, LimitObjectInput in) throws StandardException, IOException Store the old record directly over the new record, the implementation of storeRecord is responsible for removing any new data.- Specified by:
undoMe
in classPhysicalPageOperation
- Parameters:
xact
- the Transaction doing the rollbackundoPage
- the page to rollback changes onCLRInstant
- the log instant of this (PageUndo) operationin
- optional data for the rollback operation- Throws:
StandardException
- Thrown by methods I callIOException
- Thrown by methods I call- See Also:
-
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 interfaceLoggable
- Overrides:
getPreparedLog
in classPageBasicOperation
-
writeOptionalDataToBuffer
private void writeOptionalDataToBuffer(RawTransaction t, DynamicByteArrayOutputStream logBuffer, Object[] row, FormatableBitSet validColumns, int realStartColumn, int realSpaceOnPage, RecordHandle headRowHandle) throws StandardException, IOException Write out the changed colums of new record (from the row) followed by changed columns of the old record (from the page).- Throws:
StandardException
- Thrown by methods I callIOException
- Thrown by methods I call
-
restoreMe
public void restoreMe(Transaction xact, BasePage undoPage, LogInstant CLRInstant, LimitObjectInput in) throws StandardException, IOException restore the before image of the page- Specified by:
restoreMe
in classPageBasicOperation
- Parameters:
xact
- the Transaction doing the rollbackundoPage
- the page to rollback changes onCLRInstant
- the log instant of this (PageUndo) operationin
- optional data for the rollback operation- Throws:
StandardException
- Standard Derby Error PolicyIOException
- problem reading the complete log record from the input stream
-
getRecordHandle
return RecordHandle of the update row.Return the RecordHandle that should be locked when updating the row in this UpdateOperation.
-
reclaimPrepareLocks
public void reclaimPrepareLocks(Transaction t, LockingPolicy locking_policy) throws StandardException reclaim locks associated with the changes in this log record.- Specified by:
reclaimPrepareLocks
in interfaceRePreparable
- Overrides:
reclaimPrepareLocks
in classPageBasicOperation
- Parameters:
locking_policy
- The locking policy to use to claim the locks.- Throws:
StandardException
- Standard exception policy.
-
toString
- Overrides:
toString
in classPageBasicOperation
-