Hallvard Furuseth
b37b2a651f
Factor out MDB_TXN_ERROR
11 years ago
Hallvard Furuseth
ba8f59edf4
Simplify MDB_MULTIPLE
11 years ago
Hallvard Furuseth
ac158c7e1e
ITS#7834 Fix MDB_MULTIPLE writing multiple keys.
...
Update the state before looping, so the key is not duplicated.
Broke in 4c8f57615c
(mostly).
11 years ago
Hallvard Furuseth
d170df58fb
ITS#7861 Re-fix MDB_db.md_entries.
...
mdb_cursor_del(): Fix md_entries with MDB_NODUPDATA.
mdb_cursor_put(): Check in xcursor whether an item got inserted. Count
data instead of keys after 13d6d59c51
.
11 years ago
Hallvard Furuseth
83676dc0f0
Document DBI issues, extend MDB_BAD_VALSIZE.
11 years ago
Hallvard Furuseth
2f33effcdc
More ITS#7793 Check key->mv_size with MDB_CURRENT.
...
Since non-NULL key must be provided now.
11 years ago
Howard Chu
4b9aed26a5
Fix mdb_rebalance collapsing root
...
Shift the rest of the cursor stack as needed
11 years ago
Howard Chu
4844a72d01
ITS#7829 more for mdb_rebalance
...
Make sure to propagate rebalance results all the
way back to original caller's cursor.
11 years ago
Hallvard Furuseth
2764360a7b
ITS#7829 Simplify last commit
11 years ago
Howard Chu
fca18d2586
ITS#7829 more for prev commit
11 years ago
Howard Chu
ac3acc1218
ITS#7829 fix rebalance
...
Fixup cursor state after node_move/page_merge
11 years ago
Howard Chu
13d6d59c51
ITS#7793/7828
...
Fix md_entries count, test for insert on md_entries increment
11 years ago
Howard Chu
f537429b64
ITS#7828, #7793
...
Clarify MDB_CURRENT key usage, simplify freelist_save
11 years ago
Howard Chu
9026894e05
Revert "ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT."
...
This reverts commit 4e954f8ae8
.
Caused ITS#7828.
11 years ago
Hallvard Furuseth
86d9675543
Revert "Update MDB_PANIC description" (thinko).
...
This reverts commit 6bd34d0534
.
11 years ago
Hallvard Furuseth
6bd34d0534
Update MDB_PANIC description
11 years ago
Hallvard Furuseth
1519f4bc3d
Tweak mdb_mid2l_insert() call from ITS#7775.
...
It does not return MDB error codes.
11 years ago
Hallvard Furuseth
68e97b2184
Handle more errors. Invalidate txn if needed.
11 years ago
Hallvard Furuseth
937b5eff07
Don't use non-existent node info in branch/leaf2
11 years ago
Hallvard Furuseth
86f8b203f5
Move code out of mdb_cursor_del0() and mdb_del().
...
Prepares for the next commits.
11 years ago
Hallvard Furuseth
012d7b5de7
More checks for closed DBIs and invalidated txns.
...
Factor txn/DBI-checks out to TXN_DBI_EXIST().
mdb_audit(): Skip closed DBIs.
mdb_cursor_renew(), mdb_stat(): Check DBI and txn.
mdb_cursor_count(): Check txn.
mdb_dbi_flags(): Check DBI.
11 years ago
Hallvard Furuseth
3e7c1bd4e2
mdb_page_list(): Support & display all page types
11 years ago
Hallvard Furuseth
a22c31115f
mdb_txn_renew0(): Fix un-mutexed me_flags update.
...
Replace env flag MDB_LIVE_READER with field me_live_reader.
11 years ago
Hallvard Furuseth
684bb867ce
Doxygen fixes
11 years ago
Howard Chu
797ff136a8
ITS#7815 more for page_split
...
This case didn't come up in testing. Needs finer grained test.
11 years ago
Howard Chu
0e7fba73b7
ITS#7815 fix mdb_page_split
...
Was leaving cursor pointed at wrong page if the newindx was
in the right sibling page, and the parent was also split.
11 years ago
Hallvard Furuseth
4e954f8ae8
ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT.
...
Ignore key, broken by 5bda3565a9
and some older code. Document and clarify MDB_CURRENT usage.
Also affects non-MDB_CURRENT put() with empty data and a key
which matches by the mdb_set_compare function but not by memcmp.
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
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