platform/upstream/lmdb.git
10 years agoITS#7789 more
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.

10 years agoRevert "ITS#7789 update RESIZED errmsg text"
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.

10 years agoITS#7825 more
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.

10 years agoUpdates #7789, #7825
Howard Chu [Wed, 9 Jul 2014 04:40:11 +0000 (21:40 -0700)]
Updates #7789, #7825

10 years agoITS#7825 more
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

10 years agoITS#7825 tweak prev commit
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

10 years agoITS#7825 add MDB_BAD_DBI error code
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.

10 years agoITS#7789 update RESIZED errmsg text
Howard Chu [Wed, 9 Jul 2014 03:05:31 +0000 (20:05 -0700)]
ITS#7789 update RESIZED errmsg text

10 years agoITS#7789 persist mapsize changes
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.

10 years agoUpdate LMDB version date/info
Howard Chu [Tue, 8 Jul 2014 23:27:26 +0000 (16:27 -0700)]
Update LMDB version date/info

10 years agoITS#7892 Fix MacOSX section name
Howard Chu [Tue, 8 Jul 2014 23:27:03 +0000 (16:27 -0700)]
ITS#7892 Fix MacOSX section name

10 years agoITS#7713 cleanups
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.

10 years agoFixes for loose pages
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.

10 years agoRe-fix cursor EOF
Howard Chu [Tue, 8 Jul 2014 18:54:24 +0000 (11:54 -0700)]
Re-fix cursor EOF

Fix in 534dcc721287cfe1051191a5cd7d3df6cf1dc409 was in wrong place

10 years agoITS#7713 handle 65536 byte page size
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

10 years agoSet xcursor EOF after deleting last entry
Howard Chu [Tue, 8 Jul 2014 00:13:51 +0000 (17:13 -0700)]
Set xcursor EOF after deleting last entry

10 years agoCompacting copy doesn't need to snapshot metas
Howard Chu [Mon, 7 Jul 2014 00:47:25 +0000 (17:47 -0700)]
Compacting copy doesn't need to snapshot metas

10 years agoWindows fixes
Howard Chu [Sun, 6 Jul 2014 14:49:38 +0000 (07:49 -0700)]
Windows fixes

10 years agoPlay games with object file layout
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.

10 years agoRationalize mdb_env_copy2 API
Howard Chu [Sat, 5 Jul 2014 14:49:10 +0000 (07:49 -0700)]
Rationalize mdb_env_copy2 API

10 years agoMore tweaks to copyfd2
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.

10 years agoMore copyfd2 tweaks
Howard Chu [Thu, 3 Jul 2014 17:49:05 +0000 (10:49 -0700)]
More copyfd2 tweaks

10 years agoFix envinfo to return fixed map address
Howard Chu [Thu, 3 Jul 2014 15:31:57 +0000 (08:31 -0700)]
Fix envinfo to return fixed map address

10 years agoWindows compat
Howard Chu [Thu, 3 Jul 2014 14:49:22 +0000 (07:49 -0700)]
Windows compat

10 years agoFix subDB/ovpage copying
Howard Chu [Wed, 2 Jul 2014 18:44:06 +0000 (11:44 -0700)]
Fix subDB/ovpage copying

10 years agoLarger WBUF still better on large DB
Howard Chu [Wed, 2 Jul 2014 15:06:19 +0000 (08:06 -0700)]
Larger WBUF still better on large DB

10 years agoDon't check LEAF2 pages for subnodes
Howard Chu [Wed, 2 Jul 2014 14:45:12 +0000 (07:45 -0700)]
Don't check LEAF2 pages for subnodes

10 years agoAdd mdb_env_copy2()
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.

10 years agodump/load need mapsize etc.
Howard Chu [Wed, 2 Jul 2014 01:53:47 +0000 (18:53 -0700)]
dump/load need mapsize etc.

10 years agoAll diagnostics should go to stderr
Howard Chu [Tue, 1 Jul 2014 12:11:43 +0000 (05:11 -0700)]
All diagnostics should go to stderr

