Oct 10, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.7 Oct 09, 2007 - chris o restructured the wince MSV8 solution and project files Oct 08, 2007 - chris o completely recreated the win32 MSVC8 solution and project files Oct 05, 2007 - chris o added function ham_cursor_get_duplicate_count o fixed a bug in coupling an uncoupling cursor: the duplicate id was lost o added a new sample env2.c, which demonstrates a 1:n relationship for two tables (with the use of duplicate keys) Oct 04, 2007 - chris o record numbers are now no longer reused after they were deleted and the database was reopened. Oct 03, 2007 - chris o rewrote some blob management routines which resulted in an improvement of duplicate keys. Oct 02, 2007 - chris o the freelist routines were completely rewritten and are much faster now. Oct 01, 2007 - chris o it's now enough to initialize a ham_key_t and ham_record_t once in the beginning, and not before every use. also added some checks and errors when using an uninitialized structure. Sep 30, 2007 - chris o ham_env_close now expects a second parameter for flags; you can specify the flag HAM_AUTO_CLOSE, and all open databases are closed automatically. if the flag is not specified, but cursors are still open, ham_env_close fails and returns HAM_ENV_NOT_EMPTY. o ham_close now expects a second parameter for flags; you can specify the flag HAM_AUTO_CLOSE, and all open cursors are closed automatically. if the flag is not specified, but cursors are still open, ham_close fails and returns HAM_DB_NOT_EMPTY. Sep 27, 2007 - chris o fixed a bug in the freelist - the dirty-flag was not set, when an overflow page was allocated; if the cache was exhausted, freelist pages could get lost, and the file would grow very fast. Sep 24, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.6 Sep 24, 2007 - chris o support for duplicate items is finally finished, and a new sample (db5.c) was added Sep 13, 2007 - chris o fixed big endian-bugs in record number databases (ham_find, ham_erase and ham_cursor_find did not convert the record number to db-endian) Aug 31, 2007 - chris o renamed ham_cursor_replace to ham_cursor_overwrite (to be consistent with the flag HAM_OVERWRITE) Aug 30, 2007 - chris o bugfix: if a cursor pointed to an item, but this item was erased (either with another cursor or ham_erase), the dangling pointer was not updated, and a subsequent access would result in undefined behaviour - fixed. Aug 24, 2007 - chris o overwriting record number keys was not possible because a new (incremented) recno key was assigned even if the flag HAM_OVERWRITE was specified. fixed - recno keys can now be overwritten Aug 09, 2007 - chris o hamsterdb is now released under GPL 2 *or any later version*, which also includes GPL 3. Aug 08, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.5 Aug 08, 2007 - chris o fixed CreateFile calls on win32 - call CreateFileW if UNICODE is defined, otherwise call CreateFileA Aug 04, 2007 - chris o fixed HAM_READ_ONLY support for win32 - the file handle is now created with GENERIC_READ, not GENERIC_READ|GENERIC_WRITE Aug 03, 2007 - chris o finalized support for record numbers o added a sample for record numbers (samples/db4.c) Aug 01, 2007 - chris o removed status codes HAM_SHORT_READ and HAM_SHORT_WRITE; instead, HAM_IO_ERROR is now used o ham_flush() now also flushes the header page (so far the header page was forgotten under certain circumstances) o set the DB_CHUNKSIZE (which is the minimum size of a freelist entry) to 32 instead of 64; generated database files are much smaller now Jul 22, 2007 - chris o when opening an environment file with ham_open (as a database), the first database in the environment is now opened Jul 21, 2007 - chris o when opening an environment, the flags were not stored o don't allow ham_env_create_db if the environment was opened r/o o calling ham_set_prefix_compare_func and ham_set_compare_func with NULL as second parameter resets the compare function to the default compare function (based on memcmp) o bugfix: failed to open environments, which were created with a different pagesize than the default pagesize; fixed Jul 19, 2007 - chris o bugfix: if a ham_db_t handle was reused after ham_close, an internal pointer was not set to NULL, which resulted in a segfault o replaced error code HAM_INV_INDEX with HAM_NOT_INITIALIZED o replaced error code HAM_ENV_FULL with HAM_LIMITS_REACHED Jun 15, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.4 Jul 13, 2007 - chris o finalized "environment" functions, APIs and unittests; added a new sample (samples/env1.c). Jul 06, 2007 - chris o bugfix: freelist pages were not marked as dirty, and therefore sometimes weren't written to disk Jul 03, 2007 - chris o bugfix: deleted pages (with db_free_page()) were not moved to the freelist, and zombie pages were created Jun 24, 2007 - chris o finished the port to Windows CE. Solution files are in the wince directory (configured for STANDARDSDK 5.0 (x86)). See wince/README.TXT for the details. Jun 20, 2007 - chris o improved the caching of extended keys; the cache is now purged when it's too full Jun 17, 2007 - chris o added the flag HAM_OPEN_EXCLUSIVE; will lock the file exclusively, as long as it's open. Returns HAM_WOULD_BLOCK if you try to place an exclusive lock on a database which was already opened exclusively. Jun 15, 2007 - chris o fixed a bug which disabled HAM_DISABLE_MMAP; even if the flag was specified, mmap routines were used Jun 12, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.3 Jun 11, 2007 - chris o unittests work now on big-endian machines Jun 10, 2007 - chris o fixed a small memory leak (in-memory db only, when using extended keys and a lot of SMOs occur, because many keys are deleted) Jun 04, 2007 - chris o fixed configure.in - do not build unittests if cppunit is not installed May 30, 2007 - chris o added unittests for util.c o modified doxygen tags in the documentation (ham/hamsterdb.h) o fixed a rare memory leak with SMOs during ham_erase (only for in-memory databases) May 29, 2007 - chris o added unittests for btree_cursor.c May 19, 2007 - chris o configure.in now checks for cppunit/extensions/HelperMacros.h, not cppunit/TestSuite.h May 10, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.2 May 10, 2007 - chris o refactored the freelist and reimplemented it as a bitmap o removed HAM_OPTIMIZE_SIZE - this flag is no longer needed, the new bitmap structures are automatically optimized May 5, 2007 - chris o new unittests for the freelist Apr 04, 2007 - chris o refactored the cache and some other modules o bugfix in ham_open_ex: the cachesize parameter was ignored; ham_open_ex always used HAM_DEFAULT_CACHESIZE Apr 02, 2007 - chris o started writing unittests and refactoring Mar 27, 2007 - chris o database files are now endian-agnostic; hamsterdb can now use big-endian databases on little-endian architectures and vice versa Mar 21, 2007 - chris o removed HAM_OPEN_EXCLUSIVELY - i'll replace it with file locking in a few weeks o use mmap if the db-pagesize is a multiple of the os-pagesize, and not just if it's equal o do not store the following flags in the database: HAM_DISABLE_VAR_KEYLEN, HAM_CACHE_STRICT, HAM_DISABLE_MMAP, HAM_OPEN_EXCLUSIVELY, HAM_WRITE_THROUGH, HAM_READ_ONLY, HAM_OPTIMIZE_SIZE, HAM_DISABLE_FREELIST_FLUSH o fixed an unlikely crash in ham_cursor_move: if the cursor was nil after moving the cursor, return an error Mar 17, 2007 - chris o added configure-option --enable-internal to enable all internal functions (ham_dump and ham_check_integrity). disabling those functions shrinks the library size by a few kilobytes o improved the documentation in the header-files Mar 16, 2007 - chris o improved configure.in - added --enable-shrink, removed optimizations for --enable-debug, all other modes will now use -O3 Mar 06, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.1 Mar 04, 2007 o moved the ./tests-subdirectory to a separate repository Mar 03, 2007 o win32 compiles and links as a static or dynamic library with Visual C++ 2005 Express Edition; testes are all successful Feb 11, 2007 o many small changes to compile everything on cygwin Feb 04, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.0 Feb 03, 2007 - chris o all write-functions return an error if they're called but the database is in read-only mode o added a new sample db3.c, which reads words from stdin and prints them in sorted order o removed the flag HAM_OPEN_CREATE; it was broken anyway Feb 02, 2007 - chris o database cursors are now fully implemented and tested Jan 24, 2007 - chris o default behaviour for ham_create changed; already existing files are now overwritten o now uses -Wall on platforms with gcc o resized the default cache size from 128kb to 256kb Jan 23, 2007 - chris o added a new sample db2.c, which copies an existing database to another database using a cursor. Jan 21, 2007 - chris o the cursor implementation is finished and seems to work; testing is not yet complete. o ham_flush now has an (unused) flags-parameter. o renamed samples/simple.c to samples/db1.c Jan 20, 2007 - chris o created one global transaction-pointer in the database object, and removed all transaction parameters for most functions; added tests that only one single transaction object is created. Dec 23, 2006 - chris --------------------------------------------------- release of hamsterdb-0.3.1 Dec 23, 2006 - chris o header-files are now installed to $prefix/include/ham o test is not build if db.h is missing Dec 19, 2006 - chris --------------------------------------------------- release of hamsterdb-0.3 Dec 15, 2006 - chris o started the port to MS Windows; so far, there are only two batch files to create the library, but no nmake file or Visual Studio project. o started to move the stuff to automake/autoconf; transition is not yet complete Dec 10, 2006 - chris o a new parameter HAM_OPTIMIZE_SIZE creates smaller files by merging freelist entries (comes at a small performance penalty) Nov 26, 2006 - chris o extended keys are now cached (if the cache size is big enough) Nov 24, 2006 - chris o added HAM_DISABLE_FREELIST_FLUSH - when a freelist page is modified, it is no longer flushed immediately. this is dangerous - in case of a crash, the database is most likely broken. Nov 23, 2006 - chris o fixed a small leak - if records are overwritten, and the new record size is smaller then sizeof(ham_offset_t), the old blob was not added to the freelist Nov 22, 2006 - chris o completely rewrote the freelist - elements are now sorted, and access is a lot faster. also, elements are merged, if possible, which results in smaller files o fixed a bug; if the root page is split, the address of the root page was not stored correctly in the database header Nov 12, 2006 - chris o completely rewrote the blob storage - blobs are now stored in one big chunk, and not splitted into pages o replaced read/write with pread/pwrite o fixed a small bug related to a performance improvement on Nov 5th (removed too many memset's...) Nov 09, 2006 - chris o fetching in-memory-blobs created a memory leak if the record data was allocated by the user Nov 07, 2006 - chris o blobs which were overwritten (and therefore were deleted) were not added to the freelist Nov 05, 2006 - chris o fixed a tiny memory leak in blob_erase o replaced linear search in btree_get_slot and btree_insert with binary search, got significant performance improvements o removed some unnecessary memsets, after allocating a new page o relaxed the "minkey"-rule: after erasing, pages are now merged when there are <=4 elements in the page Nov 04, 2006 - chris --------------------------------------------------- release of hamsterdb-0.1pre2 Oct 26, 2006 - chris o fixed a bug in the freelist - the return value was ignored, when allocating a new page. if the cache was too small, NULL was returned and the library crashed Oct 24, 2006 - chris o fixed minor issues for compiling on 32bit machines Oct 18, 2006 - chris o fixed a bug in the freelist - too many freelist pages were allocated o fixed a bug: when allocating pages, and the page was removed from the freelist, and the page type was not set correctly Oct 12, 2006 - chris o fixed a bug in blob_allocate when allocating big blobs o fixed a bug when overwriting keys, and the blob was empty, tiny or small (<=sizeof(ham_offset_t)) Oct 8, 2006 - chris o completely rewrote the test environment (./dbtest.py) Oct 3, 2006 - chris o rewrote the SConscript and all scons-files o added the Doxyfile (Doxygen build script) to generate the documentation Sep 22, 2006 - chris o added the README-file o enabled support for O_LARGEFILE Sep 21, 2006 - chris o renamed COPYING to LICENSE; also renamed the header comments in all files