
Legend:

o a pending  TODO item (normal priority)
. a pending  TODO item (low priority)
x a finished TODO item

-----------------------------------------------------------------------------

o new web page
    x link-cloud: add link to forum
    o update samples for C/C++ (if necessary)
    o add documentation for Java
    o add documentation for .NET (chm file)
    o add samples for Java
    o add samples for .NET
    o add samples for Python
    o add RSS/Atom feed
    o add google sitemap

x new Python release
    x update for logging/recovery
    x upload to webpage, update freshmeat

x new Java release
    x update for logging/recovery
    x need win32/win64 binaries
    x upload to webpage, update freshmeat

x new .NET release
    x update for logging/recovery
    x prepare package and documentation
    x upload to webpage

x win32: test if prebuilt visual studio-library works in express edition, if 
    it was built with the professional edition (and vice versa)
    -> maybe have to change the build process, if it doesn't work
    => seems to work

o "pre-mature" support of ACID transactions with only *one* parallel
    transaction
    x make ham_txn_* public (incl. public ham_txn_t *-handle)
        x change hasp_api.h and documentation
        x change hamsterdb.c routines - except external transaction
            handle (only if HAM_HAS_TRANSACTIONS)
        x make sure all unittests and acceptance tests are still working
    x ham_txn_begin: only allow one transaction in parallel, otherwise fail
        x unittests
    x new (non-persistent) flag HAM_ENABLE_TRANSACTIONS for 
        x ham_create[_ex]
        x ham_open[_ex]
        x ham_env_create[_ex]
        x ham_env_open[_ex]
        x unittests that these flags are not persistent
    x how does abort work if logging is disabled? in this case, we need
        HAM_WRITE_THROUGH in case of commit, and delete the pages in case
        of abort; or force logging? that's easier, but inefficient
        x first release: restrict to one method (logfile) and 
            automatically enable logging
        x document this!
    x add cursor to txn
        x ham_cursor_clone: don't create new txn, use existing!
        x document behaviour of ham_cursor_clone
        x add txn support to all cursor functions
        x don't allow txn to be closed if cursors are in this txn
            (don't forget ham_cursor_clone!)
            - a simple reference counter is enough
            x implement
            x unittests
    x ham_close: default behaviour is HAM_TXN_AUTO_ABORT
        x open txn is aborted when (last) database is closed
        x test
        x document

    x tests with commit/abort, logging, recovery, auto-abort etc

    x nach einem abort/commit sollte das txn-handle invalid werden (crashen)

    x test with big blobs; are they rolled back correctly?
        begin
        insert(key, BIGBLOB)
        abort
        -> the allocated page must be moved to the freelist, otherwise it's 
            lost
            x test with direct I/O (big blob, ps/2)
            x test with direct I/O (big blob, ps*2)
            x test with normal inserts (small blob)

o enhance acceptance tests - will need new test scripts
    TXN_BEGIN 1  (1 is the txn id)
    TXN_ABORT 1
    TXN_INSERT 1 ...
    TXN_ERASE 1 ...
    TXN_COMMIT 1

. move transactions to environment, not database -- or not? if it works, then
    maybe leave it as is

. ham_close: also support HAM_TXN_AUTO_COMMIT
    o test

. ham_env_close: also support HAM_TXN_AUTO_COMMIT
    o test

. enhance C++ wrapper

. enhance tutorial with information about transactions

. win64: need cppunit for hamsterdb-alien

. tools/tests/test.sh: add to release-process
    - tricky: currently fails because of invalid database versions, and
        because the pagesize is different on cygwin

. release-process: enhance automated tests of win32/win64 dll and lib

. don't make ham_env_erase_db fail if a txn is in progress

. allow more than one txn in parallel

-----------------------------------------------------------------------------

. Perl wrapper

. PHP wrapper

. new configure switch --force-lsb-compliancy (ohne pread, pwrite)
    o needs support for automated testing!

-----------------------------------------------------------------------------

. tests are failing because of a berkeleydb bug:
    --duplicate=1 --use-cursors=1
      o ../../testfiles/1/100.tst - status mismatch
      o ../../testfiles/1/202.tst - status mismatch
      o ../../testfiles/1/220.tst - status mismatch

