hamsterdb Changelog

What's new in hamsterdb 2.1.11

May 18, 2015
  • Bug fixes:
  • C++ API no longer throws exceptions in destructors
  • issue #49: fixed approx. matching issue with remote server
  • issue #53: fixed race condition on Win32
  • issue #52: fixed cursor iteration w/ txns and approx matching
  • issue #50: removing problematic debug checks
  • Other Changes:
  • Reducing I/O operations by allocating large buffers if file grows fast
  • Add InsertRecNo method to hamsterdb-dotnet

New in hamsterdb 2.1.10 (Mar 9, 2015)

  • New Features:
  • Added Cursor.TryFind to hamsterdb-dotnet (thanks, mjmckp )
  • The page cache eviction was moved to a background thread
  • When reading records from mmapped storage, a pointer into the storage is returned and the record data is no longer copied
  • Bug fixes:
  • Fixed FreeBSD compilation errors (thanks, Heping Wen)
  • issue #46: fixed segfault in approx. matching (thanks, Joel Jacobson)
  • issue #45: fixed segfault in Journal recovery (thanks, Michael Moellney)
  • issue #44: approx. matching returned the wrong key (thanks, Joel Jacobson)
  • issue #43: fixed segfault when flushing transactions (thanks, Joel Jacobson)
  • Fixed compilation error on debian Wheezy, gcc 4.7.2, 32bit (thanks, Thomas Fähnle)
  • Fixed compilation error on OSX (thanks, Daniel Lemire)
  • issue #42: ham_cursor_find returned wrong key w/ approx. matching and transactions
  • Fixed large file support on linux (thanks, Thomas Fähnle)
  • Other Changes:
  • Default compilation flag is now -O3
  • Added a new parameter HAM_PARAM_POSIX_FADVISE (thanks, Thomas Fähnle)
  • Removed dependency to malloc.h
  • The github wiki is now linked into documentation/wiki
  • The macro HAM_API_REVISION is now deprecated; use HAM_VERSION_* instead
  • Deprecated HAM_RECORD_NUMBER (use HAM_RECORD_NUMBER64 instead); introduced a new flag HAM_RECORD_NUMBER32 for 32bit record numbers
  • Implemented ham_cursor_get_record_size() for remote access

New in hamsterdb 2.1.9 (Dec 18, 2014)

  • New Features:
  • Added new parameter to set a file size limit - HAM_PARAM_FILE_SIZE_LIMIT
  • Bug fixes:
  • Fixed a failing test from the erlang package
  • Fixed an assert when re-organizing nodes with variable length keys
  • issue #39: recovery can fail with IO_ERROR if journal file is incomplete; fixed (thanks, Michael Moellney)
  • issue #38: temporary transactions and recovery (w/o transactions) created huge logfiles; fixed (thanks, Michael Moellney)
  • issue #34: some names violated reserved identifiers, fixed (thanks, Markus Elfring)
  • Bugfix: fixed-length records were sometimes not inserted correctly with HAM_DUPLICATE_INSERT_FIRST
  • Fixed segfault when opening a file with HAM_ENABLE_RECOVERY (and without HAM_ENABLE_TRANSACTIONS)
  • Other Changes:
  • Removed outdated project files of MSVC2008, added MSVC2013
  • Removed custom ham_* typedefs; now using types from stdint.h
  • Major rewrite of the recovery logic; increased test coverage
  • Added new parameter HAM_PARAM_JOURNAL_SWITCH_THRESHOLD to control the size of the journal files
  • Unused pages are now freed with madvice; performance improvements when large files are mmapped
  • Improved record storage and reduced size for fixed length records
  • Minor performance improvements for hola_sum
  • ABI change: removed deprecated fields from ham_record_t
  • Introduced two new makros to initialize ham_key_t and ham_record_t structures: ham_make_key, ham_make_record
  • The file structure has been completely reorganized. It is described in documentation/source/structure.txt.
  • Splitting unittests/cursor.cpp in two files to avoid out-of-memory errors during compilation on weak VM's
  • hamserver now also compiles against libuv 0.10.25 (in addition to 0.11.*)

