Commit graph

366 commits

Author SHA1 Message Date
Hallvard Furuseth
e1a676eb18 ITS#7713 cleanups
'#ifdef MDB_DEVEL' -> '#if MDB_DEVEL'
Fix comments, use actual PAGEBASE macro as originally intended.
Actually enable 64K pages. Set MDB_DATA_VERSION for testing only.
2014-07-08 15:01:18 -07:00
Hallvard Furuseth
6ed295b256 Fixes for loose pages
mdb_txn_commit(child): Give loose pages to parent.
Use a pointer beyond the page header instead of mp_next, so
we will not need to save/restore mp_pgno. This avoids a crash
caused by references to mp_pgno.
2014-07-08 14:39:57 -07:00
Howard Chu
b3e8c71dc7 Re-fix cursor EOF
Fix in 534dcc7212 was in wrong place
2014-07-08 11:54:24 -07:00
Howard Chu
68e6faad5c ITS#7713 handle 65536 byte page size
Fix mp_lower/mp_upper to exclude PAGEHDRSZ, which means our
max mp_upper is now pagesize - PAGEHDRSZ and won't overflow.
Currently must define MDB_DEVEL to use. Will be default for
LMDB 1.0/OpenLDAP 2.5
2014-07-07 17:31:15 -07:00
Howard Chu
534dcc7212 Set xcursor EOF after deleting last entry 2014-07-07 17:13:51 -07:00
Howard Chu
1ac5147fc1 Compacting copy doesn't need to snapshot metas 2014-07-06 17:47:25 -07:00
Howard Chu
61f7ec9bfa Windows fixes 2014-07-06 07:49:38 -07:00
Howard Chu
7d996d7f3d Play games with object file layout
Use gcc section attribute to keep less frequently used functions
away from main code.
2014-07-05 08:48:47 -07:00
Howard Chu
3e98addbe2 Rationalize mdb_env_copy2 API 2014-07-05 07:49:10 -07:00
Howard Chu
059b357d1a More tweaks to copyfd2
Make sure the writer thread starts and stops when we expect it to.
2014-07-03 14:26:14 -07:00
Howard Chu
03f0ecb001 More copyfd2 tweaks 2014-07-03 10:49:05 -07:00
Howard Chu
6043103c13 Fix envinfo to return fixed map address 2014-07-03 08:31:57 -07:00
Howard Chu
64191264b8 Windows compat 2014-07-03 07:49:22 -07:00
Howard Chu
8836b78e94 Fix subDB/ovpage copying 2014-07-02 11:44:06 -07:00
Howard Chu
af3c340758 Larger WBUF still better on large DB 2014-07-02 08:07:11 -07:00
Howard Chu
342cd72f25 Don't check LEAF2 pages for subnodes 2014-07-02 07:45:12 -07:00
Howard Chu
4009c9ae65 Add mdb_env_copy2()
And mdb_env_copyfd2(). Perform compaction on the copy. Trims out
freed pages and renumbers data pages in sequential order. This is
more CPU-intensive since it copies and modifies data pages.
2014-07-01 21:45:43 -07:00
Howard Chu
b09e46904c ITS#7886 fix mdb_copy write size
Don't try to write past end of file
2014-06-30 04:41:50 -07:00
Hallvard Furuseth
91d8ad1d3c Fix mdb_page_loose() vs. mdb_page_flush().
Do not overwrite loose pages' mp_pgno with mp_next.
mdb_page_flush() will use mp_pgno to rebuild dirty_list.
2014-06-28 13:38:03 +02:00
Howard Chu
a3e5539505 More for mdb_page_loose
Require that the page is dirty in the current txn,
not a parent txn.
2014-06-24 11:43:13 -07:00
Howard Chu
7fe85f5c82 More MDB -> LMDB renames 2014-06-24 04:42:44 -07:00
Howard Chu
225bcae3e7 Flesh out mdb_cmp_cint for BigEndians 2014-06-23 07:36:38 -07:00
Howard Chu
aa89ca31b3 More for page_loosen
Don't try this when working on the FreeDB. Again,
too much hassle to unkink the recursions...
2014-06-22 16:39:14 -07:00
Howard Chu
d9423e13f8 More cleanup for page_merge, page_loosen
Only loosen src page if it's actually dirty.
Refactor page refs in page_merge.
2014-06-21 15:53:41 -07:00
Howard Chu
7cab7b95e2 Handle loose pages
Pages that were dirtied and deleted in the same txn should be
reused, instead of consuming freeDB pages.
2014-06-21 03:30:34 -07:00
Howard Chu
eebbd22c2f Fix mdb_page_merge
Similar to prev commit for mdb_node_move, the call of
mdb_page_serch_lowest() was leaving csrc unusable.
2014-06-20 23:40:44 -07:00
Howard Chu
79e8462d74 Fix mdb_node_move
Was leaving stale info in dst cursor
2014-06-20 17:56:04 -07:00
Howard Chu
3e83b5b27b Add mdb_dump, update copyrights 2014-06-20 06:36:30 -07:00
Howard Chu
39ed8bef04 Tweak ovpage search
Use num*20, chosen from empirical testing
2014-06-18 13:37:04 -07:00
Howard Chu
b4ecbd78d9 Fix some overwrite quirks
Was skipping the overwrite in some cases, if the cmp function
said the new and old already matched. We should always perform
the overwrite anyway, since the cmp function may only be doing
a prefix compare and the data may actually be different.
2014-06-18 12:29:13 -07:00
Howard Chu
dc7f2530dd Tweak prev patch for ovpage search 2014-06-18 09:07:39 -07:00
Howard Chu
2db55c7d99 Shorten search for ovpage space 2014-06-18 03:02:08 -07:00
Howard Chu
17c09fa476 ITS#7875 fix #7681 regression
Due to commit 18a07eb7c2
2014-06-11 02:27:56 -07:00
Alexey Naumov
a93810cc3d Fix possible crash in DLL_THREAD_DETACH (explodes in .Net Framework) 2014-05-30 23:39:44 -07:00
Hallvard Furuseth
c0d64cf182 Comment ~MDB_APPEND, from earlier commit message. 2014-05-30 10:50:04 +02:00
Hallvard Furuseth
cb5656c726 Factor out mdb_cmp_clong() 2014-05-30 10:47:56 +02:00
Hallvard Furuseth
64a02e2279 More for big MDB_MAXKEYSIZE with MDB_DUPSORT.
With mdb_cursor_put(new key, data item big enough to need a sub-DB):
- Track cursors as when adding other nodes.  The "!do_sub" is now
  unneeded.  Before ITS#7861 it distinguished inserting key from data.
