/**
   * Used when a row is deleted as a result of some DML or DDL command. Adds the file space for the
   * row to the list of free positions. If there exists more than MAX_FREE_COUNT free positions,
   * then they are probably all too small, so we start a new list.
   *
   * <p>todo: This is wrong when deleting lots of records
   *
   * <p>Then remove the row from the cache data structures.
   */
  public void remove(int i, PersistentStore store) throws HsqlException {

    CachedObject r = release(i);
    int size = r == null ? getStorageSize(i) : r.getStorageSize();

    freeBlocks.add(i, size);
  }