$Id: CHANGES.txt,v 1.11 2002/10/13 18:54:42 boisvert Exp $

CHANGE LOG
==========

For version "CVS":

    * Better abstraction for RecordManager, which is now an interface.
      A concrete RecordManager instance is now obtained from
      RecordManagerFactory (and RecordManagerFactory supports 'pluggable'
      RecordManager providers)

    * Faster log checkpointing by avoiding unnecessary writes to same block
      in TransactionManager (contributed by Nathan Clement)

    * Added ability to set split point in BTree to optimize insert performance
      of entries with monotonically increasing/decreasing keys.  Also added
      statistics on BTree to monitor performance.
      (contributed by Kent Fitch - kentfitch@hotmail.com)

    * Renamed methods called 'assert' which is a reserved word in JDK 1.4+.
      (suggested by Yonas Jongkind)

    * Performance improvement in BlockIo.readLong() contributed by
      Erwin Bolwidt <ejb@klomp.org>

    * Switched to using java.util.Comparator interface instead of
      JDBM-specific comparator.
     

For version 0.13:

    * Upgraded to Ant 1.4.1 (and switched to Crimson instead of Xerces
      XML Parser).  Updated the build file accordingly and fixed a number
      of build issues.

    * Upgraded to JUnit 3.7.  Corrected use of deprecated methods in test
      harness.

    * Added IntegerComparator and updated TestBTree unit test
      (both contributed by Christof Dallermassl)

    * Fixed TestBTree.testBasics() and TestBTree.multiThreadAccess()
      test cases.

    * RecordManager now throws IOException if used after being closed()

    * Updated BTree.browse() javadoc to warn against structural modifications
      to the BTree while browsing.


For version 0.12:
    * Fixed a corruption bug in B+Tree during insertion.
    * Added {JDBMHashtable, BTree, HTree}.getRecid() methods
    * Loading of an existing HTree now uses static HTree.load() method
      instead of constructor
    * Added synchronization to RecordManager methods for thread-safeness.


For version 0.11:
    * Added new B+Tree data structure implementation.

For version 0.10:
    * Bug fix release with performance enhancements.
    * Fixed an infinite loop bug in Enumeration returned by HashDirectory
      (reported by Daniel Herlemont).  Added HashtableTest regression test.
    * Fixed LogicalRowIdManager.fetch() which dirtied blocks unnecessarily.
    * RecordFile.commit() optimized to avoid disk writes & sync() if no
      blocks have been dirtied in the transaction.

For version 0.09:
    * This is a major upgrade in terms of functionality.  We now have
      a GDBM-like API (actually, very much like Hashtable) and added
      explicit commit/rollback functionality.
    * Repackaging com.cdegroot.recman.* to jdbm.recman.*
    * Added jdbm.* package -- GDBM-like access
    * Added jdbm.hash.* package -- HTree implementation and corresponding
      test cases.
    * Changes in jdbm.recman.RecordManager to support commit() and rollback().
      This change affected many classes in jdbm.recman.*, notably
      TransactionManager.   Added new test case for rollback().
    * Test framework now integrated in the build.
    * Updated most of the code to reflect the new BSD license.

For version 0.081:
    * Important bug fix.  TransactionManager had a bug which could potentially
      corrupt the database file when the database was not closed explicitly.
      See bug #103848 on SourceForge.
      http://sourceforge.net/bugs/?func=detailbug&bug_id=103848&group_id=4155
      Bug report & fix courtesy of Alex Boisvert [boisvert@exoffice.com].

For version 0.08:
    * Cleanups. Cleaning up recman/FileHeader seems to have affected
      performance, but not bad enough for now (we can always optimize
      it again).
    * Added support for "root" rowids, which are special rowids that
      are accessed by an index and stored in the file header. Can be
      used for bootstrapping access to other structures.

For version 0.07:
    * Updated license to GNU Library General Public License.
    * More verbosity in doc comments on recman/RecordManager.