10 years agoMore gcov setup tweaks
Howard Chu [Mon, 30 Jun 2014 11:42:41 +0000 (04:42 -0700)]
More gcov setup tweaks

10 years agoITS#7886 fix mdb_copy write size
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

10 years agoFix mdb_page_loose() vs. mdb_page_flush().
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.

10 years agoTrap signals
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.

10 years agoSetup for gcov/coverage testing
Howard Chu [Thu, 26 Jun 2014 12:19:47 +0000 (05:19 -0700)]
Setup for gcov/coverage testing

10 years agoMore for mdb_page_loose
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.

10 years agoMore MDB -> LMDB renames
Howard Chu [Tue, 24 Jun 2014 11:42:44 +0000 (04:42 -0700)]
More MDB -> LMDB renames

10 years agoDoc updates
Howard Chu [Tue, 24 Jun 2014 11:16:19 +0000 (04:16 -0700)]
Doc updates

Rename MDB -> LMDB
Integrate tool manpages

10 years agoITS#7879 Windows build compatibility
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.

10 years agoFlesh out mdb_cmp_cint for BigEndians
Howard Chu [Mon, 23 Jun 2014 14:36:38 +0000 (07:36 -0700)]
Flesh out mdb_cmp_cint for BigEndians

10 years agoMore for page_loosen
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...

10 years agoMore cleanup for page_merge, page_loosen
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.

10 years agoSilence ptr arithmetic warnings
Howard Chu [Sat, 21 Jun 2014 15:34:45 +0000 (08:34 -0700)]
Silence ptr arithmetic warnings

10 years agoHandle loose pages
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.

10 years agoFix mdb_page_merge
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.

10 years agoFix mdb_node_move
Howard Chu [Sat, 21 Jun 2014 00:56:04 +0000 (17:56 -0700)]
Fix mdb_node_move

Was leaving stale info in dst cursor

10 years agoFix lineno count
Howard Chu [Fri, 20 Jun 2014 16:03:41 +0000 (09:03 -0700)]
Fix lineno count

10 years agoFix multiple subDBs
Howard Chu [Fri, 20 Jun 2014 16:00:33 +0000 (09:00 -0700)]
Fix multiple subDBs

10 years agoFix unhex
Howard Chu [Fri, 20 Jun 2014 15:56:52 +0000 (08:56 -0700)]
Fix unhex

10 years agoAdd mdb_load
Howard Chu [Fri, 20 Jun 2014 15:49:59 +0000 (08:49 -0700)]
Add mdb_load

10 years agoAdd mdb_dump, update copyrights
Howard Chu [Fri, 20 Jun 2014 12:33:31 +0000 (05:33 -0700)]
Add mdb_dump, update copyrights

10 years agoBump to 0.9.13
Howard Chu [Wed, 18 Jun 2014 21:25:46 +0000 (14:25 -0700)]
Bump to 0.9.13

10 years agoBump to 0.9.13
Howard Chu [Wed, 18 Jun 2014 21:07:15 +0000 (14:07 -0700)]
Bump to 0.9.13

10 years agoITS#7793 Re-fix MDB_CURRENT doc: Match current item
Hallvard Furuseth [Wed, 18 Jun 2014 21:01:14 +0000 (23:01 +0200)]
ITS#7793 Re-fix MDB_CURRENT doc: Match current item

10 years agoFix MDB_GET_MULTIPLE/MDB_NEXT_MULTIPLE doc.
Hallvard Furuseth [Wed, 18 Jun 2014 21:01:14 +0000 (23:01 +0200)]
Fix MDB_GET_MULTIPLE/MDB_NEXT_MULTIPLE doc.

10 years agoTweak ovpage search
Howard Chu [Wed, 18 Jun 2014 20:37:04 +0000 (13:37 -0700)]
Tweak ovpage search

Use num*20, chosen from empirical testing

10 years agoFix some overwrite quirks
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.

