Hallvard Furuseth
b6973a3324
Move code into mdb_txn_end(). Was mdb_txn_reset0.
...
Side effects:
* Clean txn up a bit even before freeing it.
* Tweak DEBUG output at txn end. Add DEBUG after commit(writer).
2015-07-19 21:30:12 +02:00
Hallvard Furuseth
90f6fc4ba7
ITS#8200 Fix mdb_midl_shrink() usage, return void
2015-07-19 21:18:31 +02:00
Hallvard Furuseth
91fc43f17c
Factor me_metas[toggle] out to mdb_env_pick_meta()
2015-07-11 21:10:33 +02:00
Hallvard Furuseth
62aabaa4aa
Simpler mdb_node_add()
2015-07-11 21:09:36 +02:00
Hallvard Furuseth
45e405528b
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-11 21:01:40 +02:00
Howard Chu
749633e48a
ITS#8190 fix cursor EOF bug
2015-07-07 13:42:41 +01:00
Hallvard Furuseth
ad87d6a3f4
More ESECT declarations
2015-07-04 13:50:21 +02:00
Hallvard Furuseth
ebb8b67109
Add DB_USRVALID, to avoid 'dbi == FREE_DBI' tests
2015-07-04 13:49:12 +02:00
Hallvard Furuseth
5cd5e928c1
Simpler flag/DBI checks and MDB_DEBUG
2015-07-04 13:48:07 +02:00
Hallvard Furuseth
4033f31acb
Simpler mdb_drop().
...
MDB_DBI_CHANGED(,MAIN_DBI) is never true.
2015-07-04 13:48:06 +02:00
Hallvard Furuseth
be0cdc1c9d
Simpler mdb_node_shrink()
2015-07-04 13:48:05 +02:00
Hallvard Furuseth
084d412f9b
Simpler mdb_txn_commit().
...
mt_env is always set.
Commit(mt_child) resets mt_child, so parent need not.
2015-07-04 13:48:04 +02:00
Hallvard Furuseth
5305871585
mdb_txn_begin() cleanup
2015-07-04 13:48:03 +02:00
Hallvard Furuseth
b6ac0cd90a
mdb_drop0(): Omit scanning DUPSORT sub-DB leaves
2015-07-04 13:48:02 +02:00
Hallvard Furuseth
f702e33b6c
Use mdb_cmp_long() for FREE_DBI
2015-07-04 13:48:01 +02:00
Hallvard Furuseth
11536bea25
mdb_env_get_flags(): Hide internal flags
2015-07-04 13:42:41 +02:00
Hallvard Furuseth
a937740aa0
ITS#7969 Wrap unportable __sync_synchronize in #if
2015-07-03 22:38:50 +02:00
Hallvard Furuseth
943b23f011
Restore support for Posix semaphores
2015-07-02 21:14:56 +02:00
Hallvard Furuseth
9574b65648
Fix mdb_mutex_t, add mdb_mutexref_t, drop MDB_MUTEX().
...
Fixes the types of Windows HANDLEs, they became HANDLE*.
MDB_MUTEX() took a magic r/w arg which it's nice to get rid of.
2015-07-02 21:06:35 +02:00
Hallvard Furuseth
8293b20cfe
Add MDB_USE_POSIX_MUTEX.
...
So far just to help aligning mdb.master and mdb.RE.
We'll make it an option later.
2015-07-02 21:06:27 +02:00
Howard Chu
7d162bcf31
CHANGES only belongs in mdb.RE
2015-07-02 18:03:36 +01:00
Howard Chu
bf55ce5545
Bump version to 0.9.15
...
(not really, since this is the dev/non-release branch)
2015-06-19 14:13:43 +01:00
Hallvard Furuseth
e95d57f39c
Use ftok() for semget(), and only lower mode bits
2015-06-02 20:51:03 +02:00
Hallvard Furuseth
68f64aa104
Clarify mdb_env_open() doc of 'mode' param
2015-06-02 20:49:33 +02:00
Hallvard Furuseth
579ad14d7c
ITS#8156 Fix MDB_MAXKEYSIZE doc
2015-05-28 20:51:24 +02:00
Hallvard Furuseth
aa16d7bc0a
ITS#8157 mdb_txn_renew0(): init after error checks
2015-05-27 22:26:54 +02:00
Hallvard Furuseth
8d1f6ca782
mdb_txn_renew(): Drop pointless diff from mdb.RE.
...
Makes the code friendlier to "git cherry-pick".
2015-05-27 22:23:50 +02:00
Hallvard Furuseth
02e8de5edb
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-05-20 04:04:38 +02:00
Hallvard Furuseth
77bdbdd9de
mtest*.c: Fix MDB_NOOVERWRITE, plug cursor leak
2015-05-20 03:17:47 +02:00
Hallvard Furuseth
9bb915675a
ITS#8117 Fix MDB_INTEGERDUP keysize doc + md_dcmp
2015-05-19 20:33:35 +02:00
Howard Chu
329e12e4c5
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:57:22 +01:00
Howard Chu
3d2202f31c
Revert "ITS#8117 cleanup prev commit"
...
This reverts commit ce7ba0ceb6 .
Revert "ITS#8117 fix INTEGERDUP compare"
This reverts commit ed13d4aa59 .
2015-05-03 07:56:40 +01:00
Howard Chu
ce7ba0ceb6
ITS#8117 cleanup prev commit
2015-04-29 17:28:21 +01:00
Howard Chu
ed13d4aa59
ITS#8117 fix INTEGERDUP compare
2015-04-29 17:13:55 +01:00
Howard Chu
f4cab2994f
ITS#8109 fix mdb_cursor_del0 on empty DB
2015-04-23 05:49:56 +01:00
Howard Chu
4c62fde880
ITS#8106 retry writes on EINTR
2015-04-17 18:32:54 +01:00
Howard Chu
ccf4d8b385
ITS#8062 also handle subcursors
2015-04-16 00:20:28 +01:00
Howard Chu
b0fca5b956
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:20:55 +01:00
Hallvard Furuseth
2f6877ff7b
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-14 20:25:51 +02:00
Hallvard Furuseth
5224774f3c
Reformat mdb_dbi_open() doc for clarity
2015-04-14 20:24:30 +02:00
Hallvard Furuseth
6a86f22b2a
Cleanup MDB_env.me_txn0.
...
More fallout from 4d02c741b1 .
2015-04-08 21:52:05 +02:00
Hallvard Furuseth
8adee9464f
Fix per-txn MDB_NOMETASYNC, MDB_NOSYNC.
...
Fallout from 4d02c741b1 . The flags
were ignored: mdb_txn_renew0/begin cleared and/or did not set them.
2015-04-08 21:51:50 +02:00
Hallvard Furuseth
54516639ac
Renumber MDB_TXN_* flags, simplify flag code
2015-04-08 21:51:16 +02:00
Hallvard Furuseth
49bb9e82e8
mdb_txn_renew(): Clear error from previous txn
2015-04-08 21:47:24 +02:00
Howard Chu
d2dab3c905
ITS#8062 fix uninit'd cursor index
2015-03-18 19:26:21 +00:00
Howard Chu
04af46b1c1
ITS#8066 fix mdb_load with large values
2015-02-26 21:37:01 +00:00
Quanah Gibson-Mount
6fe12f3273
Happy New Year
2015-02-12 11:17:59 -06:00
Quanah Gibson-Mount
f526f1b9a3
Happy New Year
2015-02-12 10:46:33 -06:00
Howard Chu
8bb541bc40
Also support NOMETASYNC on txn_begin
2015-02-02 10:33:41 +00:00
Howard Chu
3368d1f5e2
Support MDB_NOSYNC on mdb_txn_begin()
2015-01-30 09:21:39 +00:00
Hallvard Furuseth
570ba6fb86
Fix EACCES description
2015-01-27 06:10:57 +01:00
Hallvard Furuseth
b2ab9910dd
ITS#7971 Fix reader allocation and me_numreaders
2015-01-17 06:32:12 +01:00
Hallvard Furuseth
404697b369
mdb_env_set_flags(): Reject CHANGELESS flags.
...
Reverts part of a2ac10107e .
MDB_ROBUST needed to be accepted, but that flag is gone.
2015-01-14 08:12:50 +01:00
Howard Chu
71741a6b08
Fix potential null deref (coverity)
2015-01-13 19:19:09 +00:00
Hallvard Furuseth
d711e357da
Whitespace (align with mdb.RE)
2015-01-12 21:02:29 +01:00
Hallvard Furuseth
631970e485
Make SysV semaphores robust. Cleanup MDB_ROBUST.
2015-01-12 21:02:29 +01:00
Hallvard Furuseth
9441012435
ITS#8021 doc: Don't mix MDB_WRITEMAP + non-WRITEMAP
2015-01-12 12:19:51 +01:00
Howard Chu
8b6c4250b1
More cleanup for fdatasync hack
2015-01-12 10:42:26 +00:00
Howard Chu
ea89e3d269
Tweak conditionals for fdatasync hack
2015-01-11 11:37:37 +00:00
Howard Chu
f83f62a7ae
ITS#8021 env_sync is invalid in RDONLY env
2015-01-09 11:25:52 +00:00
Howard Chu
462dc09745
fdatasync hack, again
...
Check for ext3/ext4 fs, then check kernel version.
2015-01-08 12:54:14 +00:00
Howard Chu
e86072a9c7
Revert "Note MDB_SAFE_FDATASYNC"
...
This reverts commit 293d6bb47f .
Revert "Simpler fdatasync hack"
This reverts commit 9585c01233 .
2015-01-08 12:17:58 +00:00
Howard Chu
293d6bb47f
Note MDB_SAFE_FDATASYNC
2015-01-08 11:43:57 +00:00
Howard Chu
9585c01233
Simpler fdatasync hack
2015-01-08 11:42:08 +00:00
Howard Chu
0ef1e0b16d
Revert "Fix prev commit for env_sync0"
...
This reverts commit 985bbbbdd5 .
Revert "Hack for potential ext3/ext4 corruption issue"
This reverts commit 0018eeb2c3 .
2015-01-08 11:29:30 +00:00
Howard Chu
985bbbbdd5
Fix prev commit for env_sync0
2014-12-21 00:13:50 +00:00
Howard Chu
0018eeb2c3
Hack for potential ext3/ext4 corruption issue
...
Use regular fsync() if we think this commit grew the DB file.
2014-12-18 04:38:53 +00:00
Howard Chu
7ce29b9edb
Fix MDB_APPEND doc
...
We actually compare the new key against the last key, to prevent
corruption.
2014-12-15 20:40:59 +00:00
Hallvard Furuseth
6c71173258
make clean: remove *.lo
2014-12-13 20:35:08 +01:00
Hallvard Furuseth
cccc947b4a
Try to avoid an invalid datafile after failed init
2014-12-08 09:56:36 +01:00
Howard Chu
9cc04f604f
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-08 03:21:09 +00:00
Hallvard Furuseth
03ddbcf37d
C90-compatible code for SysV semaphores
2014-12-05 21:00:21 +01:00
Leo Yuriev
1a7243b3f4
ITS#7987 fix excessive space for single write txn
2014-12-05 19:30:31 +00:00
Howard Chu
c36c167cc4
ITS#7994 fix prev commit
...
Strip docs promising behaviors that we don't promise to hold.
Strip MDB_txnid_t typedef.
2014-12-05 19:18:01 +00:00
David Barbour
b660491d3f
ITS#7994 Access to current transaction ID.
...
I, David Barbour, hereby place the following modifications to OpenLDAP
Software (and only these modifications) into the public domain. Hence,
these modifications may be freely used and/or redistributed for any
purpose with or without attribution and/or other notice.
2014-12-05 19:17:52 +00:00
Hallvard Furuseth
1413de3a04
Fix SysV semaphores - repair mti_txnid.
...
Similar to 443a7e40c4 .
2014-12-05 18:18:53 +01:00
Hallvard Furuseth
3e6ac6ef6b
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.
2014-12-03 12:37:55 +01:00
Hallvard Furuseth
c306423adf
Fix WIN32 -> _WIN32
2014-12-03 12:27:53 +01:00
Hallvard Furuseth
0697869d92
mdb_strerror: Silence warning @ Windows
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
4376a19c5c
Fix comments
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
4bda1d2461
Clean up SysV semaphore code.
...
Change MDB_LOCK_FORMAT to differ from Posix semaphores/mutexes.
Do not use array/member length 0 for MDB_txninfo.mt2.
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
443a7e40c4
Fix robust mutexes - repair mti_txnid.
...
Broken by e3b6c359a9 , if
commit() crashes in write_meta before setting mti_txnid.
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
42110d83a9
Simplify recent changes a bit.
2014-12-01 08:59:29 +01:00
Hallvard Furuseth
9a72292ac1
ITS#7961,#7987 Re-fix txn init.
...
More fallout from 4d02c741b1 :
Don't modify another thread's write txn. Reinit me_txn0 fully.
2014-11-28 16:32:23 +00:00
leo@yuriev.ru
9a8eb95674
ITS#7971 LMDB: clarification in mdb_txn_renew0().
2014-10-18 07:00:52 +01:00
leo@yuriev.ru
bd6d2e6f2c
ITS#7970 LMDB: Critical Heisenbug
...
Inconsistent reading & SIGSEGV due to the race condition.
2014-10-18 06:57:58 +01:00
leo@yuriev.ru
9a80a8a8e8
ITS#7969 LMDB: volatile & __synchronize().
...
Globally shared fields of meta-data are not 'volatile'.
2014-10-18 06:53:53 +01:00
Howard Chu
925e7805a5
ITS#7959 fix prev commit
...
fstat returns -1, not an errno. Move code into its own function
for reuse.
2014-10-08 19:25:27 +01:00
Howard Chu
d72b2f5d15
ITS#7961 fix txn init
...
More fallout from 4d02c741b1
2014-10-04 21:48:49 +01:00
Jean-Christophe DUBOIS
d77e3ddb4d
ITS#7959 Check fstat return value
...
Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
2014-10-03 21:10:49 +01:00
Leo Yuriev
461d9c8f34
ITS#7841 trivial cleanup
...
TRIVIA - lmdb: clean testdb-dir while "make test".
2014-10-02 23:43:57 +01:00
Howard Chu
56c2c160be
ITS#7956 fix compact of empty env
2014-10-02 22:11:43 +01:00
Howard Chu
bfe297da47
ITS#7955, #7671 fix MDB_PREV_DUP
2014-10-02 21:58:20 +01:00
Howard Chu
61dd017808
ITS#7953 .gitignore *.lo
2014-10-02 21:35:15 +01:00
Howard Chu
fd0315d6e5
ITS#7952 .gitignore mdb_dump/load
2014-10-02 21:34:55 +01:00
Howard Chu
8bec53fdfd
Don't use -fPIC for static lib
2014-10-01 21:00:03 +01:00
Howard Chu
e3b6c359a9
Use robust mutexes by default
...
Making it optional on pthreads just complicates things;
they're always robust on other implementations
2014-10-01 20:58:15 +01:00
Howard Chu
58ddb5527b
Use SysV semaphores instead of POSIX
...
Since they can cleanup after themselves on process exit
2014-10-01 20:37:25 +01:00
Howard Chu
a53716ed96
Must do dlist_free before releasing Wmutex
2014-10-01 20:36:37 +01:00
Hallvard Furuseth
ec6cf4e40f
MDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable.
2014-10-01 20:36:21 +01:00
Howard Chu
f6add293a7
Free write mutex earlier in txn_reset0
2014-10-01 20:36:11 +01:00
Hallvard Furuseth
a2ac10107e
Add MDB_ROBUST
2014-10-01 20:35:12 +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
Howard Chu
9049efe493
ITS#7896 fix for mdb_env_map
...
Don't pass non-NULL map address unless MDB_FIXEDMAP was used.
2014-07-14 09:53:36 -07:00
Howard Chu
886ee41d55
More for cursor EOF
...
Must also set in sub-cursor if deleting entire subDB
2014-07-09 15:03:54 -07:00
Howard Chu
7f038d0f15
Zero-init copy2 writebuf
2014-07-09 12:05:37 -07:00
Hallvard Furuseth
2825ad64c2
MDB_MAXKEYSIZE = 0 (dynamic value) when MDB_DEVEL
2014-07-09 20:18:08 +02:00
Hallvard Furuseth
b3dedde612
MDB_DEVEL doxygen fix
2014-07-09 20:17:13 +02:00
Hallvard Furuseth
02285aca58
ITS#7789 Fix resize vs MDB_NOMETASYNC, and a comment.
2014-07-09 20:16:33 +02:00
Howard Chu
bda6a60ad4
Windows fixes
...
Always set the filesize when opening for writes. Otherwise
can't use backups from mdb_copy.
2014-07-09 10:22:25 -07:00
Howard Chu
f3573a7383
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.
2014-07-09 10:02:21 -07:00
Howard Chu
c4d0f90fce
Fix loading of printable dump
...
Off-by-one in end check, would complain on valid input.
2014-07-09 09:16:03 -07:00
Howard Chu
38e71c68de
ITS#7789 more
...
persist size changes from env_open() as well. This was the
original behavior.
2014-07-09 06:54:32 -07:00
Howard Chu
a5e4eecb1e
Revert "ITS#7789 update RESIZED errmsg text"
...
This reverts commit d8e18551c3 .
And partially reverts mapsize check. Only mapsize increases are relevant.
2014-07-09 06:19:06 -07:00
Howard Chu
d5371347e8
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.
2014-07-09 05:55:30 -07:00
Howard Chu
e0273020bd
Updates #7789 , #7825
2014-07-08 21:40:11 -07:00
Howard Chu
276aa55969
ITS#7825 more
...
only update dbiseq in dbi_open on write txns
2014-07-08 21:31:48 -07:00
Howard Chu
04851e442f
ITS#7825 tweak prev commit
...
dbiseqs are only checked in write txns so omit from read txns
2014-07-08 21:22:07 -07:00
Howard Chu
0401f2deed
ITS#7825 add MDB_BAD_DBI error code
...
Use DBI sequence numbers to detect DBIs being closed while in use.
2014-07-08 21:02:40 -07:00
Howard Chu
d8e18551c3
ITS#7789 update RESIZED errmsg text
2014-07-08 20:05:31 -07:00
Howard Chu
5926e54bba
ITS#7789 persist mapsize changes
...
Write decreases too, not just increases. Check for any size change
that was not requested by this process.
2014-07-08 19:18:02 -07:00
Howard Chu
604256ceff
Update LMDB version date/info
2014-07-08 16:37:28 -07:00
Howard Chu
2f04728471
ITS#7892 Fix MacOSX section name
2014-07-08 16:27:03 -07:00
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
4d65cf1326
dump/load need mapsize etc.
2014-07-01 18:53:47 -07:00
Howard Chu
c5be1292ac
All diagnostics should go to stderr
2014-07-01 05:15:44 -07:00
Howard Chu
ee599c5250
More gcov setup tweaks
2014-06-30 04:42:41 -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
c73f087750
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.
2014-06-27 10:53:11 -07:00
Howard Chu
277526d0f0
Setup for gcov/coverage testing
2014-06-26 05:19:47 -07: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
9a4ef8406e
Doc updates
...
Rename MDB -> LMDB
Integrate tool manpages
2014-06-24 04:16:19 -07:00
Howard Chu
ca47c2af1f
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.
2014-06-23 07:39:06 -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
cf331ccb3d
Silence ptr arithmetic warnings
2014-06-21 08:34:45 -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
0d013609fe
Fix lineno count
2014-06-20 09:03:41 -07:00
Howard Chu
c05f45b7dd
Fix multiple subDBs
2014-06-20 09:00:33 -07:00
Howard Chu
1a72b19e26
Fix unhex
2014-06-20 08:56:52 -07:00
Howard Chu
21b51cb746
Add mdb_load
2014-06-20 08:49:59 -07:00
Howard Chu
3e83b5b27b
Add mdb_dump, update copyrights
2014-06-20 06:36:30 -07:00
Howard Chu
59d30a49c3
Bump to 0.9.13
2014-06-18 14:25:46 -07:00
Howard Chu
0c041e0977
Bump to 0.9.13
2014-06-18 14:07:15 -07:00
Hallvard Furuseth
b898cb642a
ITS#7793 Re-fix MDB_CURRENT doc: Match current item
2014-06-18 23:01:14 +02:00
Hallvard Furuseth
01a75c5ab5
Fix MDB_GET_MULTIPLE/MDB_NEXT_MULTIPLE doc.
2014-06-18 23:01:14 +02: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
52406746bd
Remove bogus file
...
added by mistake in 17c09fa476
2014-06-18 02:53:17 -07:00
Howard Chu
ecb71ee197
Bump version to 0.9.12
2014-06-13 10:46:27 -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
92c01ffda8
ITS#7771 mdb_cursor_put doc: Cursor moves on error
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
6948f9dace
More for ITS#7793/7828
...
Note MDB_CURRENT/MDB_DUPSORT requirement
2014-03-26 02:41:26 -07:00
Howard Chu
f537429b64
ITS#7828, #7793
...
Clarify MDB_CURRENT key usage, simplify freelist_save
2014-03-26 02:35:56 -07:00
Howard Chu
9026894e05
Revert "ITS#7793 mdb_cursor_put(): Fix MDB_CURRENT."
...
This reverts commit 4e954f8ae8 .
Caused ITS#7828.
2014-03-26 02:35:45 -07:00
Hallvard Furuseth
86d9675543
Revert "Update MDB_PANIC description" (thinko).
...
This reverts commit 6bd34d0534 .
2014-03-23 13:06:03 +01:00
Hallvard Furuseth
6bd34d0534
Update MDB_PANIC description
2014-03-22 22:27:10 +01:00
Hallvard Furuseth
1519f4bc3d
Tweak mdb_mid2l_insert() call from ITS#7775.
...
It does not return MDB error codes.
2014-03-22 22:27:10 +01:00
Hallvard Furuseth
2727e97de3
mtest: Accept an MDB_NOTFOUND case
2014-03-16 12:42:43 +01:00
Hallvard Furuseth
68e97b2184
Handle more errors. Invalidate txn if needed.
2014-03-16 12:42:43 +01:00
Hallvard Furuseth
937b5eff07
Don't use non-existent node info in branch/leaf2
2014-03-16 12:42:42 +01:00
Hallvard Furuseth
86f8b203f5
Move code out of mdb_cursor_del0() and mdb_del().
...
Prepares for the next commits.
2014-03-16 12:42:42 +01:00
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.
2014-03-16 12:42:42 +01:00
Hallvard Furuseth
3e7c1bd4e2
mdb_page_list(): Support & display all page types
2014-03-16 12:42:42 +01:00
Hallvard Furuseth
a22c31115f
mdb_txn_renew0(): Fix un-mutexed me_flags update.
...
Replace env flag MDB_LIVE_READER with field me_live_reader.
2014-03-16 12:42:42 +01:00
Hallvard Furuseth
684bb867ce
Doxygen fixes
2014-03-16 12:42:42 +01:00
Howard Chu
4ddf2ec831
Rename samples
...
They're meant to be read and studied, not run.
2014-03-16 03:55:03 -07:00
Howard Chu
797ff136a8
ITS#7815 more for page_split
...
This case didn't come up in testing. Needs finer grained test.
2014-03-05 20:40:12 -08:00
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.
2014-03-05 20:04:42 -08:00
Hallvard Furuseth
e2bdd44624
mtest*.c, sample-*.c: Add/note error checks.
2014-02-19 21:25:40 +01:00
Hallvard Furuseth
a604948993
mtest[46]: Use different DBs when different flags.
2014-02-19 21:25:40 +01:00
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.
2014-01-28 14:27:27 +01:00
Howard Chu
aa3463ec7c
Bump version to 0.9.11
2014-01-15 09:09:48 -08:00
Howard Chu
ec97f49a65
Note changes for LMDB 0.9.11
2014-01-14 17:12:48 -08:00
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).
2014-01-13 20:46:08 +01:00
Howard Chu
3f241365d5
Make sure mapsize changes take effect on Windows.
2014-01-12 20:04:50 -08:00