Howard Chu
aa3463ec7c
Bump version to 0.9.11
11 years ago
Howard Chu
ec97f49a65
Note changes for LMDB 0.9.11
11 years ago
Hallvard Furuseth
98f3bc88bf
Revert "ITS#7772 Reduce spurious sub-page growth."
...
This reverts commit 75494c08b4
,
which must await a fix to ITS#7771 (DUPSORT cursor tracking).
11 years ago
Howard Chu
3f241365d5
Make sure mapsize changes take effect on Windows.
11 years ago
Hallvard Furuseth
5bda3565a9
ITS#7775 Drop <assert.h>, drop/replace assert()s.
...
db_mid2l_insert(): Move assert to mdb.c.
mdb_cursor_set(): Previous assert cannot fail now.
mdb_cursor_put(): Check mc/key and return EINVAL.
mdb_cursor_dbi(): No error return, so just segfault if cursor==NULL.
11 years ago
Howard Chu
6fb561d33e
ITS#7775 Cleanup mdb_node_del()
11 years ago
Hallvard Furuseth
88342f9661
ITS#7775 Add mdb_env_set_assert()
11 years ago
Hallvard Furuseth
e40dae1064
Add mdb_env_<set,get>_userctx()
11 years ago
Hallvard Furuseth
c99525f42a
ITS#7377 Invalidate txn on page-allocation errors
...
This should likely be reverted when all callers handle these errors.
11 years ago
Hallvard Furuseth
123b6e3c3e
Wrap __func__ in mdb_func_
11 years ago
Hallvard Furuseth
21621cc741
Invalidate the txn on corruption/internal errors
11 years ago
Howard Chu
c48cdd7a16
ITS#7775 cleanup unnecessary assert()s
11 years ago
Hallvard Furuseth
1f191ba930
mdb_page_malloc(): Move VGMEMP_ALLOC before memset
11 years ago
Hallvard Furuseth
ce2a0d4016
ITS#7771 mdb_cursor_del0(): Fix xcursor tracking.
11 years ago
Hallvard Furuseth
5adc46d1d2
sprintf format: pid_t need not be an int.
11 years ago
Hallvard Furuseth
661dd2c66d
Add mdb_dbg_pgno(): (sub)pagenum for debug output.
11 years ago
Hallvard Furuseth
75494c08b4
ITS#7772 Reduce spurious sub-page growth.
...
mdb_cursor_put(): Use free sub-page space added by a
previous put(existing DUPSORT item), if any.
Tweak NUMKEYS code to avoid a new signedness warning.
11 years ago
Hallvard Furuseth
46de4ab84c
ITS#7665 Drop lmdb.h doc on non-overlapping flags.
...
It was inaccurate and misplaced. Verify it in mdb.c instead.
11 years ago
Hallvard Furuseth
353cc77cff
ITS#7515 has been fixed.
11 years ago
Hallvard Furuseth
c91f38160c
Drop UNLOCK_MUTEX_R() on mdb_reader_pid() error
11 years ago
Hallvard Furuseth
4c8f57615c
Fix commit "Raise safe max MDB_MAXKEYSIZE."
...
I.e. d69d2ce230
, it left out some changes.
11 years ago
Hallvard Furuseth
a2ed03642c
Replace MDB_node.mn_offset[], to ease debugging.
11 years ago
Hallvard Furuseth
2ce9ffa003
Comment MDB_node, mdb_page_unspill, mdb_update_key
11 years ago
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.
11 years ago
Hallvard Furuseth
a58fd16ae5
Support dynamic max MDB keysize.
11 years ago
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".)
11 years ago
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.
11 years ago
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.
11 years ago
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.
11 years ago
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.
11 years ago
Hallvard Furuseth
fcb0d09598
Add EVEN(): Micro-optimize "up to multiple of 2".
11 years ago
Hallvard Furuseth
753356a38a
Warning cleanup.
...
Drop unused computed/assigned values.
mdb_page_alloc(): Make "mop_len>0 implies mop!=NULL" provable.
11 years ago
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.
11 years ago
Howard Chu
1ffb5e1cba
Fix GET_BOTH_RANGE
...
On near match, return the matched data.
11 years ago
Howard Chu
b77689f975
ITS#7756 keysizes were wrong in mdb_update_key
11 years ago
Howard Chu
f39bceb800
Doc tweak
...
Measured perf cost of meminit was 7% worst case on an Intel Core2
system. YMMV.
11 years ago
Howard Chu
3e40d0c805
Bump to 0.9.10
11 years ago
Howard Chu
f6d8dc4e76
Windows/Win64/MSVC tweaks
...
Silence warnings, fix broken MinGW64 definitions, etc.
11 years ago
Howard Chu
eecbaa5942
Clarify WRITEMAP / NOMEMINIT
11 years ago
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
11 years ago
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.
11 years ago
Hallvard Furuseth
fc87d405f1
Fix MDB_MAXKEYSIZE doc: Account for MDB_DUPSORT.
...
A node may need room for [key, subpage with 2 items] = 3 keys.
11 years ago
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).
11 years ago
Hallvard Furuseth
25d370cb2e
mdb_cursor_put(): Factor out code. Kill a label.
11 years ago
Howard Chu
550bbe3788
Fix prev commit, cursor depth comparison
11 years ago
Howard Chu
4a1717708c
Fix cursor_del0 cursor fixup
...
Skip cursors that aren't as deep as current cursor
11 years ago
Howard Chu
8c9a26c90d
More for #7589
11 years ago
Howard Chu
34459e0585
ITS#7589 another mdb_page_split fix
...
Tweak split_indx check, go one slot further.
11 years ago
Howard Chu
e31983c723
ITS#7736 fix regression in ITS#7733 patch
...
In d8eccb353b
11 years ago
Howard Chu
d8eccb353b
ITS#7733 check cursor index before cursor_del
11 years ago