10 years agoTweak prev patch for ovpage search
Howard Chu [Wed, 18 Jun 2014 16:07:39 +0000 (09:07 -0700)]
Tweak prev patch for ovpage search

10 years agoShorten search for ovpage space
Howard Chu [Wed, 18 Jun 2014 10:02:08 +0000 (03:02 -0700)]
Shorten search for ovpage space

10 years agoRemove bogus file
Howard Chu [Wed, 18 Jun 2014 09:53:17 +0000 (02:53 -0700)]
Remove bogus file

added by mistake in 17c09fa476a7dbd49aca5e4caf0384cb1c3d244a

10 years agoBump version to 0.9.12
Howard Chu [Fri, 13 Jun 2014 17:46:27 +0000 (10:46 -0700)]
Bump version to 0.9.12

10 years agoITS#7875 fix #7681 regression
Howard Chu [Wed, 11 Jun 2014 09:27:30 +0000 (02:27 -0700)]
ITS#7875 fix #7681 regression

Due to commit 18a07eb7c2dc33372455a6040984cd6b699b41a5

10 years agoFix possible crash in DLL_THREAD_DETACH (explodes in .Net Framework)
Alexey Naumov [Sun, 25 May 2014 11:10:21 +0000 (17:10 +0600)]
Fix possible crash in DLL_THREAD_DETACH (explodes in .Net Framework)

10 years agoComment ~MDB_APPEND, from earlier commit message.
Hallvard Furuseth [Fri, 30 May 2014 08:50:04 +0000 (10:50 +0200)]
Comment ~MDB_APPEND, from earlier commit message.

10 years agoFactor out mdb_cmp_clong()
Hallvard Furuseth [Fri, 30 May 2014 08:47:56 +0000 (10:47 +0200)]
Factor out mdb_cmp_clong()

10 years agoMore for big MDB_MAXKEYSIZE with MDB_DUPSORT.
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.

10 years agoFactor out MDB_TXN_ERROR
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
Factor out MDB_TXN_ERROR

10 years agoSimplify MDB_MULTIPLE
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
Simplify MDB_MULTIPLE

10 years agoITS#7834 Fix MDB_MULTIPLE writing multiple keys.
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).

10 years agoITS#7861 Re-fix MDB_db.md_entries.
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.

10 years agoITS#7771 mdb_cursor_put doc: Cursor moves on error
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
ITS#7771 mdb_cursor_put doc: Cursor moves on error

10 years agoDocument DBI issues, extend MDB_BAD_VALSIZE.
Hallvard Furuseth [Fri, 30 May 2014 07:06:08 +0000 (09:06 +0200)]
Document DBI issues, extend MDB_BAD_VALSIZE.

10 years agoMore ITS#7793 Check key->mv_size with MDB_CURRENT.
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.

10 years agoFix mdb_rebalance collapsing root
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

10 years agoITS#7829 more for mdb_rebalance
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.

10 years agoITS#7829 Simplify last commit
Hallvard Furuseth [Wed, 2 Apr 2014 05:02:14 +0000 (07:02 +0200)]
ITS#7829 Simplify last commit

10 years agoITS#7829 more for prev commit
Howard Chu [Mon, 31 Mar 2014 20:42:19 +0000 (13:42 -0700)]
ITS#7829 more for prev commit

10 years agoITS#7829 fix rebalance
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

10 years agoITS#7793/7828
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

10 years agoMore for ITS#7793/7828
Howard Chu [Wed, 26 Mar 2014 09:41:26 +0000 (02:41 -0700)]
More for ITS#7793/7828

Note MDB_CURRENT/MDB_DUPSORT requirement

10 years agoITS#7828, #7793
Howard Chu [Wed, 26 Mar 2014 09:33:51 +0000 (02:33 -0700)]
ITS#7828, #7793

Clarify MDB_CURRENT key usage, simplify freelist_save

10 years agoRevert "ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT."
Howard Chu [Wed, 26 Mar 2014 09:18:20 +0000 (02:18 -0700)]
Revert "ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT."

