Howard Chu
7a40080dd1
Add MDB_NOSUBDIR option
...
Create the data file using exactly the given pathname, and
the lock file using a suffix on the data file name.
2011-09-22 18:05:06 -07:00
Howard Chu
54eb76cc7a
Reader table notes
2011-09-22 04:34:40 -07:00
Howard Chu
4bcaabecf5
assert cleanup
2011-09-21 17:21:48 -07:00
Howard Chu
619e671f1c
txn_abort/commit free all their cursors now.
2011-09-21 16:37:29 -07:00
Howard Chu
9bcc51ef5d
Only free malloc'd cursors
2011-09-21 16:06:52 -07:00
Howard Chu
b9d13a29e6
Track changes to all cursors.
...
For any change to a page or node, update all other cursors pointing
at the same page (or node). Cursors are now stored in a linked list
off their owning transaction. Cursors are all closed when the transaction
ends. Cursors in parent transactions are updated when their child
transaction commits.
2011-09-21 15:55:27 -07:00
Howard Chu
c4d5e6e786
Add support for nested transactions.
2011-09-21 12:58:43 -07:00
Hallvard Furuseth
8fa10ae668
libmdb IDL cleanup.
...
Microoptimize IDL search.
Use RANGE_<FIRST/LAST> when IDL is known to be a range.
2011-09-19 10:27:49 +02:00
Howard Chu
02abfb91ba
Additional fix for prev commit
2011-09-18 18:26:54 -07:00
Howard Chu
4272e7de4f
Make sure 2 subpages fit in one real page
2011-09-18 18:13:23 -07:00
Howard Chu
237fabda64
Fix last delete from a subpage
2011-09-18 17:07:47 -07:00
Howard Chu
0ab841598f
Fix 09006ccec7
...
Check for stale DBs was in the wrong place.
2011-09-18 16:39:18 -07:00
Howard Chu
2c70d0430a
Fix mdb_drop() if not deleting the DB record
2011-09-18 14:22:27 -07:00
Howard Chu
77b1017b85
Fix typo, minor cleanup
2011-09-18 14:12:49 -07:00
Howard Chu
57b5fbea49
Add mdb_drop() for deleting a DB
...
Allow MIDLs to grow arbitrarily, to allow unlimited number of
pages to be freed in one txn.
2011-09-18 12:37:02 -07:00
Howard Chu
09006ccec7
API change, consistency check
...
mdb_close() takes an env, not a txn.
Also, add check for stale DB records (in case some other process
wrote to the DB last).
2011-09-18 10:48:12 -07:00
Howard Chu
b7057eb61e
New sorted-dup subpage support
...
Instead of converting directly to a subDB when the first duplicate
item is seen for a key, convert to a subpage instead. Allow the
subpage to grow up to the overflow limit, then convert to a subDB.
This saves a significant amount of space in a typical slapd index
database.
Currently we don't convert back to the smaller form if items are
later deleted. Probably could do that with some hysteresis, e.g.,
convert back from subDB to subpage when the size drops below
(overflow limit/2). Maybe later.
2011-09-17 03:33:07 -07:00
Howard Chu
0a28548131
Use FNV-1A hash to generate unique mutex names
...
For Windows and MacOSX
2011-09-15 10:36:15 -07:00
Howard Chu
2c033676ea
Doc tweak - txn flags
2011-09-14 20:33:09 -07:00
Howard Chu
5b7c983a66
MacOSX semaphore names are limited to 31 chars
...
Including the terminating NUL. Good job documenting that, guys.
2011-09-14 20:30:26 -07:00
Howard Chu
0533f80364
Add MacOSX support
...
mmap() with FIXEDMAP fails, otherwise things work.
2011-09-14 11:31:27 -07:00
Howard Chu
e222506b88
Minor doc cleanup
2011-09-14 01:46:08 -07:00
Howard Chu
9e3e7cefd8
More docs
2011-09-14 01:08:01 -07:00
Howard Chu
71a665aa9d
Namespace cleanup
2011-09-13 23:36:41 -07:00
Howard Chu
56fe0d4f1a
Tweak search_node inner loop to avoid LEAF2 checks
2011-09-13 13:42:02 -07:00
Howard Chu
70c79df1df
cursor_set/search_node tweaks, use intcmp when possible
2011-09-13 13:41:40 -07:00
Howard Chu
dc83777ab9
Minor tweaks, update relfunc behavior
2011-09-12 01:15:22 -07:00
Howard Chu
25529a4c36
More cursor_init cleanup
2011-09-11 23:57:17 -07:00
Howard Chu
8acb755034
One more sub-cursor fix
2011-09-11 23:13:36 -07:00
Howard Chu
92a63ff790
Merge branch 'mdb.master' of ssh://git-master.openldap.org/~git/git/openldap into mdb.master
2011-09-11 22:23:35 -07:00
Howard Chu
3501248548
Fix 2e3bc39fa9
...
Various mistakes when converting from previous data structures.
Add a few more debug asserts/sanity checks.
Split all "if (foo) return" constructs to separate lines to allow
easier breakpoint setting.
Add mtest6 for checking mdb_split() behavior. This needs to be
expanded to check rebalance/merge cases too.
2011-09-11 22:17:10 -07:00
Hallvard Furuseth
946b38f471
Fix mdb debug formats
2011-09-11 19:29:24 +02:00
Hallvard Furuseth
ed0fc55fd3
Restore missing LAZY_LOCKS semicolon.
...
Lost in C90 compat commit c5dad7a6d0
.
2011-09-11 19:29:24 +02:00
Hallvard Furuseth
90ed553301
mdb integer type cleanup: Use MDB_dbi consistently.
...
This changes the prototype of mdb_env_set_maxdbs().
2011-09-11 19:29:24 +02:00
Hallvard Furuseth
b56be64d2e
Drop ULONG in favor of size_t.
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
b1cfff4aeb
Add mdb.c:txnid_t for readability.
...
Maybe later we'll test txnid wraparound with it defined to ushort.
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
bf9d722bec
mdb type cleanup: Consistent reader count types.
...
Use unsigned int for reader counts/max limits, that's the smallest
change. Don't need uint32_t when mdb_env_set_maxreaders() takes less.
Change prototypes of mdb_env_set_maxreaders,mdb_env_get_maxreaders().
Check the mdb_env_set_maxreaders() argument.
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
5f68293475
explain mdl_midl_sort() istack size
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
2d1f3b7ed3
Fix memn(r)cmp of key sizes > INT_MAX. Simplify.
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
69e53cf700
Check some mdb integer type assumptions
2011-09-10 22:49:34 +02:00
Hallvard Furuseth
88da18cccf
Put MDB_node.<mn_lo,mn_hi> in host byte order.
2011-09-10 22:49:20 +02:00
Hallvard Furuseth
c5dad7a6d0
C90 compatibility cleanup in mdb.
...
Fix void* pointer arithmetic in cintcmp().
Fix invalid ';'s in declarations after possibly-empty macros.
2011-09-10 15:39:02 +02:00
Hallvard Furuseth
3dc8fa491a
Cleanup mdb macros.
...
Parenthesize. Rename GetPageSize -> GET_PAGESIZE since it does not
behave like a function (it has a non-pointer output argument).
2011-09-10 10:11:55 +02:00
Hallvard Furuseth
ec2d82f79a
libmdb/.gitignore += test[45], Doxygen output
2011-09-10 10:11:55 +02:00
Howard Chu
acdc248f57
If put(NOOVERWRITE) exists, return existing data
2011-09-09 22:28:07 -07:00
Howard Chu
a7edb95e64
Minor typos, additional clarification
2011-09-09 03:52:12 -07:00
Howard Chu
0c487538cf
Partial revert, fix MDB_page definition
2011-09-08 20:18:29 -07:00
Howard Chu
9ac8638d9d
More docs
2011-09-08 17:13:51 -07:00
Howard Chu
bed3123b82
More docs
2011-09-08 14:34:21 -07:00
Howard Chu
1b69295a48
Speedup cintcmp
...
Now that we know we're always 2-byte aligned...
2011-09-08 13:10:17 -07:00