DB->get, DB->pget, DBC->c_get, DBC->c_pget almost done.
Remainder: associated dbs need DBC->c_del and DB->del to lock properly.
Rest is done.
Associated dbs (using any of the above calls) may get stuck half way due to locking.
We are not currently optimizing for them, but it will lock everything necessary
(Once DB->del and DB->c_del lock properly)
Some tests are written, but not all of them.
Currently test_db_txn_locks.c fails due to abort not working properly.
git-svn-id: file:///svn/tokudb@2210 c7de825b-a66e-492c-adef-691d508d4ae1
Test that shows bug described in 367, data = key = (NULL,0)
is not supported by our cursor implementations.
git-svn-id: file:///svn/tokudb@2203 c7de825b-a66e-492c-adef-691d508d4ae1
Effectively eliminated 'non cursor' gets.
Internally (in brt) all gets were cursor gets already.
To save future locking code, and reduce complexity of ydb,
all DB->get calls use cursor gets as subfunctions.
git-svn-id: file:///svn/tokudb@2195 c7de825b-a66e-492c-adef-691d508d4ae1
Only uses lock tree if both txns and locking system are enabled.
If TXN only is enabled, it implies only one txn at a time: no lock tree needed.
If LOCK only is enabled, it implies no txns, therefore only ephemeral locks needed (lock tree not needed)
If neither are enabled, clearly lock tree is not needed.
git-svn-id: file:///svn/tokudb@2193 c7de825b-a66e-492c-adef-691d508d4ae1
Bugfix with releasing locks/unlocking a transaction.
DBC->c_get (DB_SET)
and DB->put (DB_YESOVERWRITE) now perform locking
Secondary dbs not included (behavior unknown).
Several tests added for c_get (DB_SET) and DB->put(DB_YESOVERWRITE).
Lock tree only created if INIT_TXN is enabled during env creation.
git-svn-id: file:///svn/tokudb@2191 c7de825b-a66e-492c-adef-691d508d4ae1
Integrated lock tree into the transactions.
Allocated on create
unlocked on abort/commit
transaction keeps track of which lock trees it owns locks in
Started working on integrating c_get functions.
Modified locktree API to make it easier to use both dupsort and nondup dbs
Fixed tests to work with new locktree API.
git-svn-id: file:///svn/tokudb@2140 c7de825b-a66e-492c-adef-691d508d4ae1
Modified makefiles to clean up install process
Added tests
Added hash table to store list of db's that a tx has access to.
git-svn-id: file:///svn/tokudb@2130 c7de825b-a66e-492c-adef-691d508d4ae1
Addresses #337
Makefile modifications, test modifications,
Lock tree is better integraded with db.
git-svn-id: file:///svn/tokudb@2126 c7de825b-a66e-492c-adef-691d508d4ae1
Fixes the tests with a bound on the number of ranges, and fixes a bug
in lock tree unlock
git-svn-id: file:///svn/tokudb@2125 c7de825b-a66e-492c-adef-691d508d4ae1
Addresses #293
Addresses #307
Adds range count to limit lock system memory from the dbenv, and correspondingly changes range trees and test files
git-svn-id: file:///svn/tokudb@2103 c7de825b-a66e-492c-adef-691d508d4ae1
Added test cases for the hashtable.
Now has 100% line and branch coverage of hashtable except for asserts.
git-svn-id: file:///svn/tokudb@2077 c7de825b-a66e-492c-adef-691d508d4ae1
Addresses #293
Addresses #307
Finished code and integration of rangetree hashtable and lock tree.
All tests pass now (although tests have not yet been written for the hashtable).
git-svn-id: file:///svn/tokudb@2045 c7de825b-a66e-492c-adef-691d508d4ae1
Addresses #307
Replaced unsigned with u_int32_t
Also one bugfix with incorrect assert.
Made all tests run properly (bugs were mostly in the test).
git-svn-id: file:///svn/tokudb@2035 c7de825b-a66e-492c-adef-691d508d4ae1