hamsterdb Changelog

What's new in hamsterdb 2.1.8

Oct 14, 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
  • Bugfixes:
  • 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.5 (Feb 14, 2014)

  • This release fixes several bugs and improves performance. Also, hamsterdb now scales much better if the file size grows beyond several gigabytes.

New in hamsterdb 2.1.4 (Jan 10, 2014)

  • This release adds custom Btree layouts for variable length keys and duplicate keys. Also, small records are now stored directly in the Btree leaf node, instead of an external blob.

New in hamsterdb 2.0.5 (Dec 3, 2012)

  • This version fixes a few minor bugs, has a few performance improvements, and fixes a segmentation fault in the .NET API.
  • The internal C++ implementation has been moved into namespace “ham” to avoid conflicts with other symbols.
  • Please check the README for upcoming API changes in the next release.

New in hamsterdb 2.0.3 (Jun 26, 2012)

  • This version fixes several bugs and adds support for Microsoft's Visual Studio 2010.
  • The legacy file format of hamsterdb 1.0.9 and older is no longer supported.
  • Sources and precompiled libraries for Win32 (x86 and x64) are available for download.

New in hamsterdb 2.0.2 (Apr 28, 2012)

  • This version makes hamsterdb thread-safe.
  • A bug in the freelist was fixed.
  • Boost is now required.
  • Sources and pre-compiled win32/win64 libraries are available for download.

New in hamsterdb 2.0.1 (Feb 20, 2012)

  • This version adds a few minor features like setting a custom path for log files and re-enabling approximate matching for use with Transactions.
  • A few bugs were fixed as well.
  • Sources and precompiled Win32/Win64 libraries are available for download.

New in hamsterdb 2.0.0 (Jan 23, 2012)

  • It features a complete re-implementation of the Transaction support, now allowing an unlimited number of Transactions in parallel.
  • It integrates the Java and .NET APIs.
  • Sources, documentation, and prebuilt libraries for Win32 (including .NET and Java) are available on the (redesigned) webpage.

New in hamsterdb 2.0.0 RC3 (Nov 30, 2011)

  • This version further stabilizes the 2.x branch and fixes all known issues from the previous rc2 release.
  • Performance was improved in many areas.
  • Sources and precompiled Win32 libraries are available for download on the Web page.

New in hamsterdb 2.0.0 RC2 (Oct 12, 2011)

  • This is the first stabilization release of the new (unstable) 2.0.0 branch, which re-implemented the Transaction handling.
  • Several bugs were fixed, and most of the code was refactored.
  • A C++ compiler is now required to compile hamsterdb.
  • All new features and bugfixes of 1.1.14 (will be released soon) were merged.
  • This release is not ready for production.
  • There will be at least one more stabilization release.

New in hamsterdb 1.1.12 (Jul 5, 2011)

  • This release is a bugfix release for 1.1.11, which had an issue in the cache purge routines.
  • They were called, but they never completed successfully, which caused the memory consumption to grow.
  • This is fixed; the memory consumption is now stable.
  • Sources, changelog, and precompiled Win32 libraries are available for download.

New in hamsterdb 1.1.11 (Jun 29, 2011)

  • This is a bugfix release for 1.1.10.
  • When using transactions, 1.1.10 would sometimes flush the file handles even if HAM_WRITE_THROUGH is not enabled. This caused a performance regression of up to 30%.
  • In addition to this bugfix, i removed the ./configure switch “–enable-internal”. It was a relict from older times and did not make sense anymore. All “internal” functions (i.e. ham_check_integrity) are now always compiled.
  • In addition, my acceptance test suite (which was extended to ~ 45000 tests in the meantime) is now also tracking the performance. It already had profiling built-in, but the performance results were not stored. Such a regression should hopefully never happen again.

New in hamsterdb 1.1.9 (Feb 21, 2011)

  • This release fixes a bug in the Transaction handling, and an out-of-memory condition with long-running Transactions.
  • It fixes several other issues detected by static code analysis tools.
  • A .spec file was added for RPM generation.
  • A 64bit incompatibility was fixed in the remote functions/hamserver. Sources.

New in hamsterdb 1.1.8 (Dec 9, 2010)

  • This version fixes a potential endless loop in the Transaction code.
  • It also fixes a bug when using HAM_DIRECT_ACCESS with records 8 bytes long or smaller, cursors and duplicates (this bug was partially fixed in 1.1.7).
  • The ./configure script no longer overwrites -Ox flags from the user.

New in hamsterdb 1.1.7 (Nov 4, 2010)

  • This release fixes a small memory leak when using remote transactions
  • It fixes HAM_DIRECT_ACCESS with records

New in hamsterdb 1.1.6 (Sep 17, 2010)

  • This version 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 on 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.
  • Sources, CHANGELOG, and precompiled Win32 libraries are available for download.

New in hamsterdb 1.1.5 (Jul 26, 2010)

  • This release implements remote functionality over http. The protocol is implemented with Google’s Protocol Buffers, the client uses libcurl for network handling and the server is based on mongoose, an embedded micro http server.
  • The server interface is very simple, and the server can easily be embedded into an application.
  • There are no known bugs, but currently the remote functionality is only supported on Unix/Linux. The next version 1.1.6 will also support the new features on Win32; several other improvements are also pending for the next release: a unix daemon, a win32 service and some other minor issues.

New in hamsterdb 1.1.3 (Mar 17, 2010)

  • Bugfix - fixed an invalid read of 3 bytes in the freelist
  • 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.
  • 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! Windows library and dll are now renamed to libhamsterdb-.lib and hamsterdb-.dll
  • Added a new function to get the Environment handle of a Database (ham_get_env)

New in hamsterdb 1.1.2 (Feb 14, 2010)

  • New features:
  • Duplicate keys can now be sorted. Sorting has to be enabled with HAM_SORT_DUPLICATES. The default collation can be overwritten with ham_set_duplicate_compare_func.
  • Bugfixes:
  • If multiple Databases in an Environment are open, an open Transaction was not immediately closed when the first Database was closed (with ham_close)
  • If multiple Databases in an Environment are open, and just one Database was closed, then the pages of this Database were not flushed correctly
  • Fixed crash on Linux 64bit/gcc 4.4 with compiler optimization
  • Other Changes:
  • The documentation is now reduced to public interfaces; internal documentation is only built when requested
  • A lot of refactoring and code improvements

New in hamsterdb 1.0.8 (Mar 3, 2009)

  • This release fixes a major bug during ham_erase; if too many elements of a Database page are deleted, the page is merged with other pages.
  • If extended keys are used, the overflow area of a key could get corrupted during this merge.
  • Sources, changelog, and precompiled win32/win64 libraries are available for download.

New in hamsterdb 1.0.7 (Feb 26, 2009)

  • This release fixes a bug on big-endian architectures where databases from little-endian architectures were not loaded correctly, and vice versa.
  • A typo in the Tutorial was fixed.

New in hamsterdb 1.0.6 (Sep 24, 2008)

  • This release adds a new flag, HAM_CACHE_UNLIMITED, which uses unlimited cache and is therefore nearly as fast as a pure in-memory database.
  • Also, the unit tests now compile with gcc 4.3.x and glibc 2.8.
  • The C++ API has a new function to assign keys with a template parameter.
  • The ./configure script has a new option, --enable-system-zlib, to link against -lz instead of the zlib version which is provided with hamsterdb.
  • Finally, the tutorial has a new chapter about Transaction support.