Commit Graph

1071 Commits

Author SHA1 Message Date
Hallvard Furuseth
490243424c Simpler mdb_node_add() 2015-10-25 10:55:22 +01:00
Hallvard Furuseth
6318038138 More ESECT declarations 2015-10-25 10:55:22 +01:00
Hallvard Furuseth
110fba2ef1 Add DB_USRVALID, to avoid 'dbi == FREE_DBI' tests 2015-10-25 10:55:22 +01:00
Hallvard Furuseth
b6f0179683 Simpler flag/DBI checks and MDB_DEBUG 2015-10-25 10:55:22 +01:00
Hallvard Furuseth
06df0a4655 Simpler mdb_drop().
MDB_DBI_CHANGED(,MAIN_DBI) is never true.
2015-10-25 10:55:22 +01:00
Hallvard Furuseth
e5f41ce56b Simpler mdb_node_shrink() 2015-10-25 10:55:22 +01:00
Hallvard Furuseth
9d6c973f76 Simpler mdb_txn_commit().
mt_env is always set.
Commit(mt_child) resets mt_child, so parent need not.
2015-10-25 10:55:22 +01:00
Hallvard Furuseth
ee06adb311 mdb_txn_begin() cleanup 2015-10-25 10:55:22 +01:00
Hallvard Furuseth
cc2a50aca2 mdb_drop0(): Omit scanning DUPSORT sub-DB leaves 2015-10-25 10:55:21 +01:00
Hallvard Furuseth
70788bfe45 Use mdb_cmp_long() for FREE_DBI 2015-10-25 10:55:21 +01:00
Hallvard Furuseth
a36f7a7fc2 mdb_env_get_flags(): Hide internal flags 2015-10-25 10:55:21 +01:00
Hallvard Furuseth
600e2b6ce0 Support robust mutexes/locks. Add mdb_mutex_t etc. 2015-10-25 10:55:21 +01:00
Hallvard Furuseth
3a71450436 Add MDB_USE_POSIX_MUTEX.
So far just to help aligning mdb.master and mdb.RE.
We'll make it an option later.
2015-10-25 10:55:21 +01:00
Hallvard Furuseth
f25c4f0db9 Whitespace (align with mdb.master) 2015-10-25 10:55:21 +01:00
leo@yuriev.ru
086bc04cd2 ITS#7969 Use __sync_synchronize()
The rest of 9a80a8a8e8
plus commit a937740aa0.
2015-10-25 10:55:21 +01:00
Hallvard Furuseth
3f6fa7aece Set/clear mp_pad, md_pad (MDB_DUPFIXED data size).
mdb_xcursor_init1(): md_pad is only used when MDB_DUPFIXED.
mdb_page_split():    Copy mp_pad too. Used by mdb_page_list().
2015-10-25 10:55:21 +01:00
Hallvard Furuseth
c616689d9a Cleanup MDB_env.me_txn0.
More fallout from 4d02c741b1.
2015-10-25 10:55:21 +01:00
Hallvard Furuseth
c0170bc0ec Copy some env flags to txn. Factor out flags.
Taken from mdb_txn_begin(,,MDB_NOMETASYNC, MDB_NOSYNC,,)
without adding those two flags yet, to align with mdb.master:
Part of 54516639ac (Renumber...)
+ 8adee9464f (Fix per-txn...).
2015-10-25 10:55:21 +01:00
leo@yuriev.ru
c65ca298b9 ITS#7971 mdb_txn_renew0(): Fix new readers slots.
commit 9a8eb95674 (mdb_txn_renew0)
plus b2ab9910dd (reader allocation)
from mdb.master.
2015-10-25 10:55:21 +01:00
David Barbour
076b773d6b ITS#7994 Access to current transaction ID.
commit b660491d3f (mdb_txn_id())
plus c36c167cc4 (fix prev commit)
from mdb.master.
2015-10-25 10:55:21 +01:00
Hallvard Furuseth
f3d3f60e3d Try to avoid an invalid datafile after failed init 2015-10-25 10:55:21 +01:00
Hallvard Furuseth
aa10c98f3f For ITS#7789: Ensure mapsize >= pages in use.
Check new mapsizes against mm_last_pg.  Move
mdb_env_init_meta0() so it can set mm_last_pg earlier.
2015-10-25 10:55:21 +01:00
Howard Chu
fc3514152f ITS#8263, 8264, 7771, 8270 2015-10-25 08:13:25 +00:00
Ignacio Casal Quinteiro
52446f93e7 ITS#8270 win32: fix conversion error with MSVC 2015-10-25 08:10:34 +00:00
Howard Chu
24add6589b ITS#7771 fix cursor tracking on fake pages
node_del shifts nodes around, cursors pointing at fake pages
need to have their mc_pg[0] corrected.
2015-10-25 08:10:13 +00:00
Hallvard Furuseth
448b4c815a ITS#8263 streamline prev patch 2015-10-25 08:09:16 +00:00
Howard Chu
7e3c532823 ITS#8263 fix cursor tracking in cursor_put 2015-10-25 08:09:06 +00:00
Howard Chu
9ed1e57440 ITS#8264 fix cursor_del cursor tracking
Some destination fixups need to happen immediately after nodes
are moved, before rebalancing
2015-10-25 08:08:53 +00:00
Howard Chu
6f53771687 ITS#8258 2015-10-04 03:02:04 +01:00
Howard Chu
8bdadf68c5 ITS#8258 fix rebalance/split
The tree height can also increase during rebalance, not just shrink.
This can happen if update_key needs to split a parent branch page.
2015-10-04 02:13:07 +01:00
Howard Chu
eccea851ff ITS#8259 fix usage ordering 2015-09-30 18:11:49 +01:00
Howard Chu
be1795a616 ITS#8221 fix typos 2015-09-29 17:32:25 +01:00
Howard Chu
bc7d3d9124 ITS#8221, #8256 2015-09-27 22:37:28 +01:00
Howard Chu
4b01cb3727 ITS#8221 don't merge branch pages needlessly 2015-09-27 22:35:54 +01:00
Luke Yeager
ddb7478e06 ITS#8256 Create install directories if needed 2015-09-27 22:35:24 +01:00
Howard Chu
faeaa3ae8f ITS#7377, 8237 2015-09-12 23:08:14 +01:00
Howard Chu
d84fae3fe3 ITS#8237 fix ITS#7589 regression 2015-09-12 23:07:16 +01:00
Hallvard Furuseth
7f151b1137 ITS#7377 mdb_env_init_meta(): Catch calloc error 2015-09-12 23:07:07 +01:00
Howard Chu
9a8d38a9de Doc tweak - MDB_RESERVE / DUPSORT incompat
For those people who insist on ignoring the obvious.
2015-08-22 14:01:07 +01:00
Howard Chu
d7e4e206ad Return to release engineering 2015-08-21 21:42:25 +01:00
Howard Chu
e55956a591 Another MDB_APPEND doc tweak
Missed this in 7ce29b9edb
2015-08-21 21:41:36 +01:00
Howard Chu
5d67c6aed1 Release 0.9.16 2015-08-14 01:00:38 +01:00
Howard Chu
d139771b43 ITS#8192 fix reference to EINTR on WIN32 from ITS#8106 2015-07-30 00:51:04 +01:00
Howard Chu
c4ae054bce Updated for ITS#8181, #8190, #8200 2015-07-28 15:20:43 +01:00
Hallvard Furuseth
4b58502c77 ITS#8200 Fix mdb_midl_shrink() usage, return void 2015-07-28 15:13:22 +01:00
Hallvard Furuseth
1fd0341f76 ITS#8181 Verify that records are/aren't DBs.
Except we don't catch the user passing F_SUBDATA to
mdb_cursor_<put/del>, like an internal LMDB call.
2015-07-28 15:13:10 +01:00
Howard Chu
7513bd4618 ITS#8190 fix cursor EOF bug 2015-07-28 15:12:58 +01:00
Howard Chu
1b6085cb9b Return to Release Engineering 2015-07-02 18:04:25 +01:00
Howard Chu
56e4e20ebc Release 0.9.15 2015-06-19 14:10:32 +01:00
Hallvard Furuseth
416ecc7827 Update for mdb_env_open 2015-06-02 21:07:33 +02:00
Hallvard Furuseth
6794d898f8 Clarify mdb_env_open() doc of 'mode' param 2015-06-02 21:04:52 +02:00
Hallvard Furuseth
249d2b84dc more CHANGES 2015-05-29 03:08:32 +02:00
Hallvard Furuseth
2a1dd5ae1c ITS#8156 2015-05-28 21:13:24 +02:00
Hallvard Furuseth
a0b96697c5 ITS#8156 Fix MDB_MAXKEYSIZE doc 2015-05-28 20:51:39 +02:00
Hallvard Furuseth
277e536ffa ITS#8157 2015-05-28 00:12:53 +02:00
Hallvard Furuseth
6bfadb9178 ITS#8157 mdb_txn_renew0(): init after error checks 2015-05-28 00:12:18 +02:00
Hallvard Furuseth
91743d66e6 mtest*.c: Fix MDB_NOOVERWRITE, plug cursor leak 2015-05-28 00:10:29 +02:00
Hallvard Furuseth
822b2d502f ITS#8117 Fix MDB_INTEGERDUP keysize doc + md_dcmp 2015-05-28 00:08:51 +02:00
Howard Chu
6bd97d4286 ITS#8117 better fix
Don't change mc_dbx because we would need to undo the change if
the txn aborts. Make the fix (for get) match existing code for put.
2015-05-03 07:52:47 +01:00
Howard Chu
7127753244 Revert "ITS#8117 cleanup prev commit"
This reverts commit 47c4e747a0.