- Set MDB_TXN_ERROR if an empty sub-DB was created.  I.e. adding
  key:subDB succeeded, but inserting the data item failed.
2014-05-30 10:47:56 +02:00
Hallvard Furuseth
b37b2a651f Factor out MDB_TXN_ERROR 2014-05-30 09:06:08 +02:00
Hallvard Furuseth
ba8f59edf4 Simplify MDB_MULTIPLE 2014-05-30 09:06:08 +02:00
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).
2014-05-30 09:06:08 +02:00
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.
2014-05-30 09:06:08 +02:00
Hallvard Furuseth
83676dc0f0 Document DBI issues, extend MDB_BAD_VALSIZE. 2014-05-30 09:06:08 +02:00
Hallvard Furuseth
2f33effcdc More ITS#7793 Check key->mv_size with MDB_CURRENT.
Since non-NULL key must be provided now.
2014-05-30 09:06:08 +02:00
Howard Chu
4b9aed26a5 Fix mdb_rebalance collapsing root
Shift the rest of the cursor stack as needed
2014-05-20 08:47:28 -07:00
Howard Chu
4844a72d01 ITS#7829 more for mdb_rebalance
Make sure to propagate rebalance results all the
way back to original caller's cursor.
2014-04-03 12:51:41 -07:00
Hallvard Furuseth
2764360a7b ITS#7829 Simplify last commit 2014-04-02 07:02:14 +02:00
Howard Chu
fca18d2586 ITS#7829 more for prev commit 2014-03-31 13:42:19 -07:00
Howard Chu
ac3acc1218 ITS#7829 fix rebalance
Fixup cursor state after node_move/page_merge
2014-03-28 13:51:59 -07:00
Howard Chu
13d6d59c51 ITS#7793/7828
Fix md_entries count, test for insert on md_entries increment
2014-03-26 08:59:43 -07:00
Howard Chu
f537429b64 ITS#7828, #7793
Clarify MDB_CURRENT key usage, simplify freelist_save
2014-03-26 02:35:56 -07:00