New in hamsterdb 2.1.8 (Jul 15, 2014)

  • New Features:
  • Adding the new "hola" API - hamsterdb analytical functions for COUNT, SUM, AVERAGE etc. See ham/hamsterdb_ola.h for the declarations
  • Added new API ham_cursor_get_duplicate_position
  • A new Python API was added
  • Bug fixes:
  • issue #33: upgraded to libuv 0.11.22
  • 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
  • Other Changes:
  • 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.
  • ham_db_get_error is now deprecated
  • header files no longer include winsock.h to avoid conflicts with winsock2.h on Windows platforms
  • 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
  • Avoiding Btree splits if keys are appended (HAM_HINT_APPEND)
  • The internal communication with the remote server now uses a different protocol which is faster than google's protobuffer
  • PAX layout now uses linear search for small ranges; this improves search performance by 5-10%
  • Removed the ham_get_license API (and serial.h)

New in hamsterdb 2.1.7 (Mar 31, 2014)

  • New Features:
  • Added flag HAM_DISABLE_RECOVERY; disables recovery/journal when used in combination with HAM_ENABLE_TRANSACTIONS
  • Bugfixes:
  • issue #32: fixed segfault during recovery
  • Fixed a journalling bug; partial records were not logged correctly
  • Fixed a potential corruption in the freelist state
  • Other Changes:
  • License is now APL 2.0
  • Committed Transactions are no longer flushed immediately, but can be buffered and flushed together with other committed Transactions
  • Removed a parameter from ham_db_check_integrity.

New in hamsterdb 2.1.6 (Feb 24, 2014)

  • Very small cache sizes cause file size explosion.
  • 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.

New in hamsterdb 2.1.5 (Feb 15, 2014)

  • Bugfixes:
  • Fixed several regressions that crept in when 2.1.4 was released
  • If a Database is closed in an in-memory Environment, the Database name was still occupied and the Database could not be re-created.
  • Cache purges always purged one page only; now purges as many as required
  • Other Changes:
  • The freelist was replaced and scales much better now
  • Removed the parameter HAM_PARAM_MAX_DATABASES - the number of databases is now always set to the maximum limit.
  • Removed HAM_CACHE_STRICT, HAM_CACHE_FULL and the related functionalities

New in hamsterdb 2.1.4 (Jan 10, 2014)

  • New Features:
  • 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
  • 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)
  • 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)
  • Default Btree node layout for variable length keys and duplicate keys was completely rewritten and now uses an up-front index in the node
  • Other Changes:
  • C++ API: Can now specify HAM_RECORD_USER_ALLOC when retrieving keys with ham_db_find
  • 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)

New in hamsterdb 2.1.3 Unstable (Oct 24, 2013)

  • New Features:
  • Basic schema support in ham_env_create_db
  • 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
  • Bugfixes:
  • Fixed invalid memory access when using mmap on pagesizes which are not a power of two
  • Fixed a btree corruption during SMOs (internal shifts after underflow)
  • issue 27: No longer enabling AES encryption if openssl headers are missing
  • Other Changes:
  • File format is not backwards compatible, and files from 2.1.2 cannot be opened
  • The prefix compare functions were removed.
  • Integrating "ham_bench" tool for benchmarking and testing
  • ham_db_set_compare_func is only allowed if the key type is HAM_TYPE_CUSTOM; otherwise, an error is returned
  • For consistency reasons, some macros were renamed (see ChangeLog for more details), but the old macros are still working

New in hamsterdb 2.1.2 (Sep 2, 2013)

  • New Features:
  • An internal function ham_env_get_metrics was added
  • Added support for transparent AES encryption
  • Truncating file when closing the Environment
  • Bugfixes:
  • Several bugs in the build process were fixed
  • Other Changes:
  • Client- and server-side implementation of the remote network access has been rewritten (use "ham://" instead of "http://" for the url!).