Revert "ITS#8117 fix INTEGERDUP compare"

This reverts commit ba45e0c05a.
2015-05-03 07:43:50 +01:00
Howard Chu
0fd2214a8b ITS#8117 2015-04-29 17:30:02 +01:00
Howard Chu
47c4e747a0 ITS#8117 cleanup prev commit 2015-04-29 17:30:02 +01:00
Howard Chu
ba45e0c05a ITS#8117 fix INTEGERDUP compare 2015-04-29 17:12:40 +01:00
Howard Chu
5cdde0c5b7 ITS#8109 2015-04-23 05:52:13 +01:00
Howard Chu
b7511480c5 ITS#8109 fix mdb_cursor_del0 on empty DB 2015-04-23 05:50:48 +01:00
Howard Chu
8cf73291fb ITS#8106 2015-04-23 03:27:33 +01:00
Howard Chu
32d46d4ea2 ITS#8106 retry writes on EINTR 2015-04-23 03:26:03 +01:00
Hallvard Furuseth
5c89827817 Cleanup mtest* and sample-*.
Fix mdb_txn_begin(&read-only txn) calls. Test mdb_env_set_maxreaders().
Rename DBI open/close functions. Move mdb_dbi_close() out of txn.
2015-04-19 03:07:53 +02:00
Hallvard Furuseth
1693012d57 Reformat mdb_dbi_open() doc for clarity 2015-04-19 03:07:53 +02:00
Hallvard Furuseth
f46b642b06 mdb_txn_renew(): Clear error from previous txn 2015-04-19 03:05:47 +02:00
Howard Chu
dce0911b17 ITS#8062 fix uninit'd cursor index 2015-04-19 03:05:47 +02:00
Hallvard Furuseth
2072ae6a3b Fix EACCES description 2015-04-19 03:05:47 +02:00
Howard Chu
b0032feb85 ITS#8062 also handle subcursors 2015-04-16 00:19:40 +01:00
Howard Chu
ddc4aa1aa3 ITS#8062 2015-04-15 23:48:09 +01:00
Howard Chu
97c7b6151e ITS#8062 fix rebalance
(Probably fixes the ITS, definitely fixes a bug) when collapsing
the root page, fixups of other cursors was incomplete.
2015-04-15 23:30:52 +01:00
Quanah Gibson-Mount
dd58f3dde4 ITS#8066 2015-02-27 17:15:23 -06:00
Howard Chu
82b6a04bb7 ITS#8066 fix mdb_load with large values 2015-02-27 17:14:52 -06:00
Quanah Gibson-Mount
b7d1afad42 Happy New Year 2015-02-12 11:28:55 -06:00
Quanah Gibson-Mount
21a374f2d4 Happy New Year 2015-02-12 11:28:21 -06:00
Hallvard Furuseth
6586299f55 Restrictive mdb_copy file mode.
Copied from 58ddb5527b.
2015-01-15 07:19:30 +01:00
leo@yuriev.ru
8230b1b630 ITS#7970 LMDB: Critical Heisenbug
Inconsistent reading & SIGSEGV due to the race condition.
2015-01-14 19:24:18 +01:00
leo@yuriev.ru
1e5d79831c ITS#7969 LMDB: volatile.
Globally shared fields of meta-data were not 'volatile'.
Code from 9a80a8a8e8,
except the unportable __synchronize().
2015-01-14 19:24:18 +01:00
Howard Chu
ea80418cfc Fix potential null deref (coverity) 2015-01-13 19:22:42 +00:00
Hallvard Furuseth
0599dee9d4 ITS#8021 doc: Don't mix MDB_WRITEMAP + non-WRITEMAP 2015-01-12 12:20:31 +01:00
Howard Chu
bf3961e3c7 More cleanup for fdatasync hack 2015-01-12 10:41:32 +00:00
Howard Chu
e85c944a3a Tweak conditionals for fdatasync hack 2015-01-11 11:41:08 +00:00
Howard Chu
0b9f42d1f4 ITS#8021 env_sync is invalid in RDONLY env 2015-01-09 11:25:07 +00:00
Howard Chu
4500d49f36 fdatasync hack, again
Check for ext3/ext4 fs, then check kernel version.
2015-01-08 13:03:55 +00:00
Howard Chu
888a76f651 Revert "Fix prev commit for env_sync0"
This reverts commit e95c9231fc.

