Hallvard Furuseth
c91f38160c
Drop UNLOCK_MUTEX_R() on mdb_reader_pid() error
2013-12-29 14:52:30 +01:00
Hallvard Furuseth
4c8f57615c
Fix commit "Raise safe max MDB_MAXKEYSIZE."
...
I.e. d69d2ce230
, it left out some changes.
2013-12-21 12:31:57 +01:00
Hallvard Furuseth
a2ed03642c
Replace MDB_node.mn_offset[], to ease debugging.
2013-12-11 11:57:13 +01:00
Hallvard Furuseth
2ce9ffa003
Comment MDB_node, mdb_page_unspill, mdb_update_key
2013-12-11 11:57:13 +01:00
Hallvard Furuseth
7e453c9763
Fix mdb_reader_list() and its spec.
...
It and the MDB_msg_func can now return >= 0 for success.
Always return any MDB_msg_func() error result.
2013-12-11 11:57:13 +01:00
Hallvard Furuseth
a58fd16ae5
Support dynamic max MDB keysize.
2013-12-11 11:57:13 +01:00
Hallvard Furuseth
d69d2ce230
Raise safe max MDB_MAXKEYSIZE.
...
Use a sub-DB for DUPSORT item #1/#2 per key if needed: Not a sub-
page too big for a node, nor an overflow page (which not all DUPSORT
code checks for). Move "insert" code, to avoid non-loop goto upwards.
(This is the commit which needs the change to xdata.mv_size in
commit 9d6e4a9163
"page sizes".)
2013-12-11 11:57:13 +01:00
Hallvard Furuseth
734bc7e6ad
Relax MDB_MAXKEYSIZE for existing data.
...
Handle keys stored by a liblmdb with a bigger MDB_MAXKEYSIZE.
mdb_get/mdb_del(absent key bigger than our MDB_MAXKEYSIZE)
now return MDB_NOTFOUND instead of MDB_BAD_VALSIZE.
2013-12-11 11:57:12 +01:00
Hallvard Furuseth
a8de10d148
ITS#7589 Fix me_nodemax and related node sizes.
...
Change me_nodemax to not count the mp_ptrs[] entry. That's mostly
how it was used. Compare node sizes ">" me_nodemax instead of ">=".
The ">=" was a workaround for confusing sizes with and without the
mp_ptrs[] entry, but broke for nodes with size (old me_nodemax-1).
Explicitly make me_nodemax even. An odd value could break the
comparisons. It was even anyway because MDB_MINKEYS == 2.
2013-12-11 11:57:12 +01:00
Hallvard Furuseth
6808abe770
ITS#7589 Fix delete(uneven-sized MDB_DUPFIXED data).
...
Do not give uneven sizes to the sub-page and the node it lives in.
2013-12-11 11:57:12 +01:00
Hallvard Furuseth
c0858e6d93
put(MDB_MULTIPLE): Skip existing item cleanly.
...
Don't set dkey.mv_size if mdb won't clear it before next iteration.
2013-12-11 11:57:12 +01:00
Hallvard Furuseth
fcb0d09598
Add EVEN(): Micro-optimize "up to multiple of 2".
2013-12-11 11:57:12 +01:00
Hallvard Furuseth
753356a38a
Warning cleanup.
...
Drop unused computed/assigned values.
mdb_page_alloc(): Make "mop_len>0 implies mop!=NULL" provable.
2013-12-11 11:57:12 +01:00
Hallvard Furuseth
e1266bf331
Clean up mdb_copy.
...
Support MDB_NOSUBDIR. Catch more errors. Write messages
to stderr, not stdout which the data too may be piped to.
2013-12-11 11:57:12 +01:00
Howard Chu
1ffb5e1cba
Fix GET_BOTH_RANGE
...
On near match, return the matched data.
2013-12-04 18:42:49 -08:00
Howard Chu
b77689f975
ITS#7756 keysizes were wrong in mdb_update_key
2013-11-29 17:03:49 -08:00
Howard Chu
f39bceb800
Doc tweak
...
Measured perf cost of meminit was 7% worst case on an Intel Core2
system. YMMV.
2013-11-12 08:10:33 -08:00
Howard Chu
3e40d0c805
Bump to 0.9.10
2013-11-11 20:15:54 -08:00
Howard Chu
f6d8dc4e76
Windows/Win64/MSVC tweaks
...
Silence warnings, fix broken MinGW64 definitions, etc.
2013-11-11 20:08:26 -08:00
Howard Chu
eecbaa5942
Clarify WRITEMAP / NOMEMINIT
2013-11-11 16:35:17 -08:00
Howard Chu
509a197728
Change default mem init behavior
...
Init malloc'd memory by default, use #MDB_NOMEMINIT to disable.
Bump version to 0.9.10
2013-11-11 15:09:32 -08:00
Hallvard Furuseth
92f71f50f9
Add MDB_CLEANMEM option.
...
Initialize unused portions of DB pages, for security or to silence
checkers like Purify and Valgrind. Like BDB configure --enable-umrw.
2013-11-07 23:41:30 +01:00
Hallvard Furuseth
fc87d405f1
Fix MDB_MAXKEYSIZE doc: Account for MDB_DUPSORT.
...
A node may need room for [key, subpage with 2 items] = 3 keys.
2013-11-07 23:38:15 +01:00
Hallvard Furuseth
9d6e4a9163
ITS#7713 Handle bigger OS page sizes
...
Use DB page size = min(32k, OS pagesize). Previous limit was 8k
(MDB_MINKEYS*MDB_PAGESIZE).
Handle DB pagesize < OS pagesize. That's an I/O pessimization,
but transactions remain atomic: Only writing the MDB_meta must
be atomic, and it fits in one OS page.
Don't truncate desired subpage size: Asssign it to a size_t
(mv_size), not an uint16_t (mp_upper).
2013-11-07 23:38:15 +01:00
Hallvard Furuseth
25d370cb2e
mdb_cursor_put(): Factor out code. Kill a label.
2013-11-07 23:38:15 +01:00
Howard Chu
550bbe3788
Fix prev commit, cursor depth comparison
2013-11-07 09:37:48 -08:00
Howard Chu
4a1717708c
Fix cursor_del0 cursor fixup
...
Skip cursors that aren't as deep as current cursor
2013-11-06 16:51:21 -08:00
Howard Chu
8c9a26c90d
More for #7589
2013-11-04 20:00:55 -08:00
Howard Chu
34459e0585
ITS#7589 another mdb_page_split fix
...
Tweak split_indx check, go one slot further.
2013-10-31 17:31:15 -07:00
Howard Chu
e31983c723
ITS#7736 fix regression in ITS#7733 patch
...
In d8eccb353b
2013-10-31 16:01:49 -07:00
Howard Chu
d8eccb353b
ITS#7733 check cursor index before cursor_del
2013-10-28 07:25:54 -07:00
David Wilson
742a078ea5
ITS#7734 Add MDB_NORDAHEAD to CHANGELESS.
2013-10-28 06:58:52 -07:00
Howard Chu
7449ca604c
Bump to 0.9.9
2013-10-24 15:57:17 -07:00
Howard Chu
b86f08e9d6
Add mdb_env_get_fd()
...
Return the environment's filedescriptor. Useful when the caller
is doing their own locking.
2013-10-21 10:41:41 -07:00
Howard Chu
dddc7a385b
Fix 01dfb2083d
...
USE_POSIX_SEM must define USE_HASH
2013-10-14 09:47:26 -07:00
Howard Chu
ab9b08f8af
ITS#7725 add MDB_NORDAHEAD flag for env_open
2013-10-12 16:20:04 -07:00
Howard Chu
5a9ddfd289
ITS#7589 silence warnings
2013-10-12 13:40:28 -07:00
Howard Chu
2211fb15db
ITS#7589 Fix typo in prev commit
2013-10-12 13:31:09 -07:00
Howard Chu
400e21370b
ITS#7589 Cleanup unneeded vars in prev patch
2013-10-12 13:20:02 -07:00
Howard Chu
310b656a2e
ITS#7589 avoid wasting space in mdb_page_split
...
Also, check the split point on branch pages as well as leaf pages.
2013-10-12 09:34:40 -07:00
Howard Chu
01dfb2083d
Add MDB_USE_HASH
...
There may be other uses for it besides semaphore names.
2013-10-12 09:28:37 -07:00
Howard Chu
940f5cb373
ITS#7722 fix page_merge for collapsing root
...
Other cursors being fixed up are not necessarily height 1.
2013-10-09 02:24:45 -07:00
Howard Chu
bf0e97aa0e
ITS#7718 invalidate cursor when DB gets emptied
2013-10-08 04:43:58 -07:00
Howard Chu
d327a36ad8
Fix mdb_env_set_mapsize()
...
Don't allow shrinking below minimum size for an already open env.
2013-10-04 02:55:34 -07:00
Howard Chu
2520247ba1
ITS#7715 always set filesize for WRITEMAP
2013-10-04 02:46:38 -07:00
Hallvard Furuseth
9f7ae8925f
Add Caveat: Readers need write access. Whitespace.
2013-10-04 00:51:58 +02:00
Hallvard Furuseth
0f9b79e12c
Maintain MDB_cursor.mc_top
2013-10-04 00:32:35 +02:00
Hallvard Furuseth
99ea7669a3
mdb_cursor_sibling(): Fix error result
2013-10-03 23:59:25 +02:00
Hallvard Furuseth
8f075595a1
mdb_node_add(): Plug page leak when MDB_PAGE_FULL.
...
Do not fail after mdb_page_new() succeeds.
2013-10-03 23:59:25 +02:00
Hallvard Furuseth
3a1d73daff
Optimize code holding reader mutex
2013-10-03 23:59:24 +02:00