New in hamsterdb 2.1.1 (Jul 1, 2013)

  • Bugfixes:
  • Fixed JDK include paths on MacOS (Thanks, Mark Sutheran)
  • Merged various MacOS related fixes (thanks, Johnathan Conley)
  • Fixed build if remote functionality is disabled (i.e. because protobuffer or libcurl is missing)
  • Other Changes:
  • Removed internal (but exported) functions ham_env_get_device, ham_env_set_device
  • Improved integration of tcmalloc, removed ham_env_set_allocator
  • 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.

New in hamsterdb 2.1.0 (Mar 4, 2013)

  • Semantic Changes:
  • Extended keys are now disabled by default; use HAM_ENABLE_EXTENDED_KEYS to enable them
  • Creating/Opening an Environment is now mandatory; ham_open/ham_create were removed
  • ham_new, ham_delete, ham_env_new, ham_env_delete were removed as well and are no longer required
  • Renamed Macros/Functions:
  • C++ API: renamed the namespace from "ham" to "hamsterdb"
  • ham_check_integrity -> ham_db_check_integrity
  • 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
  • HAM_DB_READ_ONLY -> HAM_WRITE_PROTECTED
  • HAM_WRITE_THROUGH -> HAM_ENABLE_FSYNC
  • HAM_PARAM_GET_FLAGS -> HAM_PARAM_FLAGS
  • HAM_PARAM_GET_FILEMODE -> HAM_PARAM_FILEMODE
  • HAM_PARAM_GET_FILEMODE -> HAM_PARAM_FILEMODE
  • HAM_PARAM_MAX_ENV_DATABASES -> HAM_PARAM_MAX_DATABASES
  • HAM_PARAM_GET_KEYS_PER_PAGE -> HAM_PARAM_MAX_KEYS_PER_PAGE
  • Reduced list of options for ham_db_get_parameters; see hamsterdb.h
  • Removed Functions/Macros:
  • Removed the deprecated flag HAM_NOT_INITIALIZED
  • Removed the deprecated flag HAM_LOCK_EXCLUSIVE
  • Removed the flag HAM_USE_BTREE; it was not required.
  • Removed HAM_FAST_ESTIMATE
  • Removed the deprecated flags HAM_HINT_UBER_FAST_ACCESS, HAM_HINT_RANDOM_ACCESS and HAM_HINT_SEQUENTIAL
  • Removed ham_env_new, ham_env_delete, ham_new, ham_delete
  • Removed ham_open, ham_open_ex, ham_create, ham_create_ex
  • Removed ham_env_create; renamed ham_env_create_ex to ham_env_create
  • Removed ham_env_open; renamed ham_env_open_ex to ham_env_open
  • Removed deprecated flags HAM_DISABLE_FREELIST_FLUSH, HAM_LOCK_EXCLUSIVE, HAM_IN_MEMORY_DB
  • Removed ham_get_flags; use ham_get_parameters instead
  • Removed the HAM_DAM_* flags
  • Removed ham_cursor_find_ex; renamed ham_cursor_find to ham_cursor_find_ex
  • Removed ham_enable_encryption and the file filters
  • Removed ham_enable_compression and the record filters
  • Removed ham_get_keycount_per_page; the keycount can still be retrieved with ham_get_parameter(... HAM_PARAM_GET_KEYS_PER_PAGE...)
  • Removed sorted duplicates; they anyway did not work in combination with Transactions. They will be fully implemented at a later stage.
  • Removed ham_flush; use ham_env_flush instead
  • Removed HAM_PARAM_DBNAME
  • Changed Interfaces:
  • Changed the parameters of ham_cursor_create
  • Changed the parameters of ham_env_create, ham_env_open, ham_env_create_db and ham_env_open_db
  • Changed the parameters of ham_cursor_find
  • New Features:
  • In-Memory Environments now support Transactions
  • 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.
  • Bug fixes:
  • Applied patch with many automake/autoconf related cleanups (thanks, Daniel Richard G. )
  • Other Changes:
  • Gazillions of API changes (see above)
  • Improved performance of ham_db_get_key_count if use of duplicate keys are disabled
  • Updated mmap support; mmap is now about 30% faster compared to the previous implementation
  • Minor performance improvement if HAM_ENABLE_FSYNC and HAM_ENABLE_TRANSACTIONS

