/** * restore the before image of the page * * @exception StandardException Standard Derby Error Policy * @exception IOException problem reading the complete log record from the input stream */ public void restoreMe( Transaction xact, BasePage undoPage, LogInstant CLRInstant, LimitObjectInput in) throws StandardException, IOException { int slot = undoPage.findRecordById(recordId, Page.FIRST_SLOT_NUMBER); if (SanityManager.DEBUG) { if (!getPageId().equals(undoPage.getPageId())) SanityManager.THROWASSERT( "restoreMe cannot restore to a different page. " + "doMe page:" + getPageId() + " undoPage:" + undoPage.getPageId()); if (slot != doMeSlot) SanityManager.THROWASSERT( "restoreMe cannot restore to a different slot. " + "doMe slot:" + doMeSlot + " undoMe slot: " + slot + " recordId:" + recordId); } undoPage.skipField(in); // skip the after image of the column undoPage.storeField(CLRInstant, slot, fieldId, in); undoPage.setAuxObject(null); }
/** * Restore field to its old value. * * @exception IOException Can be thrown by any of the methods of ObjectInput. * @exception StandardException Standard Derby policy. * @see LogicalPageOperation#undoMe */ public void undoMe( Transaction xact, BasePage undoPage, int undoRecordId, LogInstant CLRInstant, LimitObjectInput in) throws StandardException, IOException { int slot = undoPage.findRecordById(undoRecordId, Page.FIRST_SLOT_NUMBER); if (SanityManager.DEBUG) { // if the record Id has changed, the page had better changed // this can only happen during recovery since in run time undo, // this resetRecordHandle gets called and this object have the new // page number and recordId if (undoRecordId != this.recordId) if (undoPage.getPageNumber() == getPageId().getPageNumber()) SanityManager.THROWASSERT( "recordId changed from " + this.recordId + " to " + undoRecordId + " but page number did not change " + undoPage.getPageNumber()); if (slot == -1) SanityManager.THROWASSERT( "recordId " + undoRecordId + " not found on page " + undoPage.getPageNumber()); } undoPage.skipField((java.io.ObjectInput) in); // skip the after image of the column undoPage.storeField(CLRInstant, slot, fieldId, in); undoPage.setAuxObject(null); }