Oct 17, 2015 - chris --------------------------------------------------- release of upscaledb-2.1.12 Oct 05, 2015 - chris --------------------------------------------------- o Removed support for MSVC 2010 Oct 02, 2015 - chris --------------------------------------------------- o Enabled use of integer compression for duplicate keys o Removed lzo compression o Removed configure option --disable-compression; compression is now always enabled o UPS_ENABLE_RECOVERY/HAM_ENABLE_RECOVERY is now deprecated, use UPS_ENABLE_TRANSACTIONS instead Oct 01, 2015 - chris --------------------------------------------------- o Remote URL identifier ham:// was changed to ups:// Sep 29, 2015 - chris --------------------------------------------------- o Removed ups_key_get_approximate_match_type o Renamed ups_db_get_key_count to ups_db_count Sep 23, 2015 - chris --------------------------------------------------- o Merging the functionality of hamsterdb pro o Changed license to GPL 3.0 o Removed ham_is_pro, ham_is_pro_evaluation o Rebranding: renamed namespace prefix "ham_" to "ups_", "HAM_" to "UPS_" o Renamed ham_set_errhandler to ups_set_error_handler o Removed the flag UPS_FIND_NEAR_MATCH o Renamed the flag UPS_FIND_EXACT_MATCH to UPS_FIND_EQ_MATCH o Removed ups_db_get_error Aug 26, 2015 - chris --------------------------------------------------- o issue #58 (.NET) - fixed crash in ham_strerror Jun 19, 2015 - chris --------------------------------------------------- o Fixing a bug during recovery where modified pages were not recreated o Reducing ftruncate() system calls Jun 04, 2015 - chris --------------------------------------------------- o Fixing compilation with --disable-remote Jun 03, 2015 - chris --------------------------------------------------- o Make sure that journal is correctly cleared after recovery May 26, 2015 - chris --------------------------------------------------- o Make sure that errors are not ignored when creating remote cursors (thanks, Ciprian Niculescu) May 07, 2015 - chris --------------------------------------------------- release of hamsterdb-2.1.11 May 06, 2015 - chris --------------------------------------------------- o C++ API no longer throws exceptions in destructors (thanks, Michael Möllney) o issue #49: fixed approx. matching issue with remote server May 04, 2015 - chris --------------------------------------------------- o issue #53: fixed race condition on Win32 Apr 06, 2015 - chris --------------------------------------------------- o issue #52: fixed cursor iteration w/ txns and approx matching o issue #50: removing problematic debug checks Apr 04, 2015 - chris --------------------------------------------------- o Add InsertRecNo method to hamsterdb-dotnet (thanks, mjmckp) Mar 06, 2015 - chris --------------------------------------------------- release of hamsterdb-2.1.10 Feb 18, 2015 - chris --------------------------------------------------- o When reading records from mmapped storage, a pointer into the storage is returned and the record data is no longer copied Feb 16, 2015 - chris --------------------------------------------------- o The page cache eviction was moved to a background thread Feb 03, 2015 - chris --------------------------------------------------- o Default compilation flag is now -O3 Jan 23, 2015 - chris --------------------------------------------------- o Fixed FreeBSD compilation errors (thanks, Heping Wen) Jan 22, 2015 - chris --------------------------------------------------- o Added Cursor.TryFind to hamsterdb-dotnet (thanks, mjmckp ) Jan 12, 2015 - chris --------------------------------------------------- o issue #46: fixed segfault in approx. matching (thanks, Joel Jacobson) Jan 09, 2015 - chris --------------------------------------------------- o issue #45: fixed segfault in Journal recovery (thanks, Michael Moellney) Jan 02, 2015 - chris --------------------------------------------------- o issue #44: approx. matching returned the wrong key (thanks, Joel Jacobson) Dec 30, 2014 - chris --------------------------------------------------- o issue #43: fixed segfault when flushing transactions (thanks, Joel Jacobson) Dec 15, 2014 - chris --------------------------------------------------- o Implemented ham_cursor_get_record_size() for remote access Dec 12, 2014 - chris --------------------------------------------------- o Deprecated HAM_RECORD_NUMBER (use HAM_RECORD_NUMBER64 instead); introduced a new flag HAM_RECORD_NUMBER32 for 32bit record numbers Dec 05, 2014 - chris --------------------------------------------------- o Added a new parameter HAM_PARAM_POSIX_FADVISE (thanks, Thomas Fähnle) Nov 28, 2014 - chris --------------------------------------------------- o Fixed large file support on linux (thanks, Thomas Fähnle) Nov 27, 2014 - chris --------------------------------------------------- o Removed dependency to malloc.h o issue #42: ham_cursor_find returned wrong key w/ approx. matching and transactions Nov 21, 2014 - chris --------------------------------------------------- o Fixed compilation error on OSX (thanks, Daniel Lemire) Nov 20, 2014 - chris --------------------------------------------------- o Fixed compilation error on debian Wheezy, gcc 4.7.2, 32bit (thanks, Thomas Fähnle) Nov 17, 2014 - chris --------------------------------------------------- o The macro HAM_API_REVISION is now deprecated; use HAM_VERSION_* instead Nov 16, 2014 - chris --------------------------------------------------- o The github wiki is now linked into documentation/wiki Nov 08, 2014 - chris --------------------------------------------------- release of hamsterdb-2.1.9 Nov 08, 2014 - chris --------------------------------------------------- o C# API now supports approx. matching o C# auto-cleanup of resources no longer can cause segmentation faults Nov 01, 2014 - chris --------------------------------------------------- o Removed outdated project files of MSVC2008, added MSVC2013 Oct 15, 2014 - chris --------------------------------------------------- o Removed custom ham_* typedefs; now using types from stdint.h Oct 14, 2014 - chris --------------------------------------------------- o Fixed a failing test from the erlang package Oct 10, 2014 - chris --------------------------------------------------- o Unused pages are now freed with madvice; minor performance improvements when large files are mmapped Oct 06, 2014 - chris --------------------------------------------------- o Improved record storage and reduced size for fixed length records o Minor performance improvements for hola_sum o ABI change: removed deprecated fields from ham_record_t Sep 22, 2014 - chris --------------------------------------------------- o Fixed an assert when resizing lists with an UpfrontIndex (nodes with keys of variable lengths or duplicate records) Sep 18, 2014 - chris --------------------------------------------------- o Major rewrite of the recovery logic; increased test coverage o Added new parameter HAM_PARAM_JOURNAL_SWITCH_THRESHOLD to control the size of the journal files Sep 11, 2014 - chris --------------------------------------------------- o issue #39: recovery can fail with IO_ERROR if journal file is incomplete; fixed (thanks, Michael Moellney) o issue #38: temporary transactions and recovery (w/o transactions) created huge logfiles; fixed (thanks, Michael Moellney) Sep 10, 2014 - chris --------------------------------------------------- o issue #34: some names violated reserved identifiers, fixed (thanks, Markus Elfring) Aug 28, 2014 - chris --------------------------------------------------- o Bugfix: fixed-length records were sometimes not inserted correctly with HAM_DUPLICATE_INSERT_FIRST Aug 26, 2014 - chris --------------------------------------------------- o Introduced two new makros to initialize ham_key_t and ham_record_t structures o The file structure has been completely reorganized. It is described in documentation/source/structure.txt. o Splitting unittests/cursor.cpp in two files to avoid out-of-memory errors during compilation on weak VM's Aug 21, 2014 - chris --------------------------------------------------- o Fixed segfault when opening a file with HAM_ENABLE_RECOVERY (and without HAM_ENABLE_TRANSACTIONS) Jul 15, 2014 - chris --------------------------------------------------- o hamserver now also compiles against libuv 0.10.25 (in addition to 0.11.*) Jul 14, 2014 - chris --------------------------------------------------- o Added new parameter to set a file size limit - HAM_PARAM_FILE_SIZE_LIMIT Jul 10, 2014 - chris --------------------------------------------------- release of hamsterdb-2.1.8 Jul 01, 2014 - chris --------------------------------------------------- o The database format no longer tries to be endian agnostic; the database is now stored in host endian format. The endian agnostic code was broken anyway, and I had no hardware to test it. Jun 30, 2014 - chris --------------------------------------------------- o Added a Python API o PageManager state now also persists the page id with (likely) gaps for new blobs o Added new API ham_cursor_get_duplicate_position o ham_db_get_error is now deprecated o header files no longer include winsock.h to avoid conflicts with winsock2.h on Windows platforms Jun 30, 2014 - chris --------------------------------------------------- o Both btree layouts have been completely rewritten; PAX KeyLists can now be used in combination with duplicate RecordLists, and variable length KeyLists can now be used in combination with PAX RecordLists May 13, 2014 - chris --------------------------------------------------- o Adding the new "hola" API - hamsterdb analytical functions for COUNT, SUM, AVERAGE etc. See ham/hamsterdb_ola.h for the declarations May 06, 2014 - chris --------------------------------------------------- o Avoiding Btree splits if keys are appended (HAM_HINT_APPEND) May 02, 2014 - chris --------------------------------------------------- o The internal communication with the remote server now uses a different protocol which is faster than google's protobuffer Apr 25, 2014 - chris --------------------------------------------------- o Fixing a performance regression in 2.1.7 - large fixed-length keys created too many page splits, even if they were stored as extended keys Apr 08, 2014 - chris --------------------------------------------------- o PAX layout now uses linear search for small ranges; this improves search performance by 5-10% Apr 05, 2014 - chris --------------------------------------------------- o Removed the ham_get_license API (and serial.h) Apr 04, 2014 - chris --------------------------------------------------- o issue #33: upgraded to libuv 0.11.22 o Removed the API ham_get_license Mar 26, 2014 - chris --------------------------------------------------- release of hamsterdb-2.1.7 Mar 24, 2014 - chris --------------------------------------------------- o Switched from GPL license to Apache Public License 2.0 Mar 23, 2014 - chris --------------------------------------------------- o Added a unittest for issue #32 o Removed AES encryption; will be available as a commercial add-on. Mar 21, 2014 - chris --------------------------------------------------- o Fixed a journalling bug; partial records were not logged correctly Mar 10, 2014 - chris --------------------------------------------------- o Added flag HAM_DISABLE_RECOVERY; disables recovery/journal when used in combination with HAM_ENABLE_TRANSACTIONS Mar 09, 2014 - chris --------------------------------------------------- o Committed Transactions are no longer flushed immediately, but can be buffered and flushed together with other committed Transactions Mar 04, 2014 - chris --------------------------------------------------- o Removed the txn parameter from ham_db_check_integrity() Feb 26, 2014 - chris --------------------------------------------------- o Fixed a freelist bug; the persistent freelist state was sometimes not correctly initialized Feb 25, 2014 - chris --------------------------------------------------- o ham_db_check_integrity() has an additional parameter for flags; currently supported is HAM_PRINT_GRAPH, which prints a btree to a graph file for "dot". Only if HAM_DEBUG is enabled. Feb 21, 2014 - chris --------------------------------------------------- o The Btree SMOs were completely rewritten. Insert SMOs (splits) now happen on the "way down" instead of returning. Erase SMOs no longer shift but merge only; this reduced 90% of the erase complexity. Feb 21, 2014 - chris --------------------------------------------------- release of hamsterdb-2.1.6 Feb 21, 2014 - chris --------------------------------------------------- o issue #30: very small cache sizes cause file size explosion Feb 20, 2014 - chris --------------------------------------------------- o The log was merged with the journal; the journal now stores redo-information for physical changes. To improve performance, the journal buffers its data before flushing to disk. Feb 08, 2014 - chris --------------------------------------------------- release of hamsterdb-2.1.5 Feb 06, 2014 - chris --------------------------------------------------- o Bugfix: cache purges always purged one page only; now purges as many as required Feb 05, 2014 - chris --------------------------------------------------- o Fixed several regressions that crept in when 2.1.4 was released Feb 04, 2014 - chris --------------------------------------------------- o Bugfix: if a Database is closed in an in-memory Environment, the Database name was still occupied and the Database could not be re-created. Jan 28, 2014 - chris --------------------------------------------------- o The freelist was replaced and scales much better now o Removed the parameter HAM_PARAM_MAX_DATABASES - the number of databases is now always set to the maximum limit. Jan 08, 2014 - chris --------------------------------------------------- o Removed HAM_CACHE_STRICT, HAM_CACHE_FULL and the related functionalities Jan 05, 2014 - chris --------------------------------------------------- release of hamsterdb-2.1.4 Jan 01, 2014 - chris --------------------------------------------------- o Default Btree node layout now also stores duplicate keys inline, even if they're > 8 bytes (previous versions stored duplicate keys in a separate blob, which required lots of additional I/O) Nov 23, 2013 - chris --------------------------------------------------- o Default Btree node layout for variable length keys can now store fixed length records inline if they're small enough (and if duplicate keys are disabled) Nov 22, 2013 - chris --------------------------------------------------- o Default Btree node layout for variable length keys and duplicate keys was completely rewritten and now uses an up-front index in the node o C++ API: Can now specify HAM_RECORD_USER_ALLOC when retrieving keys with ham_db_find Nov 05, 2013 - chris --------------------------------------------------- o Removed HAM_DISABLE_VARIABLE_KEYS, HAM_ENABLE_EXTENDED_KEYS; they're no longer required. Introduced HAM_KEY_SIZE_UNLIMITED for unlimited/variable length keys (the default) Oct 31, 2013 - chris --------------------------------------------------- o ham_bench now can generate keys from /usr/share/dict/words Oct 25, 2013 - chris --------------------------------------------------- o Added HAM_PARAM_RECORD_SIZE to specify a fixed record size; if it's small enough, the records are stored in the leaf and not in a separately allocated blob Oct 22, 2013 - chris --------------------------------------------------- release of hamsterdb-2.1.3 Oct 18, 2013 - chris --------------------------------------------------- o Introduced a new Btree node layout for fixed length keys types which is better optimized for CPU caches and more compact then the legacy format Oct 14, 2013 - chris --------------------------------------------------- o Fixed invalid memory access when using mmap on pagesizes which are not a power of two Oct 11, 2013 - chris --------------------------------------------------- o Fixed a btree corruption during SMOs (internal shifts after underflow) Oct 5, 2013 - chris --------------------------------------------------- o Integrating "ham_bench" tool for benchmarking and testing Sep 23, 2013 - chris --------------------------------------------------- o Introducing "types" for the btree; the default type is HAM_TYPE_BINARY, additional types are HAM_TYPE_CUSTOM, HAM_TYPE_UINT32 etc. The types influence the internal btree layout. o ham_db_set_compare_func is only allowed if the key type is HAM_TYPE_CUSTOM; otherwise, an error is returned Sep 13, 2013 - chris --------------------------------------------------- o The btree now has relaxed rules regarding merging/shifting after delete; if a node is less than 20% full it will trigger an SMO (previously: 50%), and shifts only happen if both pages have a sufficiently different size o For consistency reasons, some macros were renamed: HAM_PARAM_CACHESIZE -> HAM_PARAM_CACHE_SIZE HAM_PARAM_PAGESIZE -> HAM_PARAM_PAGE_SIZE HAM_PARAM_KEYSIZE -> HAM_PARAM_KEY_SIZE Sep 01, 2013 - chris --------------------------------------------------- o issue 27: No longer enabling AES encryption if openssl headers are missing Aug 27, 2013 - chris --------------------------------------------------- o Renamed HAM_DISABLE_VAR_KEYLEN to HAM_DISABLE_VARIABLE_KEYS to improve consistency o Renamed HAM_ENABLE_DUPLICATES to HAM_ENABLE_DUPLICATE_KEYS to improve consistency Aug 25, 2013 - chris --------------------------------------------------- o Persistent freelist statistics data is now endian clean Aug 22, 2013 - chris --------------------------------------------------- o Cleaned up the configure.ac script o Cleaned up the file format; the new format is no longer compatible. See the README file for more information and how to upgrade. o Cleaned up the configure.ac script Aug 23, 2013 - chris --------------------------------------------------- release of hamsterdb-2.1.2 Aug 21, 2013 - chris --------------------------------------------------- o Fixed spurious failures of the java unittests Aug 06, 2013 - chris --------------------------------------------------- o issue #25: tcmalloc is now disabled on MacOS Jul 24, 2013 - chris --------------------------------------------------- o Rewrote client/server implementation - using libuv instead of mongoose - using tcp instead of http (and removing the dependency to libcurl) Jul 21, 2013 - chris --------------------------------------------------- o Added new configure option --without-tcmalloc o issue #23, #25: Fixed linking problems regarding tcmalloc_minimal.so (Thanks, Johnathan Conley and brancaleone) Jul 19, 2013 - chris --------------------------------------------------- o issue #24: Fixed compilation problem on MacOS (Thanks, Johnathan Conley) Jul 15, 2013 - chris --------------------------------------------------- o ham_env_close now truncates the file size and removes unused pages at the end of the file Jun 27, 2013 - chris --------------------------------------------------- o issue #17: configure.in checks now for (hopefully) correct boost version Jun 26, 2013 - chris --------------------------------------------------- o Added tracking of internal metrics, exported via ham_env_get_metrics (declared in ham/hamsterdb_int.h) Jun 25, 2013 - chris --------------------------------------------------- o added support for AES encryption Jun 23, 2013 - chris --------------------------------------------------- release of hamsterdb-2.1.1 Jun 14, 2013 - chris --------------------------------------------------- o Removed internal (but exported) functions ham_env_get_device, ham_env_set_device Jun 10, 2013 - chris --------------------------------------------------- o Improved integration of tcmalloc, removed ham_env_set_allocator Jun 05, 2013 - chris --------------------------------------------------- o A small semantic change: when retrieving partial records with ham_db_find or ham_cursor_find, the partial size is now stored in record.partial_size and the original size is stored in record.size. Previously, the partial size was stored in record.size. May 19, 2013 - chris --------------------------------------------------- o Merged various MacOS related fixes (thanks, Johnathan Conley) May 10, 2013 - chris --------------------------------------------------- o Fixed build if remote functionality is disabled (i.e. because protobuffer or libcurl is missing) Mar 02, 2013 - chris --------------------------------------------------- o Fixed JDK include paths on MacOS (Thanks, Mark Sutheran) Feb 28, 2013 - chris --------------------------------------------------- release of hamsterdb-2.1.0 Jan 04, 2013 - chris --------------------------------------------------- o Extended keys are now disabled by default; use HAM_ENABLE_EXTENDED_KEYS to enable them Dec 26, 2012 - chris --------------------------------------------------- o In-Memory Environments now support Transactions Dec 25, 2012 - chris --------------------------------------------------- o Renamed the C++ namespace from "ham" to "hamsterdb" Dec 23, 2012 - chris --------------------------------------------------- o Removed the deprecated flag HAM_NOT_INITIALIZED Dec 20, 2012 - chris --------------------------------------------------- o Removed the deprecated flag HAM_LOCK_EXCLUSIVE o Renamed ham_check_integrity to ham_db_check_integrity Dec 19, 2012 - chris --------------------------------------------------- o Removed the flag HAM_USE_BTREE; it was not required. Dec 18, 2012 - chris --------------------------------------------------- o Removed HAM_FAST_ESTIMATE and improved performance of ham_db_get_key_count if use of duplicate keys are disabled Dec 18, 2012 - chris --------------------------------------------------- o Added two new tools: ham_export to export a database into a binary format, ham_import to create an Environment from the exported data (or to merge the data into an existing Environment). ham_export is linked statically. ham_export/ham_import will provide an upgrade path for newer hamsterdb versions. Dec 17, 2012 - chris --------------------------------------------------- o Applied patch with many automake/autoconf related cleanups (thanks, Daniel Richard G. ) Dec 13, 2012 - chris --------------------------------------------------- o Updated mmap support; mmap is now about 30% faster compared to the previous implementation Dec 07, 2012 - chris --------------------------------------------------- o Minor performance improvement if HAM_ENABLE_FSYNC and HAM_ENABLE_TRANSACTIONS Dec 06, 2012 - chris --------------------------------------------------- o Removed the deprecated flags HAM_HINT_UBER_FAST_ACCESS, HAM_HINT_RANDOM_ACCESS and HAM_HINT_SEQUENTIAL Dec 05, 2012 - chris --------------------------------------------------- o Changed interface of ham_cursor_create from ham_cursor_create(ham_db_t *db, ham_txn_t *txn, ham_u32_t flags, ham_cursor_t **cursor); to ham_cursor_create(ham_cursor_t **cursor, ham_db_t *db, ham_txn_t *txn, ham_u32_t flags); o Renamed several functions to improve consistency: ham_get_error -> ham_db_get_error ham_set_prefix_compare_func -> ham_db_set_prefix_compare_func ham_set_compare_func -> ham_db_set_compare_func ham_find -> ham_db_find ham_insert -> ham_db_insert ham_erase -> ham_db_erase ham_get_key_count -> ham_db_get_key_count ham_get_parameter -> ham_db_get_parameter ham_get_env -> ham_db_get_env ham_close -> ham_db_close Dec 02, 2012 - chris --------------------------------------------------- o Removed ham_env_new, ham_env_delete, ham_new, ham_delete and modified the parameters of ham_env_create, ham_env_open, ham_env_create_db and ham_env_open_db o Removed ham_open, ham_open_ex, ham_create, ham_create_ex; creating an Environment is now mandatory Nov 21, 2012 - chris --------------------------------------------------- o Renamed HAM_DB_READ_ONLY to HAM_WRITE_PROTECTED o Removed ham_env_create; renamed ham_env_create_ex to ham_env_create o Removed ham_env_open; renamed ham_env_open_ex to ham_env_open o Removed deprecated flags HAM_DISABLE_FREELIST_FLUSH, HAM_LOCK_EXCLUSIVE, HAM_IN_MEMORY_DB o Refactored ham_get_parameters, ham_env_get_parameters and HAM_PARAM_*: - HAM_PARAM_GET_FLAGS -> renamed to HAM_PARAM_FLAGS - HAM_PARAM_GET_FILEMODE -> renamed to HAM_PARAM_FILEMODE - HAM_PARAM_GET_FILEMODE -> renamed to HAM_PARAM_FILEMODE - HAM_PARAM_MAX_ENV_DATABASES -> renamed to HAM_PARAM_MAX_DATABASES - HAM_PARAM_GET_KEYS_PER_PAGE -> renamed to HAM_PARAM_MAX_KEYS_PER_PAGE - Reduced list of options for ham_get_parameters; see hamsterdb.h - Removed HAM_PARAM_DBNAME o Removed ham_get_flags; use ham_get_parameters instead o Removed the HAM_DAM_* flags Nov 20, 2012 - chris --------------------------------------------------- o Removed ham_cursor_find_ex; renamed ham_cursor_find to ham_cursor_find_ex Nov 19, 2012 - chris --------------------------------------------------- o Removed ham_enable_encryption and the file filters; this function was not really used o Removed ham_enable_compression and the record filters; this function was not really used o Removed ham_get_keycount_per_page; the keycount can still be retrieved with ham_get_parameter(... HAM_PARAM_GET_KEYS_PER_PAGE...) o Removed sorted duplicates; they anyway did not work in combination with Transactions. They will be fully implemented at a later stage. o Removed ham_flush; use ham_env_flush instead o Renamed HAM_WRITE_THROUGH to HAM_ENABLE_FSYNC Nov 25, 2012 - chris --------------------------------------------------- release of hamsterdb-2.0.5 Nov 16, 2012 - chris --------------------------------------------------- o Now linking against libtcmalloc_minimal if it's installed Nov 15, 2012 - chris --------------------------------------------------- o Performance improvement: insertion of a new record number no longer modifies the header page Oct 25, 2012 - chris --------------------------------------------------- o (win32) Now creating file with attribute FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (thanks, Jake) Sep 27, 2012 - chris --------------------------------------------------- o issue #16: Fixed log file switching for temporary Transactions Sep 25, 2012 - chris --------------------------------------------------- o Fixed recovery process for temporary Transactions Aug 30, 2012 - chris --------------------------------------------------- o Removed HAM_PARAM_GET_STATISTICS; ham/hamsterdb_stats.h is no longer public, and the functions are no longer exported Aug 27, 2012 - chris --------------------------------------------------- o Renamed HAM_IN_MEMORY_DB to HAM_IN_MEMORY Aug 12, 2012 - chris --------------------------------------------------- o The internal C++ implementation was moved into namespace "ham" in order to avoid conflicts with other applications Aug 01, 2012 - chris --------------------------------------------------- o (dotnet) Fixed invalid memory access when using Parameter[] in env.CreateDatabase or env.OpenDatabase (Thanks, Jason) Jul 23, 2012 - chris --------------------------------------------------- release of hamsterdb-2.0.4 Jul 21, 2012 - chris --------------------------------------------------- o (java) Fixed race condition when closing Cursors (thanks, Mark S.) Jul 20, 2012 - chris --------------------------------------------------- o Fixed issue 8: Fixed data corruption when retrieving a record returns HAM_BLOB_NOT_FOUND (thanks, Artem) Jul 18, 2012 - chris --------------------------------------------------- o Fixed several bugs (mainly related to misplaced asserts) when performing recovery Jul 10, 2012 - chris --------------------------------------------------- o Fixed crash when reusing a page from the cache that was not correctly initialized (thanks, Jason) o Fixed crash when HAM_ENABLE_RECOVERY w/o HAM_ENABLE_TRANSACTIONS (thanks, Peter) Jul 08, 2012 - chris --------------------------------------------------- o Fixed issue 7: approximate matching did not return the correct key (thanks, Artem) o Fixed MacOS compilation problem (thanks, Jason P.) Jun 24, 2012 - chris --------------------------------------------------- release of hamsterdb-2.0.3 Jun 20, 2012 - chris --------------------------------------------------- o Added project files for Windows MSVC 2010 Jun 8, 2012 - chris --------------------------------------------------- o fixed linker error when libboost_thread-mt.lib is installed (instead of libboost_thread.lib) (thanks, foxb) o issue #6: fixed compilation error in OSX Lion o fixed HAM_INTERNAL_ERROR when creating database with HAM_ENABLE_RECOVERY but without HAM_ENABLE_TRANSACTIONS (thanks, Peter) Apr 23, 2012 - chris --------------------------------------------------- o configure.in now checking for pread and pwrite (for some reason the previous test were missing) o fixed fsync's when flushing to disk, making recovery more robust Apr 22, 2012 - chris --------------------------------------------------- o The legacy database format of hamsterdb 1.0.9 and older is no longer supported Apr 21, 2012 - chris --------------------------------------------------- o Fixed a bug in recovery; recovery is now more robust, and there are more fsync's if HAM_WRITE_THROUGH is enabled Apr 25, 2012 - chris --------------------------------------------------- release of hamsterdb-2.0.2 Apr 24, 2012 - chris --------------------------------------------------- o Fixed a buffer overrun in the freelist Apr 14, 2012 - chris --------------------------------------------------- o hamsterdb is now thread safe. The boost c++ library is now required for building Mar 14, 2012 - chris --------------------------------------------------- o enabled approx matching for ham_cursor_find Mar 11, 2012 - chris --------------------------------------------------- o hamsterdb is now thread-safe o When using Transactions, the key->data and record->data pointers will point into memory managed by the Transaction, not by the Database Feb 18, 2012 - chris --------------------------------------------------- release of hamsterdb-2.0.1 Feb 15, 2012 - chris --------------------------------------------------- o ham_find() now supports approximate matching w/ transactions enabled Feb 07, 2012 - chris --------------------------------------------------- o fixed bug where HAM_ONLY_DUPLICATES was ignored when used in a Transaction (thanks, Mark Ruijter from lessfs) Feb 06, 2012 - chris --------------------------------------------------- o added a public macro HAM_API_REVISION to allow users to programmatically distinguish between new and old interface of ham_txn_begin o win32: fixed build issue if HAM_DISABLE_COMPRESSION is defined (thanks, Andy Thalmann (http://www.softdev.ch)) Feb 05, 2012 - chris --------------------------------------------------- o the device structure (ham_device_t) was C++-ified; if you use ham_env_set_device then you will have to change your code o fixed wrong version check when loading databases from 1.1.x o now using the native Win32 API for os_pwrite and os_pread (thanks, Andy Thalmann (http://www.softdev.ch)) o added new parameter HAM_PARAM_LOG_DIRECTORY to specify the directory where the log file and the journal files are stored Jan 19, 2012 - chris --------------------------------------------------- release of hamsterdb-2.0.0 o Changed interface ham_txn_begin, also for Wrapper APIs Jan 05, 2012 - chris --------------------------------------------------- o when recovery or transactions are enabled then for most operations the physical log is no longer required; this reduces I/O and improves performance Dec 14, 2011 - chris --------------------------------------------------- o dotnet: integrated the files, updated the interface Dec 11, 2011 - chris --------------------------------------------------- o java: integrated the files, updated the interface o wince: moved to /contrib directory Nov 26, 2011 - chris --------------------------------------------------- release of hamsterdb-2.0.0rc3 Nov 20, 2011 - chris --------------------------------------------------- o improved performance for duplicates, transactions and cursors Nov 10, 2011 - chris --------------------------------------------------- o fixed the remaining 3 known issues after lots of refactoring Oct 11, 2011 - chris --------------------------------------------------- release of hamsterdb-2.0.0rc2 Oct 09, 2011 - chris --------------------------------------------------- o fixed a bug when erasing extended keys; sometimes this would try to load extended keys which do not exist (thanks, Andi Weber) Oct 02, 2011 - chris --------------------------------------------------- o added a new function ham_cursor_get_record_size; retrieves the record size of the current item Sep 27, 2011 - chris --------------------------------------------------- o the cache size is now 64bit, allowing caches > 4 GB Aug 25, 2011 - chris --------------------------------------------------- o configure.in: AM_INIT_AUTOMAKE requests now version 1.10 (thanks, Ger) o enabled large file support for 32bit linux (thanks, liheyuan) Jul 25, 2011 - chris --------------------------------------------------- release of hamsterdb-2.0.0rc1 Jun 02, 2011 - chris o the ./configure switch --enable-internal is now obsolte and enabled by default Apr 18, 2011 - chris o HAM_SORT_DUPLICATES is now disabled if Transactions are enabled. In such cases hamsterdb will return HAM_INV_PARAMETER. Dec 29, 2010 - chris o Approx. matching is now disabled if Transactions are enabled. In such cases functions will return HAM_INV_PARAMETER. o Direct access (HAM_DIRECT_ACCESS) is now disabled if Transactions are enabled. In such cases functions will return HAM_INV_PARAMETER. In previous versions Direct Access was anyway not possible in combination with Transactions, because Transactions were not possible with In-Memory Databases. Dec 27, 2010 - chris o when using HAM_PARTIAL in combination with Transactions, HAM_INV_PARAMETER is now returned. In previous versions of hamsterdb, this combination was allowed. If you need this implemented then please tell me. Dec 26, 2010 - chris o when using HAM_PARTIAL and the record->size is <= 8 then error HAM_INV_PARAMETER is returned. In previous versions, this combination returned false results. Reason is because hamsterdb uses a compressed, efficient storage for such records, and they do not support partial access. Sep 15, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.6 Oct 11, 2011 - chris --------------------------------------------------- release of hamsterdb-2.0.0rc2 Oct 09, 2011 - chris --------------------------------------------------- o fixed a bug when erasing extended keys; sometimes this would try to load extended keys which do not exist (thanks, Andi Weber) Oct 02, 2011 - chris --------------------------------------------------- o added a new function ham_cursor_get_record_size; retrieves the record size of the current item Sep 27, 2011 - chris --------------------------------------------------- o the cache size is now 64bit, allowing caches > 4 GB Aug 25, 2011 - chris --------------------------------------------------- o configure.in: AM_INIT_AUTOMAKE requests now version 1.10 (thanks, Ger) o enabled large file support for 32bit linux (thanks, liheyuan) Jul 25, 2011 - chris --------------------------------------------------- release of hamsterdb-2.0.0rc1 Jun 02, 2011 - chris o the ./configure switch --enable-internal is now obsolte and enabled by default Apr 18, 2011 - chris o HAM_SORT_DUPLICATES is now disabled if Transactions are enabled. In such cases hamsterdb will return HAM_INV_PARAMETER. Dec 29, 2010 - chris o Approx. matching is now disabled if Transactions are enabled. In such cases functions will return HAM_INV_PARAMETER. o Direct access (HAM_DIRECT_ACCESS) is now disabled if Transactions are enabled. In such cases functions will return HAM_INV_PARAMETER. In previous versions Direct Access was anyway not possible in combination with Transactions, because Transactions were not possible with In-Memory Databases. Dec 27, 2010 - chris o when using HAM_PARTIAL in combination with Transactions, HAM_INV_PARAMETER is now returned. In previous versions of hamsterdb, this combination was allowed. If you need this implemented then please tell me. Dec 26, 2010 - chris o when using HAM_PARTIAL and the record->size is <= 8 then error HAM_INV_PARAMETER is returned. In previous versions, this combination returned false results. Reason is because hamsterdb uses a compressed, efficient storage for such records, and they do not support partial access. Sep 15, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.6 Jul 01, 2011 - chris --------------------------------------------------- release of hamsterdb-1.1.12 Jul 01, 2011 - chris --------------------------------------------------- o exported two internal functions as test gateways: ham_env_get_device and ham_env_set_allocator (in ham/hamsterdb_int.h) Jul 01, 2011 - chris --------------------------------------------------- o bugfix: there was still a problem in the cache purge algorithm, and the memory consumption passed the cache boundaries. (Thanks, Jake) Jun 30, 2011 - chris --------------------------------------------------- release of hamsterdb-1.1.11 Jun 27, 2011 - chris o fixed a performance regression - when Transactions are enabled, the file was frequently flushed via fsync() even if HAM_WRITE_THROUGH was not set (thanks, Jake and Colm) Jun 26, 2011 - chris o the ./configure switch --enable-internal is now obsolte and enabled by default Jun 20, 2011 - chris --------------------------------------------------- release of hamsterdb-1.1.10 Jun 18, 2011 - chris --------------------------------------------------- o the flag HAM_WRITE_THROUGH will now cause an immediate flush of all file handles to disk (via fdatasync or fsync, if fdatasync is not available, or FlushFileHandle on win32) if recovery (or Transactions) are enabled. This causes a noticable performance hit if you have many short-running Transactions, but it improves the durability in case the hardware crashes (a normal application segfault is not problematic because in such a case the operating system buffers are still flushed to disk). May 25, 2011 - chris --------------------------------------------------- o the cachesize is now more respected than before; while earlier releases frequently exceeded the cache when necessary, hamsterdb will now try to remain in the cache boundaries as good as possible May 13, 2011 - chris --------------------------------------------------- o added tools/ham_log - a tool to dump logfiles o added tools/ham_recover - a tool to recover broken databases Apr 28, 2011 - chris --------------------------------------------------- o bugfix: when ham_open[_ex] or ham_env_open[_ex] return HAM_NEED_RECOVERY these functions deleted the logfiles by mistake. Fixed, and added a unittest to avoid regressions Apr 27, 2011 - chris --------------------------------------------------- o bugfix: after SMOs which affect the root page (i.e. a new root page is created) the header page is sometimes not written to the log file. This can cause data loss after recovery (Thanks, Mark) Apr 15, 2011 - chris --------------------------------------------------- o bugfix: the cache was not purged correctly, thus grew uncontrolled (Thanks, Mark) Mar 31, 2011 - chris --------------------------------------------------- o bugfix: the hamzilla server always failed to read the configuration file because of a wrong error check (Thanks, Sebastien) Mar 28, 2011 - chris --------------------------------------------------- o bugfix: when opening a database, and recovery is enabled, the 'threshold' of the log files (which decides about the log file switching) was not initialized correctly. (Thanks, Jake Sloan) Feb 03, 2011 - chris --------------------------------------------------- release of hamsterdb-1.1.9 Feb 02, 2011 - chris --------------------------------------------------- o added hamsterdb.spec to generate RPM files (thanks, John Gunkel) Jan 28, 2011 - chris --------------------------------------------------- o linux 64bit: when having long-running transactions with very big databases (200 GB), and the working set of mmapped memory gets too big, mmap will fail and return ENOMEM. In this case, hamsterdb now falls back to malloc/read. Jan 25, 2011 - chris --------------------------------------------------- o merged bugfix from branch bleeding_edge: on 64bit windows, the remote handles returned by the server were broken Jan 24, 2011 - chris --------------------------------------------------- o several smaller fixes based on static code analysis Jan 10, 2011 - chris --------------------------------------------------- o removed two wrong asserts and improved the fix of Nov 25th Dec 05, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.8 Dec 03, 2010 - chris --------------------------------------------------- o configure.in will no longer overwrite -Ox flags; the default compilation option is now -O2 (thanks, Mark) Nov 30, 2010 - chris --------------------------------------------------- o bugfix with HAM_DIRECT_ACCESS and cursors which insert duplicates at the beginning of the duplicate list; if record size is <= 8 bytes then invalid data was returned Nov 25, 2010 - chris --------------------------------------------------- o bugfix in transaction handling - in certain cases with long running transactions, a circular reference in a linked list causes an endless loop (thanks, Mark) Oct 31, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.7 Oct 22, 2010 - chris --------------------------------------------------- o further enhanced performance by improving some cache interfaces Oct 20, 2010 - chris --------------------------------------------------- o enhanced performance when appending (or prepending) keys; hamsterdb will automatically assume HAM_HINT_APPEND (or HAM_HINT_PREPEND) if the previous operation was also an append (or prepend) Oct 16, 2010 - chris --------------------------------------------------- o fixed a small memory leak when committing remote transactions o bugfix: using HAM_DIRECT_ACCESS with records of a length <= 8 bytes returned pointers to temporary copies of the record and not to the original data (thanks, Lionel) Oct 14, 2010 - chris --------------------------------------------------- o another important performance improvements when using hamsterdb with extended keys Oct 13, 2010 - chris --------------------------------------------------- o performance improvements - hamsterdb scales now better with millions of keys Sep 15, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.6 Sep 12, 2010 - chris o the unix daemon was ported to a Win32 Service (which can also run in foreground) Sep 07, 2010 - chris o the tutorial is no longer part of the Doxygen files; instead it's now online in a wiki: http://wiki.github.com/cruppstahl/hamsterdb o several functions are now deprecated: use ham_open_ex instead of ham_open use ham_create_ex instead of ham_create use ham_env_open_ex instead of ham_env_open use ham_env_create_ex instead of ham_env_create Aug 31, 2010 - chris o fixed compilation on newest ArchLinux (gcc 4.5.1) - thanks, zebul666 Aug 28, 2010 - chris o created MSVC projects for the server and the new samples; all MSVC projects and workspaces were updated to Visual Studio 2009 Aug 26, 2010 - chris o ham_flush is now deprecated, use ham_env_flush instead; both functions had very similar functionality Aug 25, 2010 - chris o renamed ham/hamserver.h to ham/hamsterdb_srv.h; all symbols were renamed from hamserver_XXX to ham_srv_XXX o removed the dependency to protobuf-c; now directly using google's protobuf (for C++) Aug 11, 2010 - chris o improved the documentation in hamsterdb.h Aug 11, 2010 - chris o added a unix daemon (tools/hamsrvd.c) which can serve multiple Environments. configuration is read from a json file (a sample configuration is included in tools/example.config) Aug 10, 2010 - chris o the server can now write access logfiles and error logfiles; the hamserver_config_t structure was modified Aug 09, 2010 - chris o fixed a few memory leaks in remote handling Aug 04, 2010 - chris o improved hamserver.h documentation; also, all functions in hamserver.h no longer return bool but a proper status value Aug 03, 2010 - chris o fixed approximate matching over remote connections - the keys were not propagated back to the client o some parameters (HAM_PARAM_DATABASE_NAME, HAM_PARAM_KEYSIZE) were not propagated to remote servers when calling ham_get_parameters on a remote Database - fixed o the extended parameters (ham_parameter_t) of ham_env_create_db were ignored when operating on a remote Environment - fixed Aug 02, 2010 - chris o added a new sample client1.c which can communicate with server1.c Aug 02, 2010 - chris o the source repository is now hosted at http://github.com/cruppstahl/hamsterdb. The old subversion repository is no longer available. Jul 24, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.5 Jul 15, 2010 - chris o finalized the client/server communication; hamsterdb is now able to access remote servers. A new header file hamserver.h was added. Jul 02, 2010 - chris o HAM_PARAM_GET_STATISTICS was moved to hamsterdb_int.h o a new sample "server1" was added Apr 29, 2010 - chris o ham_env_get_parameters and ham_get_parameters do no longer accept NULL pointers as the first parameter; instead, they will fail with HAM_INV_PARAMETER Apr 22, 2010 - chris o Fixed compilation for MacOSX SnowLeopard (thanks, Olisa) Apr 13, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.4 Apr 10, 2010 - chris o The documentation in the header file was improved and some constants were renamed/deprecated Apr 10, 2010 - chris o Bugfix - win32 only: with very big databases and unlimited cache, resources were exceeded and mmap failed. in this case we'll now fall back to read/write (thanks, Simon) Mar 27, 2010 - chris o Bugfix - it was allowed to create temp. Transactions while a non-temp. Transaction was still active Mar 18, 2010 - chris o Optimization - if HAM_DAM_SEQUENTIAL_INSERT is set then btree nodes will not be split in the middle, but at the end of the node. hamsterdb will also auto-recognize if an insert is sequential (at the "right end" of the index). This leads to MUCH smaller files and therefore higher performance (thanks, Simon) Mar 10, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.3 Mar 10, 2010 - chris o Bugfix - fixed an invalid read of 3 bytes in the freelist Mar 07, 2010 - chris o Implemented partial read/write - records can now be read or written partially (see flag HAM_PARTIAL for ham_find, ham_insert and others) This new feature caused a change to ham_record_t, thus making the ABI of hamsterdb incompatible to older versions. This feature is test-covered by nearly 900 unittests. Feb 27, 2010 - chris o Bugfix - ham_get_parameter failed if database was opened read-only (thanks, Austin) Feb 18, 2010 - chris o Bugfix - if a cachesize was specified then it was not propagated correctly and ignored; this bugfix caused serious performance improvements compared to 1.1.2! Feb 16, 2010 - chris o Windows library and dll are now renamed to libhamsterdb-.lib and hamsterdb-.dll Feb 11, 2010 - chris o Added a new function to get the Environment handle of a Database (ham_get_env) Feb 10, 2010 - chris --------------------------------------------------- release of hamsterdb-1.1.2 Feb 07, 2010 - chris o Added documentation target; there's now one target for public documentation, one for internal and one for BFC (unittest framework) - thanks, Ger o Finished a lot of refactoring - some from Ger, some from me Feb 03, 2010 - chris o Added comment in hamsterdb_int.h and hamsterdb_stats.h - these files describe internal interfaces! unlike hamsterdb.h they are never stable and can be changed with every new version. Feb 01, 2010 - chris o Bugfix: if multiple databases in an Environment are open, and just one Database is closed, then the pages of this Database were not flushed correctly o Bugfix: if multiple databases in an Environment are open, an open Transaction was not immediately closed on the first call of ham_close Jan 19, 2010 - chris o duplicate keys can now be sorted. The default sort order is based on memcmp(), but can be overwritten with ham_set_duplicate_compare_func. Jan 15, 2010 - chris o fixed crash on Linux 64bit/gcc 4.4.1 caused by some statements which broke compiler optimization Jan 14, 2010 - chris o fixed compiler problems with g++ 4.4.x in the unittests (some header files were missing) Jan 09, 2010 - chris o bugfix in unittest - HamsterdbTest::nearFindTest fails if internal functions are disabled (thanks, Austin!) Jan 06, 2010 - chris o added safety checks to prevent reuse of a ham_db_t or ham_env_t structure which is already in use (thanks, Ger!) o the implementation of ham_create[_ex] and ham_open[_ex] was rewritten: both functions now create their private Environment handle. This simplifies lots of code. Dec 23, 2009 - chris --------------------------------------------------- release of hamsterdb-1.1.1 Dec 19, 2009 - chris o the flag HAM_DIRECT_ACCESS can return a pointer in hamsterdb's managed storage (only In-Memory Databases!) o the flag HAM_HINT_UBER_FAST_ACCESS for ham_get_key_count was renamed to HAM_FAST_ESTIMATE o removed HAM_HINT_SEQUENTIAL and HAM_HINT_RANDOM_WRITE and HAM_HINT_UBER_FAST_ACCESS - they have the same use as the DAM flags; sorry for the inconvenience. If you used them, just remove them Dec 16, 2009 - chris o improved tests of HAM_HINTS_* flags and fixed some bugs in the process - mainly asserts which failed because the flags were unexpected Dec 15, 2009 - chris o ham_get_parameter now returns the Data Access Mode (DAM) o renamed HAM_EMPTY_DATABASE_NAME to HAM_DEFAULT_DATABASE_NAME Dec 14, 2009 - chris o fixed bug in ham_find - if record was empty, but record->size was set by the caller, then the record->size value was not overwritten with zero o fixed compilation error if HAM_DISABLE_ENCRYPTION was set o fixed ham_check_integrity - sometimes returned errors although the database was fine Dec 12, 2009 - chris o html documentation is now part of the tarball Dec 03, 2009 - chris --------------------------------------------------- release of hamsterdb-1.1.0 Nov 28, 2009 - chris o Disallowed pagesizes which are not aligned to 2k (with exception of 1k); allowed pagesizes are now 1k, 2k, 4k, 6k, 8k etc Nov 9, 2009 - chris o C++ API now has all the new functions o ham_get_flags is now deprecated - it was replaced by ham_get_parameters and ham_env_get_parameters o the flag HAM_LOCK_EXCLUSIVE is now enabled by default o the new function ham_get_key_count() returns number of all keys in the Database Jul 31, 2009 - chris o performance improvements in the freelist code, freelist was abstracted to allow multiple implementations (all from Ger Hobbelt, http://www.hobbelt.com, http://www.hebbut.net) o added "Data Access Mode" to give hints how Databases/Environments are used; hamsterdb can then optimize its internal algorithms/file formats (all from Ger Hobbelt, http://www.hobbelt.com, http://www.hebbut.net) Jul 26, 2009 - chris o the unittest framework "bfc" was improved significantly, allowing new command line options and catching HW and win32-exceptions (all from Ger Hobbelt, http://www.hobbelt.com, http://www.hebbut.net) Jul 25, 2009 - chris o bugfix: when an Environment is created (or opened), the header page was not immediately written (or read); therefore settings were lost, unless a database was created (or opened) - Thanks, Ger Hobbelt Jul 20, 2009 - chris o added ham_env_get_parameters, ham_db_get_parameters and functions for approximate matching (all from Ger Hobbelt, http://www.hobbelt.com, http://www.hebbut.net) Jul 19, 2009 - chris o added various new asserts, code cleanups, win32 improvements/security improvements and new tests (all from Ger Hobbelt, http://www.hobbelt.com, http://www.hebbut.net) o added Approximate Matching - ham_find/ham_cursor_find can now return the nearest neighbour if the key is not found Mar 05, 2009 - chris --------------------------------------------------- release of hamsterdb-1.0.9 May 13, 2009 - chris o removed the dependency to cppunit (replaced it with my own tiny acceptance test framework) May 12, 2009 - chris o fixed segmentation fault when using a Cursor to iterate over all keys and the record parameter is NULL and compression is enabled, then hamsterdb tried to compress the NULL record (thanks, Jiezg) Mar 01, 2009 - chris --------------------------------------------------- release of hamsterdb-1.0.8 Feb 28, 2009 - chris o fixed bug when shifting internal pages (during SMO of erase); extended keys were deleted although they were still referenced Feb 23, 2009 - chris --------------------------------------------------- release of hamsterdb-1.0.7 Feb 20, 2009 - chris o fixed endian conversion bug when opening a Database file, which was created on a little-endian system, some page addresses were broken Sep 23, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.6 Sep 14, 2008 - chris o a new flag HAM_CACHE_UNLIMITED uses unlimited cache o added a new chapter about Transactions to the tutorial Sep 12, 2008 - chris o ./configure has a new option --enable-system-zlib which links against the system-wide installed zlib (-lz) Sep 11, 2008 - chris o unittests now compile with gcc 4.3.x and glibc 2.8 (thanks, Tiziano Müller) o C++ api now has template function for class key: key.set(T &t) (thanks, Tiziano Müller) o added macro AC_PROG_CXX to ./configure (thanks, Tiziano Müller) Aug 07, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.5 Aug 03, 2008 - chris o On Linux for ARM: disable pread/pwrite; pwrite seems to be buggy, at least in the maemo.org 4.1 Environment for ATMEL CPU's. Aug 02, 2008 - chris o If available, the flag O_NOATIME is now specified when opening or creating files Jul 23, 2008 - chris o Fixed potential NULL pointer access and a bug in ham_dump.c (thanks, Zhao Xinjian) Jul 21, 2008 - chris o Fixed potential buffer overflow (thanks, Tielei Wang) Jul 19, 2008 - chris o The C++ wrapper now supports Transactions (see ham::db::begin(), ham::txn::abort(), ham::txn:commit()) Jul 18, 2008 - chris o ham_close now supports the flag HAM_TXN_AUTO_COMMIT o ham_env_close now supports the flag HAM_TXN_AUTO_COMMIT Jun 28, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.4 Jun 27, 2008 - chris o Implemented the first of several milestones with Transaction support; please see the README for details about the limitations, some of them are quite severe Jun 16, 2008 - chris o Bugfix: when creating several Databases in an Environment, and recovery was enabled, each Database created its own log object and the log was corrupted Jun 03, 2008 - chris o Fixed typo in hamsterdb.h documentation - HAM_INV_LOG_FILE_HEADER is actually called HAM_LOG_INV_FILE_HEADER May 25, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.3 May 24, 2008 - chris o Unittests no longer fail when compiled without encryption, compression or internal functions o Moved ham_get_flags from ham/hamsterdb_int.h to ham/hamsterdb.h May 22, 2008 - chris o Log files now respect the file filters - i.e. if aes encryption is enabled, the log file is also encrypted May 21, 2008 - chris o Finalized the implementation of logging and recovery; can be enabled with HAM_ENABLE_RECOVERY May 10, 2008 - chris o The flag HAM_DISABLE_FREELIST_FLUSH is now deprecated; freelist operations are no longer immediately flushed. May 10, 2008 - chris o minor documentation fixes (mainly grammar releated) in ham/hamsterdb.h May 09, 2008 - chris --------------------------------------------------- release of hamsterdb-1.0.2 May 06, 2008 - chris o added new API function ham_get_flags() May 06, 2008 - chris o When creating an environment with ham_env_create_ex and a custom page size, the page size was not stored correctly o An assert was sometimes triggered when closing a Database which was part of an Environment Apr 25, 2008 - chris o bugfix: when a cursor is overwritten (ham_cursor_overwrite), the modified page was never released from the cache 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