/**
   * 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);
  }