New in hamsterdb 2.0.5 (Dec 3, 2012)

  • Bug fixes:
  • (dotnet) Fixed invalid memory access when using Parameter[] in env.CreateDatabase or env.OpenDatabase (Thanks, Jason)
  • Issue 16: Fixed the recovery process for temporary Transactions
  • Other Changes:
  • Removed HAM_PARAM_GET_STATISTICS; ham/hamsterdb_stats.h is no longer public, and the functions are no longer exported
  • Renamed HAM_IN_MEMORY_DB to HAM_IN_MEMORY
  • The internal C++ implementation was moved into namespace "ham" in order to avoid conflicts with other applications
  • Performance improvements when using record number databases with recovery
  • Win32 files are now created with FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

New in hamsterdb 2.0.4 (Jul 24, 2012)

  • Bug fixes:
  • Fixed linker error when libboost_thread-mt.lib is installed
  • Fixed compilation error in OSX Lion
  • Fixed HAM_INTERNAL_ERROR when creating database with HAM_ENABLE_RECOVERY but without HAM_ENABLE_TRANSACTIONS
  • Other Changes:
  • (java) Fixed race condition when closing Cursors (thanks, Mark S.)
  • Fixed issue 8: Fixed data corruption when retrieving a record returns HAM_BLOB_NOT_FOUND (thanks, Artem)
  • Fixed several bugs (mainly related to misplaced asserts) when performing recovery
  • Fixed crash when reusing a page from the cache that was not correctly initialized (thanks, Jason)
  • Fixed crash when HAM_ENABLE_RECOVERY w/o HAM_ENABLE_TRANSACTIONS (thanks, Peter)
  • Fixed issue 7: approximate matching did not return the correct key (thanks, Artem)
  • Fixed MacOS compilation problem (thanks, Jason P.)

New in hamsterdb 2.0.3 (Jun 26, 2012)

  • Bug fixes:
  • Fixed linker error when libboost_thread-mt.lib is installed
  • Fixed compilation error in OSX Lion
  • Fixed HAM_INTERNAL_ERROR when creating database with HAM_ENABLE_RECOVERY but without HAM_ENABLE_TRANSACTIONS
  • Other changes:
  • Several code cleanups; more modules were converted to C++
  • The legacy file format of hamsterdb 1.0.9 and older is no longer supported
  • Support for Microsoft Visual Studio 2010

New in hamsterdb 2.0.2 (Apr 28, 2012)

  • New Features:
  • Approximate matching now works with ham_cursor_find
  • hamsterdb is now thread safe
  • Bug fixes:
  • Fixed a buffer overrun in the freelist
  • Other Changes:
  • Several code cleanups; more modules were converted to C++

