Howard Chu [Thu, 31 Jul 2014 16:59:52 +0000 (09:59 -0700)]
ITS#7913 mdb_cursor_get(*_DUP) cleanup
FIRST_DUP/LAST_DUP should succeed even on non-duplicate values
PREV_DUP should reset cursor's EOF flag.
Howard Chu [Sun, 27 Jul 2014 01:16:02 +0000 (18:16 -0700)]
Fix MIPS cache coherency on Linux
MIPS chips require manual control of on-chip caches. The cacheflush
syscall being used here only exists on MIPS Linux, other OSs will
require revisiting.
Howard Chu [Thu, 24 Jul 2014 11:15:45 +0000 (04:15 -0700)]
Update date
Howard Chu [Thu, 24 Jul 2014 11:13:55 +0000 (04:13 -0700)]
more for mdb_cursor_count
return MDB_NOTFOUND if the cursor is empty
Hallvard Furuseth [Wed, 9 Jul 2014 19:38:45 +0000 (21:38 +0200)]
Fix mdb_copy & co when MDB pagesize < OS pagesize
Howard Chu [Thu, 24 Jul 2014 00:31:34 +0000 (17:31 -0700)]
ITS#7789 doc updates
Hallvard Furuseth [Thu, 24 Jul 2014 00:24:31 +0000 (17:24 -0700)]
ITS#7789 Fix mdb_env_write_meta().
Always write mapsize = max(other metapage:mapsize, env:mapsize).
Howard Chu [Thu, 24 Jul 2014 00:10:41 +0000 (17:10 -0700)]
Revert ITS#7789 commits, let's try this again.
Revert "ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment."
Revert "ITS#7789 more"
Revert "Revert "ITS#7789 update RESIZED errmsg text""
Revert "ITS#7789 update RESIZED errmsg text"
Revert "ITS#7789 persist mapsize changes"
This reverts commit
02285aca58f5629547263ba09e7dd685dcf6b4b5.
This reverts commit
38e71c68de2ad61fb0fd72fd40214fd9a94479b9.
This reverts commit
a5e4eecb1e59e9645113bb4c63d06a23a2c4bdf9.
This reverts commit
d8e18551c3f03d5205f4dc8d1711e494d3814b17.
This reverts commit
5926e54bba7c976e0837221efb20cbff384207b8.
Howard Chu [Tue, 22 Jul 2014 01:20:31 +0000 (18:20 -0700)]
Fix env_open mode bits
Howard Chu [Mon, 21 Jul 2014 15:33:59 +0000 (08:33 -0700)]
Fix mdb_cursor_count, reject uninit'd cursor
Howard Chu [Mon, 21 Jul 2014 15:11:33 +0000 (08:11 -0700)]
Silence prototype warnings
Howard Chu [Mon, 14 Jul 2014 16:53:53 +0000 (09:53 -0700)]
Typo
Howard Chu [Mon, 14 Jul 2014 16:51:16 +0000 (09:51 -0700)]
ITS#7896 fix for mdb_env_map
Don't pass non-NULL map address unless MDB_FIXEDMAP was used.
Howard Chu [Wed, 9 Jul 2014 22:03:54 +0000 (15:03 -0700)]
More for cursor EOF
Must also set in sub-cursor if deleting entire subDB
Howard Chu [Wed, 9 Jul 2014 19:05:37 +0000 (12:05 -0700)]
Zero-init copy2 writebuf
Hallvard Furuseth [Wed, 9 Jul 2014 18:18:08 +0000 (20:18 +0200)]
MDB_MAXKEYSIZE = 0 (dynamic value) when MDB_DEVEL
Hallvard Furuseth [Wed, 9 Jul 2014 18:17:13 +0000 (20:17 +0200)]
MDB_DEVEL doxygen fix
Hallvard Furuseth [Wed, 9 Jul 2014 18:16:33 +0000 (20:16 +0200)]
ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment.
Howard Chu [Wed, 9 Jul 2014 17:22:25 +0000 (10:22 -0700)]
Windows fixes
Always set the filesize when opening for writes. Otherwise
can't use backups from mdb_copy.
Howard Chu [Wed, 9 Jul 2014 16:31:49 +0000 (09:31 -0700)]
Windows compat
We mainly use Win32 functions, so cannot just use C-runtime strerror
to return error messages. We have to use Win32-specific messages.
Unfortunately, we document the API to return C-runtime error codes,
so we can't just switch to all Win32 error codes.
Howard Chu [Wed, 9 Jul 2014 16:16:03 +0000 (09:16 -0700)]
Fix loading of printable dump
Off-by-one in end check, would complain on valid input.
Howard Chu [Wed, 9 Jul 2014 13:54:32 +0000 (06:54 -0700)]
ITS#7789 more
persist size changes from env_open() as well. This was the
original behavior.
Howard Chu [Wed, 9 Jul 2014 13:17:54 +0000 (06:17 -0700)]
Revert "ITS#7789 update RESIZED errmsg text"
This reverts commit
d8e18551c3f03d5205f4dc8d1711e494d3814b17.
And partially reverts mapsize check. Only mapsize increases are relevant.
Howard Chu [Wed, 9 Jul 2014 12:13:10 +0000 (05:13 -0700)]
ITS#7825 more
Set read txn's dbiseqs to env's. Set child txn's dbiseqs to parent's.
Simplify DBI_CHANGED test, no need to check md_name. No-op dbi_close
of already closed handle.
Howard Chu [Wed, 9 Jul 2014 04:40:11 +0000 (21:40 -0700)]
Updates #7789, #7825
Howard Chu [Wed, 9 Jul 2014 04:31:48 +0000 (21:31 -0700)]
ITS#7825 more
only update dbiseq in dbi_open on write txns
Howard Chu [Wed, 9 Jul 2014 04:22:07 +0000 (21:22 -0700)]
ITS#7825 tweak prev commit
dbiseqs are only checked in write txns so omit from read txns
Howard Chu [Wed, 9 Jul 2014 04:02:40 +0000 (21:02 -0700)]
ITS#7825 add MDB_BAD_DBI error code
Use DBI sequence numbers to detect DBIs being closed while in use.
Howard Chu [Wed, 9 Jul 2014 03:05:31 +0000 (20:05 -0700)]
ITS#7789 update RESIZED errmsg text
Howard Chu [Wed, 9 Jul 2014 02:06:45 +0000 (19:06 -0700)]
ITS#7789 persist mapsize changes
Write decreases too, not just increases. Check for any size change
that was not requested by this process.
Howard Chu [Tue, 8 Jul 2014 23:27:26 +0000 (16:27 -0700)]
Update LMDB version date/info
Howard Chu [Tue, 8 Jul 2014 23:27:03 +0000 (16:27 -0700)]
ITS#7892 Fix MacOSX section name
Hallvard Furuseth [Tue, 8 Jul 2014 22:01:18 +0000 (15:01 -0700)]
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.
Hallvard Furuseth [Tue, 8 Jul 2014 18:52:53 +0000 (11:52 -0700)]
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.
Howard Chu [Tue, 8 Jul 2014 18:54:24 +0000 (11:54 -0700)]
Re-fix cursor EOF
Fix in
534dcc721287cfe1051191a5cd7d3df6cf1dc409 was in wrong place
Howard Chu [Mon, 7 Jul 2014 16:12:22 +0000 (09:12 -0700)]
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
Howard Chu [Tue, 8 Jul 2014 00:13:51 +0000 (17:13 -0700)]
Set xcursor EOF after deleting last entry
Howard Chu [Mon, 7 Jul 2014 00:47:25 +0000 (17:47 -0700)]
Compacting copy doesn't need to snapshot metas
Howard Chu [Sun, 6 Jul 2014 14:49:38 +0000 (07:49 -0700)]
Windows fixes
Howard Chu [Sat, 5 Jul 2014 15:48:47 +0000 (08:48 -0700)]
Play games with object file layout
Use gcc section attribute to keep less frequently used functions
away from main code.
Howard Chu [Sat, 5 Jul 2014 14:49:10 +0000 (07:49 -0700)]
Rationalize mdb_env_copy2 API
Howard Chu [Thu, 3 Jul 2014 21:26:14 +0000 (14:26 -0700)]
More tweaks to copyfd2
Make sure the writer thread starts and stops when we expect it to.
Howard Chu [Thu, 3 Jul 2014 17:49:05 +0000 (10:49 -0700)]
More copyfd2 tweaks
Howard Chu [Thu, 3 Jul 2014 15:31:57 +0000 (08:31 -0700)]
Fix envinfo to return fixed map address
Howard Chu [Thu, 3 Jul 2014 14:49:22 +0000 (07:49 -0700)]
Windows compat
Howard Chu [Wed, 2 Jul 2014 18:44:06 +0000 (11:44 -0700)]
Fix subDB/ovpage copying
Howard Chu [Wed, 2 Jul 2014 15:06:19 +0000 (08:06 -0700)]
Larger WBUF still better on large DB
Howard Chu [Wed, 2 Jul 2014 14:45:12 +0000 (07:45 -0700)]
Don't check LEAF2 pages for subnodes
Howard Chu [Wed, 2 Jul 2014 04:45:43 +0000 (21:45 -0700)]
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.
Howard Chu [Wed, 2 Jul 2014 01:53:47 +0000 (18:53 -0700)]
dump/load need mapsize etc.
Howard Chu [Tue, 1 Jul 2014 12:11:43 +0000 (05:11 -0700)]
All diagnostics should go to stderr
Howard Chu [Mon, 30 Jun 2014 11:42:41 +0000 (04:42 -0700)]
More gcov setup tweaks
Howard Chu [Mon, 30 Jun 2014 11:41:50 +0000 (04:41 -0700)]
ITS#7886 fix mdb_copy write size
Don't try to write past end of file
Hallvard Furuseth [Sat, 28 Jun 2014 11:38:03 +0000 (13:38 +0200)]
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.
Howard Chu [Fri, 27 Jun 2014 17:53:11 +0000 (10:53 -0700)]
Trap signals
Try to exit cleanly to avoid leaving stale readers. Not
a critical issue since mdb_reader_check can take care of
them, but still cleaner.
Howard Chu [Thu, 26 Jun 2014 12:19:47 +0000 (05:19 -0700)]
Setup for gcov/coverage testing
Howard Chu [Tue, 24 Jun 2014 18:43:13 +0000 (11:43 -0700)]
More for mdb_page_loose
Require that the page is dirty in the current txn,
not a parent txn.
Howard Chu [Tue, 24 Jun 2014 11:42:44 +0000 (04:42 -0700)]
More MDB -> LMDB renames
Howard Chu [Tue, 24 Jun 2014 11:16:19 +0000 (04:16 -0700)]
Doc updates
Rename MDB -> LMDB
Integrate tool manpages
Howard Chu [Mon, 23 Jun 2014 14:39:06 +0000 (07:39 -0700)]
ITS#7879 Windows build compatibility
Just use srand/rand, we don't care about the quality
of the random numbers, we just want some data.
Howard Chu [Mon, 23 Jun 2014 14:36:38 +0000 (07:36 -0700)]
Flesh out mdb_cmp_cint for BigEndians
Howard Chu [Sun, 22 Jun 2014 23:39:14 +0000 (16:39 -0700)]
More for page_loosen
Don't try this when working on the FreeDB. Again,
too much hassle to unkink the recursions...
Howard Chu [Sat, 21 Jun 2014 22:53:41 +0000 (15:53 -0700)]
More cleanup for page_merge, page_loosen
Only loosen src page if it's actually dirty.
Refactor page refs in page_merge.
Howard Chu [Sat, 21 Jun 2014 15:34:45 +0000 (08:34 -0700)]
Silence ptr arithmetic warnings
Howard Chu [Sat, 21 Jun 2014 10:30:34 +0000 (03:30 -0700)]
Handle loose pages
Pages that were dirtied and deleted in the same txn should be
reused, instead of consuming freeDB pages.
Howard Chu [Sat, 21 Jun 2014 06:40:44 +0000 (23:40 -0700)]
Fix mdb_page_merge
Similar to prev commit for mdb_node_move, the call of
mdb_page_serch_lowest() was leaving csrc unusable.
Howard Chu [Sat, 21 Jun 2014 00:56:04 +0000 (17:56 -0700)]
Fix mdb_node_move
Was leaving stale info in dst cursor
Howard Chu [Fri, 20 Jun 2014 16:03:41 +0000 (09:03 -0700)]
Fix lineno count
Howard Chu [Fri, 20 Jun 2014 16:00:33 +0000 (09:00 -0700)]
Fix multiple subDBs
Howard Chu [Fri, 20 Jun 2014 15:56:52 +0000 (08:56 -0700)]
Fix unhex
Howard Chu [Fri, 20 Jun 2014 15:49:59 +0000 (08:49 -0700)]
Add mdb_load
Howard Chu [Fri, 20 Jun 2014 12:33:31 +0000 (05:33 -0700)]
Add mdb_dump, update copyrights
Howard Chu [Wed, 18 Jun 2014 21:25:46 +0000 (14:25 -0700)]
Bump to 0.9.13
Howard Chu [Wed, 18 Jun 2014 21:07:15 +0000 (14:07 -0700)]
Bump to 0.9.13
Hallvard Furuseth [Wed, 18 Jun 2014 21:01:14 +0000 (23:01 +0200)]
ITS#7793 Re-fix MDB_CURRENT doc: Match current item
Hallvard Furuseth [Wed, 18 Jun 2014 21:01:14 +0000 (23:01 +0200)]
Fix MDB_GET_MULTIPLE/MDB_NEXT_MULTIPLE doc.
Howard Chu [Wed, 18 Jun 2014 20:37:04 +0000 (13:37 -0700)]
Tweak ovpage search
Use num*20, chosen from empirical testing
Howard Chu [Wed, 18 Jun 2014 19:29:13 +0000 (12:29 -0700)]
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.
Howard Chu [Wed, 18 Jun 2014 16:07:39 +0000 (09:07 -0700)]
Tweak prev patch for ovpage search
Howard Chu [Wed, 18 Jun 2014 10:02:08 +0000 (03:02 -0700)]
Shorten search for ovpage space
Howard Chu [Wed, 18 Jun 2014 09:53:17 +0000 (02:53 -0700)]
Howard Chu [Fri, 13 Jun 2014 17:46:27 +0000 (10:46 -0700)]
Bump version to 0.9.12
Howard Chu [Wed, 11 Jun 2014 09:27:30 +0000 (02:27 -0700)]
ITS#7875 fix #7681 regression
Due to commit
18a07eb7c2dc33372455a6040984cd6b699b41a5
Alexey Naumov [Sun, 25 May 2014 11:10:21 +0000 (17:10 +0600)]
Fix possible crash in DLL_THREAD_DETACH (explodes in .Net Framework)
Hallvard Furuseth [Fri, 30 May 2014 08:50:04 +0000 (10:50 +0200)]
Comment ~MDB_APPEND, from earlier commit message.
Hallvard Furuseth [Fri, 30 May 2014 08:47:56 +0000 (10:47 +0200)]
Factor out mdb_cmp_clong()
Hallvard Furuseth [Fri, 30 May 2014 08:47:56 +0000 (10:47 +0200)]
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.
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
Factor out MDB_TXN_ERROR
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
Simplify MDB_MULTIPLE
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
ITS#7834 Fix MDB_MULTIPLE writing multiple keys.
Update the state before looping, so the key is not duplicated.
Broke in
4c8f57615c5ca7b014c038e59c1045182e74f5ad (mostly).
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
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
13d6d59c512065db3741c20c65b4d9928b986968.
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
ITS#7771 mdb_cursor_put doc: Cursor moves on error
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
Document DBI issues, extend MDB_BAD_VALSIZE.
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
More ITS#7793 Check key->mv_size with MDB_CURRENT.
Since non-NULL key must be provided now.
Howard Chu [Tue, 20 May 2014 15:47:28 +0000 (08:47 -0700)]
Fix mdb_rebalance collapsing root
Shift the rest of the cursor stack as needed
Howard Chu [Thu, 3 Apr 2014 19:51:41 +0000 (12:51 -0700)]
ITS#7829 more for mdb_rebalance
Make sure to propagate rebalance results all the
way back to original caller's cursor.
Hallvard Furuseth [Wed, 2 Apr 2014 05:02:14 +0000 (07:02 +0200)]
ITS#7829 Simplify last commit
Howard Chu [Mon, 31 Mar 2014 20:42:19 +0000 (13:42 -0700)]
ITS#7829 more for prev commit
Howard Chu [Fri, 28 Mar 2014 20:51:59 +0000 (13:51 -0700)]
ITS#7829 fix rebalance
Fixup cursor state after node_move/page_merge
Howard Chu [Wed, 26 Mar 2014 15:59:43 +0000 (08:59 -0700)]
ITS#7793/7828
Fix md_entries count, test for insert on md_entries increment