Revert "Hack for potential ext3/ext4 corruption issue"

This reverts commit 91155b9d67.
2015-01-08 12:57:08 +00:00
Howard Chu
fe8b13f225 Tweak fdatasync hack description 2014-12-22 18:07:08 +00:00
Howard Chu
e95c9231fc Fix prev commit for env_sync0 2014-12-21 00:14:16 +00:00
Howard Chu
02495837dc Update for fsync hack 2014-12-18 04:46:43 +00:00
Howard Chu
91155b9d67 Hack for potential ext3/ext4 corruption issue
Use regular fsync() if we think this commit grew the DB file.
2014-12-18 04:45:02 +00:00
Howard Chu
e6ac9c2314 Update for 0.9.15 2014-12-17 15:29:48 +00:00
Howard Chu
a0accc86f2 Fix MDB_APPEND doc
We actually compare the new key against the last key, to prevent
corruption.
2014-12-15 20:45:02 +00:00
Hallvard Furuseth
f1417e2634 make clean: remove *.lo 2014-12-15 20:44:42 +00:00
Howard Chu
dcccd8a89a Clarify mdb_dbi_open doc
The concurrency restriction is on threads within a single process.
Multiple processes can use mdb_dbi_open without affecting each other.
2014-12-15 20:44:30 +00:00
Leo Yuriev
196e07ca58 ITS#7987 fix excessive space for single write txn 2014-12-05 21:07:55 +00:00
Hallvard Furuseth
f284c3232d Fix WIN32 -> _WIN32 2014-12-05 18:43:07 +01:00
Hallvard Furuseth
8704eff591 mdb_strerror: Silence warning @ Windows 2014-12-01 20:17:27 +01:00
Hallvard Furuseth
5bf495abdc Fix comments 2014-12-01 20:17:27 +01:00
Hallvard Furuseth
3aa7537adc Simplify recent changes a bit. 2014-12-01 20:17:27 +01:00
Hallvard Furuseth
17bf75b12e ITS#7961,#7987 Re-fix txn init.
More fallout from 4d02c741b1:
Don't modify another thread's write txn. Reinit me_txn0 fully.
2014-12-01 20:17:13 +01:00
Howard Chu
3ce002fd13 ITS#7959 fix prev commit
fstat returns -1, not an errno. Move code into its own function
for reuse.
2014-12-01 20:15:36 +01:00
Howard Chu
ce40f4f314 ITS#7961 fix txn init
More fallout from 4d02c741b1
2014-12-01 20:15:36 +01:00
Jean-Christophe DUBOIS
042e76685e ITS#7959 Check fstat return value
Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
2014-12-01 20:15:36 +01:00
Leo Yuriev
c473091f8f ITS#7841 trivial cleanup
TRIVIA - lmdb: clean testdb-dir while "make test".
2014-12-01 20:15:36 +01:00
Howard Chu
98ed192949 ITS#7956 fix compact of empty env 2014-12-01 20:15:36 +01:00
Howard Chu
af99820ac8 ITS#7955, #7671 fix MDB_PREV_DUP 2014-12-01 20:15:36 +01:00
Howard Chu
0482f1898d ITS#7953 .gitignore *.lo 2014-12-01 20:15:35 +01:00
Howard Chu
9227f66673 ITS#7952 .gitignore mdb_dump/load 2014-12-01 20:15:35 +01:00
Howard Chu
20ad21dcc4 Don't use -fPIC for static lib 2014-12-01 20:15:35 +01:00
Howard Chu
df9da7c7be Must do dlist_free before releasing Wmutex 2014-12-01 20:15:35 +01:00
Howard Chu
9eede0b103 Free write mutex earlier in txn_reset0 2014-12-01 20:15:30 +01:00
Howard Chu
a7639a66a4 Android also only has memalign 2014-09-25 19:25:56 +01:00
Howard Chu
2f587ae081 new date 2014-09-20 07:24:32 +01:00
Howard Chu
62e4eeb7f7 ITS#7943 reinit txn flags
When reusing the main write txn
2014-09-19 01:45:43 +01:00
Howard Chu
891e662754 Plug leak in 4d02c741b1
Free writer txn on env_close
2014-09-18 01:22:02 +01:00
Howard Chu
674f52fdb4 Silence some clang warnings 2014-09-16 21:54:07 +01:00
Howard Chu
b9495245b4 Release 0.9.14 2014-09-15 19:48:32 +01:00
Quanah Gibson-Mount
5ee99f1125 Change retry to num times 60. Testing shows that on a known dataset, this has the same growth behavior as 2.4.39, while num times 20 resulted in significant growth. 2014-09-13 16:21:17 -05:00
Howard Chu
3646ba966c More for me_pgoldest
Leave it in main env struct, it doesn't need to be rolled back
with nested txns.
2014-09-09 19:44:23 +01:00
Howard Chu
29fd241fad Remember oldest reader txnid
Don't walk the readers table unless we really need to.
2014-09-09 19:40:05 +01:00
Howard Chu
4d02c741b1 Use a single write txn 2014-09-04 10:40:11 +01:00
Howard Chu
a054a194e8 ITS#7913 cleanup
we already checked for data == NULL, drop unnecessary if
2014-08-24 21:18:03 +01:00
Howard Chu
8fbbc71506 More for MIPS
Move CACHEFLUSH, avoid unnecessary if()
2014-08-21 17:40:20 -07:00
Howard Chu
4008e5e583 Partially revert ada2630699
Of course, MacOSX only has posix_memalign, and only in recent versions.
(Older versions could use valloc instead. That precludes ever changing
the LMDB pagesize to be different from the OS pagesize.) Not all that
crucial since it only affects mdb_env_copyfd1.
2014-08-17 20:44:53 -07:00
Hallvard Furuseth
cf4fe3b1fb Microoptimize loose pages 2014-08-17 01:50:32 +02:00
Hallvard Furuseth
1e7eeed28d Fix loose pages in mdb_freelist_save().
Leaving them in dirty_list caused breakage.  Instead merge them
into me_pghead at the end, when no more pages will be allocated.
2014-08-17 00:29:12 +02:00
Hallvard Furuseth
983f896aa7 Split out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN 2014-08-16 11:34:44 +02:00
Howard Chu
992a96e171 ITS#7917 2014-08-11 11:01:20 -07:00
Howard Chu
322cd26a7b ITS#7917 fix mdb_dbi_open
Don't let dummy go out of scope
2014-08-11 11:00:11 -07:00
Howard Chu
ada2630699 Just use memalign, not posix_memalign
Everything has it. Solaris doesn't have posix_memalign.
2014-08-07 11:06:53 -07:00
Howard Chu
899b23f89d More for MIPS
Do a cacheflush after writing data pages, separate from meta's cacheflush
2014-08-04 11:40:24 -07:00
Howard Chu
ae0c9f484d ITS#7793 more for branch key update 2014-08-04 09:26:35 -07:00
Howard Chu
9cf1749f73 ITS#7793 doc update, again 2014-08-04 05:13:29 -07:00
Howard Chu
f21f15e5a0 ITS#7793 update branch key if needed 2014-08-04 04:57:53 -07:00
Howard Chu
9febe03eb5 More for MIPS
Paranoia for 3630066843 do the
cacheflush before setting mti_txnid.
2014-08-02 10:33:35 -07:00
Howard Chu
8498c6cba2 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.
2014-07-31 09:59:52 -07:00
Howard Chu
3630066843 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.
2014-07-26 18:16:02 -07:00
Howard Chu
d098184f61 Update date 2014-07-24 04:15:45 -07:00
Howard Chu
082bac1492 more for mdb_cursor_count
return MDB_NOTFOUND if the cursor is empty
2014-07-24 04:13:55 -07:00
Hallvard Furuseth
6cb1166635 Fix mdb_copy & co when MDB pagesize < OS pagesize 2014-07-24 04:04:24 -07:00
Howard Chu
1b08d8e503 ITS#7789 doc updates 2014-07-23 17:31:34 -07:00
Hallvard Furuseth
81b502e17e ITS#7789 Fix mdb_env_write_meta().
Always write mapsize = max(other metapage:mapsize, env:mapsize).
2014-07-23 17:25:42 -07:00
Howard Chu
7ef970436d 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 02285aca58.
This reverts commit 38e71c68de.
This reverts commit a5e4eecb1e.
This reverts commit d8e18551c3.
This reverts commit 5926e54bba.
2014-07-23 17:19:33 -07:00
Howard Chu
015d6b909a Fix env_open mode bits 2014-07-21 18:20:31 -07:00
Howard Chu
58e9c3add8 Fix mdb_cursor_count, reject uninit'd cursor 2014-07-21 08:33:59 -07:00
Howard Chu
fcb0768e7d Silence prototype warnings 2014-07-21 08:11:33 -07:00
Howard Chu
204637b18d Typo 2014-07-14 09:53:53 -07:00