New in hamsterdb 2.0.1 (Feb 20, 2012)

  • New Features:
  • Approximate matching now works if Transactions are enabled (only for ham_find)
  • Added new parameter HAM_PARAM_LOG_DIRECTORY to specify the directory where the log file and the journal files are stored
  • Bug fixes:
  • Win32 release builds no longer crash when using Transactions
  • Win32: fixed build issue if HAM_DISABLE_COMPRESSION is defined (thanks, Andy Thalmann (http://www.softdev.ch))
  • hamsterdb 2.0.0 failed to load database files created with hamsterdb 1.x because of a bad version check
  • Fixed bug where HAM_ONLY_DUPLICATES was ignored when used in a Transaction (thanks, Mark Ruijter)
  • Other Changes:
  • The internal ham_device_t structure was rewritten as a C++ class. If you use this structure to overwrite the device handling then you have to rewrite your code.
  • Now using the native Win32 API for os_pwrite and os_pread (thanks, Andy Thalmann (http://www.softdev.ch))
  • Added a public macro HAM_API_REVISION to allow users to programmatically distinguish between new and old interface of ham_txn_begin

New in hamsterdb 2.0.0 (Jan 23, 2012)

  • Changes:
  • A lot of code was refactored
  • Performance was improved
  • Changed interface ham_txn_begin, also for Wrapper APIs
  • The Java was updated and integrated
  • The .NET was updated and integrated
  • The WinCE package was moved to /contrib
  • When Recovery or Transactions are enabled then for most operations the physical log is no longer required; this reduces I/O and improves performance

New in hamsterdb 2.0.0 RC 3 (Nov 30, 2011)

  • Bug fixes:
  • Several regressions were fixed
  • Other Changes:
  • A lot of code was refactored
  • Performance was improved

New in hamsterdb 1.1.13 (Aug 22, 2011)

  • Bug fixes:
  • When aborting a Transaction only re-create pages if they were modified in the aborted Transaction.

New in hamsterdb 1.1.12 (Jul 5, 2011)

  • Bug fixes:
  • Cache limits are now respected

New in hamsterdb 1.1.11 (Jun 29, 2011)

  • Bug fixes:
  • Don't flush files if HAM_WRITE_THROUGH is not set
  • Other Changes:
  • The ./configure switch --enable-internal is now obsolete and enabled by default

New in hamsterdb 1.1.10 (Jun 27, 2011)

  • Bugfixes:
  • The cache was not purged correctly, thus grew uncontrolled
  • The hamzilla server always failed to read the configuration file because of a wrong error check
  • 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.
  • Header page changes (i.e. when adding databases) were not correctly logged and therefore not recovered after a crash
  • 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
  • Other Changes:
  • Added two new tools - one for dumping the logfile (tools/ham_log) and one for recovering databases (tools/ham_recover)
  • Environments and Databases are now immediately flushed after being created, otherwise the header page on disk is empty and can not be recovered after a crash
  • HAM_WRITE_THROUGH now flushes all open file handles after a Transaction was committed or aborted

New in hamsterdb 1.1.7 (Nov 4, 2010)

  • Bugfixes:
  • HAM_DIRECT_ACCESS with records

New in hamsterdb 1.1.6 (Sep 17, 2010)

  • This release stabilized the remote functionality. New samples for client/server scenarios are provided. The remote server can now write access logfiles. A unix daemon and a win32 Service were added. The dependency to Google Protocol Buffers for C was removed; instead, Google Protocol Buffers (C++) are now used. Compilation on ArchLinux (gcc 4.5.1) was fixed. Several functions are now deprecated. The source repository was moved to github.
  • New Features:
  • added samples for client/server scenarios
  • added a Unix daemon (or Win32 service)
  • Bugfixes:
  • Several memory leaks during remote communication were fixed
  • Several bugs in the remote communication code were fixed (see ChangeLog for details)
  • Other Changes:
  • Documentation was improved
  • Some functions are now deprecated
  • Hamserver.h was renamed to hamsterdb_srv.h
  • The function interface in hamsterdb_srv.h was changed
  • Compilation on ArchLinux (gcc 4.5.1) was fixed
  • The tutorial is now online at http://wiki.github.com/cruppstahl/hamsterdb
  • MSVC projects were updated to Visual Studio 2009

New in hamsterdb 1.1.5 (Jul 26, 2010)

  • add a Unix daemon for the server
  • add a Win32 service for the server
  • improve shutdown time of the server
  • make sure that KEEPALIVE of the http connections is working
  • increase unit tests
  • New Features:
  • hamsterdb is now capable of accessing remote servers. Servers can be embedded into an application (see hamserver.h). A sample 'server1.c' demonstrates this.
  • Bugfixes:
  • Fixed compilation for MacOSX SnowLeopard (thanks, Olisa)
  • Other Changes:
  • HAM_PARAM_GET_STATISTICS was moved to hamsterdb_int.h
  • 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

New in hamsterdb 1.1.4 (Apr 16, 2010)

  • The documentation in the header file was improved and some constants were renamed/deprecated
  • Bugfix - win32 only: with very big databases and unlimited cache, resources were exceeded and mmap failed. in this case we'll now fall back t read/write (thanks, Simon)
  • Bugfix - it was allowed tcreate temp. Transactions while a non-temp. Transaction was still active
  • 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 alsauto-recognize if an insert is sequential (at the "right end" of the index). This leads tMUCH smaller files and therefore higher performance (thanks, Simon)

New in hamsterdb 1.1.3 (Mar 17, 2010)

  • New Features:
  • 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.
  • Added a new function to get the Environment handle of a Database (ham_get_env)
  • Bugfixes:
  • Bugfix - fixed an invalid read of 3 bytes in the freelist
  • Bugfix - ham_get_parameter failed if database was opened read-only (thanks, Austin)
  • 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!
  • Other Changes:
  • Windows library and dll are now renamed to libhamsterdb-.lib and hamsterdb-.dll
  • Ongoing refactoring and code improvements

New in hamsterdb 1.1.0 (Dec 5, 2009)

  • New Features:
  • Approximate Matching - ham_find/ham_cursor_find can now return the nearest neighbour if the key is not found
  • Data Access Modes optimize runtime behaviour for performance depending on your Database characteristics
  • New functions to get runtime information (ham_env_get_parameter, ham_get_parameter)
  • A new function ham_get_key_count() returns the number of keys
  • Bugfixes:
  • Freelist pages are now fully utilized
  • Security improvements for Win32 mmap code
  • 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) - fixed
  • Other Changes:
  • Major performance wins, esp. in freelist code

New in hamsterdb 1.0.9 (May 18, 2009)

  • This release fixes a minor bug in ham_cursor_move; if the second parameter ("record") is NULL and compression is enabled, hamsterdb crashes. Also, the unittest-dependency to cppunit was removed.

New in hamsterdb 1.0.8 (Mar 4, 2009)

  • fixed bug when shifting internal pages (during SMO of erase); extended keys were deleted although they were still referenced.

New in hamsterdb 1.0.7 (Feb 26, 2009)

  • Bugfixes:
  • Big-endian machines sometimes failed to load databases which were created on little-endian architectures and vice versa
  • Other Changes:
  • The Tutorial was updated

New in hamsterdb 1.0.6 (Sep 24, 2008)

  • New flag HAM_CACHE_UNLIMITED for unlimited cache
  • Unittests now compile with gcc 4.3.x and glibc 2.8
  • New ./configure switch --enable-system-zlib
  • The Tutorial has a chapter about Transaction support
  • The C++ API has a template function to assign keys

New in hamsterdb 1.0.5 (Aug 14, 2008)

  • On Linux for ARM: disable pread/pwrite; pwrite seems tbe buggy, at least in the maemo.org 4.1 Environment for ATMEL CPU's.
  • If available, the flag O_NOATIME is now specified when opening or creating files
  • Fixed potential NULL pointer access and a bug in ham_dump.c (thanks, ZhaXinjian)
  • Fixed potential buffer overflow (thanks, Tielei Wang)
  • The C wrapper now supports Transactions (see ham::db::begin(), ham::txn::abort(), ham::txn:commit())
  • ham_close now supports the flag HAM_TXN_AUTO_COMMIT
  • ham_env_close now supports the flag HAM_TXN_AUTO_COMMIT

New in hamsterdb 1.0.4 (Jun 30, 2008)

  • Implemented the first of several milestones with Transaction support; please see the README for details about the limitations, some of them are quite severe
  • Bugfix: when creating several Databases in an Environment, and recovery was enabled, each Database created its own log object and the log was corrupted
  • Fixed typo in hamsterdb.h documentation - HAM_INV_LOG_FILE_HEADER is actually called HAM_LOG_INV_FILE_HEADER

New in hamsterdb 1.0.3 (May 29, 2008)

  • Logging/Recovery can be enabled with the flag HAM_ENABLE_LOGGING
  • Minor grammar changes in the documentation (header file comments)
  • Unittests no longer fail if the library was compiled without support for compression, encryption or internal functions
  • API function ham_get_flags() moved from ham/hamsterdb_int.h to ham/hamsterdb.h