/**
   * Restore the row stored in the optional data of the log record.
   *
   * @exception IOException error reading from log stream
   * @exception StandardException Standard Derby error policy
   */
  public void restoreLoggedRow(Object[] row, LimitObjectInput in)
      throws StandardException, IOException {
    BasePage p = null;

    try {
      // the optional data is written by the page in the same format it
      // stores record on the page,
      // only a page knows how to restore a logged row back to a storable row
      // first get the page where the insert went even though the row may no
      // longer be there
      p = (BasePage) (getContainer().getPage(getPageId().getPageNumber()));

      // skip over the before and after image of the column, position the
      // input stream at the entire row
      p.skipField(in); // AI of the column
      p.skipField(in); // BI of the column

      p.restoreRecordFromStream(in, row);

      // RESOLVE: this returns the BI of the row, what we need is the AI
      // of the row.  We need to someone splice in the AI of the column
      // into the storable row.

    } finally {

      if (p != null) {
        p.unlatch();
        p = null;
      }
    }
  }