Mar 09, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.1 Feb 19, 2008 - chris o added a macro HAM_CALLCONV to set the calling convention; per default, it's empty and therefore CDECL is used Feb 10, 2008 - chris o added a new internal function ham_cursor_get_database Jan 25, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.0 Jan 24, 2008 - chris o added documentation fixes in the tutorial and the header files o API change: added an additional parameter to the comparison-callback functions Jan 08, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.0rc1 Jan 08, 2008 - chris o bugfix: when inserting with ham_cursor_insert, but the insert fails (i.e. because the key already exists), the cursor is modified and uninitialized, but it should still point to the same element as before the operation Jan 06, 2008 - chris o bugfix: when uncoupling a cursor, sometimes the connection between page and cursor was broken Jan 02, 2008 - chris o API change for ham_env_close: if you call ham_env_close and there are still open Databases, the function will no longer fail with HAM_ENV_NOT_EMPTY; instead, the Databases are closed with ham_close; you still have to close the Cursors of each Database, though. o API change for ham_close: if you call ham_close and there are still open Cursors, the function will no longer fail with HAM_DB_NOT_EMPTY; instead, the Cursors are invalidated, but you still have to call ham_cursor_close to prevent memory leaks. Alternatively, the flag HAM_AUTO_CLEANUP implicitely calls ham_cursor_close on each function. Jan 01, 2008 - chris o calling ham_set_prefix_compare_func with NULL as a function pointer does no longer set the default prefix compare function, but completely disables prefix comparison Dec 31, 2007 - chris o Most errors now emit a ham_trace debug messages, esp. HAM_INV_PARAMETER; also, in release mode all messages now show the hamsterdb function name, and in debug mode they show the hamsterdb source filename/line number Dec 30, 2007 - chris o The debug- and error-messages are now always compiled; the message handler of the debug build prints all messages, the handler of the release build ignores debug messages Dec 29, 2007 - chris o Removed the function ham_dump; it was replaced by the command line tool and is no longer necessary Dec 20, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.9 Dec 19, 2007 - chris o Fixes in the MSVC Solution for Win64; the types (include/ham/types.h) were not set correctly to 64bit values Dec 17, 2007 - chris o SPARC fixes: several minor changes to avoid unaligned memory access, especially with duplicate keys and extended keys; hamsterdb should now run fine on SPARC Dec 14, 2007 - chris o configure: don't use lock_exclusive on Solaris (fails on SunOS 5.9) Dec 06, 2007 - chris o added two tools: ham_dump (for dumping a database) and ham_info (for printing statistics) Dec 03, 2007 - chris o bugfix for SPARC: fixed an unaligned access when assigning record numbers o bugfix for Windows x64: the offset of a memory mapped access was sometimes not calculated correctly Nov 24, 2007 - chris o added small performance improvements and fixes in the zlib-based compression-filter Nov 15, 2007 - chris --------------------------------------------------- release of hamsterdb-0.4.8 Nov 14, 2007 - chris o bugfix: the parameters for memory mapped I/O on win32 did not create private copies and therefore the file could be damaged if an operation aborted Nov 10, 2007 - chris o Environments now support a configurable number of databases; the default is 16, but files with a pagesize of 16kb can have up to 508 databases. See parameter HAM_PARAM_MAX_ENV_DATABASES for ham_env_create_ex. Nov 09, 2007 - chris o bugfix: when deleting a database from an Environment (ham_env_erase_db), the database name was not removed Nov 06, 2007 - chris o added a new function ham_env_get_database_names(), which returns all database names in an environment. Nov 01, 2007 - chris o implemented zlib-based compression; a new function was added: ham_enable_compression() o added a new option --disable-compression for configure; this option does not compile/link ham_enable_compression. Nov 01, 2007 - chris o added generic record filters - ham_add_record_filter and ham_remove_record_filter o added a new option --disable-encryption for configure; this option does not compile/link ham_env_enable_encryption. Oct 28, 2007 - chris o implemented AES encryption; a new function was added: ham_env_enable_encryption() o fixed bug in configure.in; on some systems, the call to getpagesize() was not declared correctly. i hope it works now. Oct 26, 2007 - chris o finished the C++ API in include/ham/hamsterdb.hpp and added two new C++ samples - db6.cpp and env3.cpp. Oct 21, 2007 - chris o added generic page filters - ham_env_add_page_filter and ham_env_remove_page_filter Oct 18, 2007 - chris o bugfix: when moving a cursor through duplicates and the cache was exhausted, an assert was triggered - fixed Oct 16, 2007 - chris o bugfix: ham_close in an environment could lead to a segmentation fault, because the cache for extended keys was not properly set up, before it was deleted Oct 11, 2007 - chris o the default pagesize for unix databases is now 16kb, not 4kb; benchmarks show that this is the fastest option, but still results in small files 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