This reverts commit 4e954f8ae83d5b39736bab2da0eaf2bdf5ee3961.
Caused ITS#7828.

10 years agoRevert "Update MDB_PANIC description" (thinko).
Hallvard Furuseth [Sun, 23 Mar 2014 12:06:03 +0000 (13:06 +0100)]
Revert "Update MDB_PANIC description" (thinko).

This reverts commit 6bd34d0534f1c8bfd73deaf70febd3b58a2f9d5a.

10 years agoUpdate MDB_PANIC description
Hallvard Furuseth [Sat, 22 Mar 2014 21:27:10 +0000 (22:27 +0100)]
Update MDB_PANIC description

10 years agoTweak mdb_mid2l_insert() call from ITS#7775.
Hallvard Furuseth [Sat, 22 Mar 2014 21:27:10 +0000 (22:27 +0100)]
Tweak mdb_mid2l_insert() call from ITS#7775.

It does not return MDB error codes.

10 years agomtest: Accept an MDB_NOTFOUND case
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:43 +0000 (12:42 +0100)]
mtest: Accept an MDB_NOTFOUND case

10 years agoHandle more errors. Invalidate txn if needed.
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:43 +0000 (12:42 +0100)]
Handle more errors. Invalidate txn if needed.

10 years agoDon't use non-existent node info in branch/leaf2
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:42 +0000 (12:42 +0100)]
Don't use non-existent node info in branch/leaf2

10 years agoMove code out of mdb_cursor_del0() and mdb_del().
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:42 +0000 (12:42 +0100)]
Move code out of mdb_cursor_del0() and mdb_del().

Prepares for the next commits.

10 years agoMore checks for closed DBIs and invalidated txns.
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:42 +0000 (12:42 +0100)]
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.

10 years agomdb_page_list(): Support & display all page types
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:42 +0000 (12:42 +0100)]
mdb_page_list(): Support & display all page types

10 years agomdb_txn_renew0(): Fix un-mutexed me_flags update.
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:42 +0000 (12:42 +0100)]
mdb_txn_renew0(): Fix un-mutexed me_flags update.

Replace env flag MDB_LIVE_READER with field me_live_reader.

10 years agoDoxygen fixes
Hallvard Furuseth [Sun, 16 Mar 2014 11:42:42 +0000 (12:42 +0100)]
Doxygen fixes

10 years agoRename samples
Howard Chu [Sun, 16 Mar 2014 10:55:03 +0000 (03:55 -0700)]
Rename samples

They're meant to be read and studied, not run.

10 years agoITS#7815 more for page_split
Howard Chu [Thu, 6 Mar 2014 04:40:12 +0000 (20:40 -0800)]
ITS#7815 more for page_split

This case didn't come up in testing. Needs finer grained test.

10 years agoITS#7815 fix mdb_page_split
Howard Chu [Thu, 6 Mar 2014 04:04:42 +0000 (20:04 -0800)]
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.

10 years agomtest*.c, sample-*.c: Add/note error checks.
Hallvard Furuseth [Wed, 19 Feb 2014 20:25:40 +0000 (21:25 +0100)]
mtest*.c, sample-*.c: Add/note error checks.

10 years agomtest[46]: Use different DBs when different flags.
Hallvard Furuseth [Wed, 19 Feb 2014 20:25:40 +0000 (21:25 +0100)]
mtest[46]: Use different DBs when different flags.

10 years agoITS#7793 mdb_cursor_put(): Fix MDB_CURRENT.
Hallvard Furuseth [Tue, 28 Jan 2014 13:27:27 +0000 (14:27 +0100)]
ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT.

Ignore key, broken by 5bda3565a9bfaa6cd54053faeafcc06da15bc00c
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.

10 years agoBump version to 0.9.11
Howard Chu [Wed, 15 Jan 2014 17:09:48 +0000 (09:09 -0800)]
Bump version to 0.9.11