Commit graph

1159 commits

Author SHA1 Message Date
Oskari Timperi
58ad1dd757 ITS#7992 assume Windows paths are UTF-8 2015-11-20 01:11:31 +00:00
Howard Chu
60c34d14ec ITS#8316 cursor fixup in page_merge
Deleting the merged page requires bumping down other ki's
of the page's parent.
2015-11-19 20:04:16 +00:00
Howard Chu
a98b74e6df ITS#8315 fix ovpage_free
Keep dirty_room sync'd with dirty_list
2015-11-19 10:01:59 +00:00
Howard Chu
f08b70d0df ITS#8313 more for ITS#8062
dummy flags must be init'd due to 3d46d550
2015-11-18 21:33:51 +00:00
Hallvard Furuseth
4d140b92ee ITS#8312 Fix loose pages in commit(nested txn) 2015-11-18 16:30:24 +01:00
Howard Chu
355f64ad07 ITS#8311 add comment 2015-11-18 10:24:58 +00:00
Howard Chu
6d63afb1d9 ITS#8311 fix page_split from update_key
Check for top of stack. Usually the cursor only has height 1 when
calling page_split, but not always.
2015-11-18 10:01:34 +00:00
Hallvard Furuseth
3360cbad66 ITS#7209 Default MDB_DSYNC = O_SYNC if no O_DSYNC 2015-11-17 18:22:25 +01:00
Howard Chu
c46119a545 ITS#8310 fix mdb_rebalance cursor fixup
When collapsing root, must adjust entire cursor stack
2015-11-13 09:27:07 +00:00
Howard Chu
c6d908075e Tweak robust mutex detection for glibc 2015-11-11 09:44:30 +00:00
Howard Chu
3c9786b5e8 ITS#8304 fix page_merge
Was using the pre-touch dst page pointer instead of the touched page
2015-11-09 20:09:10 +00:00
Howard Chu
0fdfdf320c ITS#8300 more for node_move
When moving a node from one page to another, make sure other cursors'
parent index gets adjusted too.
2015-11-06 10:12:45 +00:00
Howard Chu
3ff8a73704 ITS#8300 simplify 2015-11-04 22:45:38 +00:00
Howard Chu
b12bdaaade ITS#8300 more for node_move fixups
When moving a node from the right neighbor, a different
adjustment is needed.
2015-11-04 22:32:05 +00:00
Howard Chu
7a5a78ef0c ITS#8300 fix node_move
Don't adjust other cursors when we added a node on the right.
2015-11-04 21:02:44 +00:00
Howard Chu
0c777dfc99 ITS#8300 fix rebalance after node_move
ITS#8258, ITS#7829 fixes checked parent index to see if we were moving
from a left neighbor. Should have just checked to see if current index
was 0, meaning we added on the left. (Parent index may not tell us
anything meaningful after a nested rebalance.)
2015-11-04 21:02:32 +00:00
Howard Chu
eddd9b7537 ITS#8238 fix DUPFIXED page_split
Parent mc_ki wasn't adjusted if new_indx was > split point
2015-11-04 18:12:33 +00:00
Howard Chu
d372a2a199 ITS#8299 fix page_merge cursor fixup
The parent's mc_ki has changed. We need to fix that up as well
in other cursors.
2015-11-04 17:03:48 +00:00
Howard Chu
b9130d3d63 Use MDB_USE_ROBUST not MDB_NO_ROBUST 2015-10-31 02:28:12 +00:00
Howard Chu
2be6797534 Add MDB_NO_ROBUST to disable Robust Mutexes 2015-10-31 02:11:47 +00:00
Hallvard Furuseth
2ee9c4a30e Fix MDB_NOSYNC,MDB_NOMETASYNC thinko 2015-10-28 09:37:23 +01:00
Ignacio Casal Quinteiro
619ccdd3da ITS#8270 win32: fix conversion error with MSVC 2015-10-25 08:06:37 +00:00
Howard Chu
9411de60d2 ITS#7771 more for prev commit 2015-10-12 10:29:09 +01:00
Howard Chu
7c1baed4de 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-12 00:08:41 +01:00
Hallvard Furuseth
e211b870d0 ITS#8263 streamline prev patch 2015-10-11 21:40:49 +01:00
Howard Chu
c456d219a9 ITS#8263 fix cursor tracking in cursor_put 2015-10-07 06:30:58 +01:00
Howard Chu
b42cd65193 ITS#8264 fix cursor_del cursor tracking
Some destination fixups need to happen immediately after nodes
are moved, before rebalancing
2015-10-06 08:02:03 +01:00
Howard Chu
8b46dcc26d 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:14:29 +01:00
Hallvard Furuseth
436333b16c Fix typo in mdb_tassert().
No effect on current code.
2015-10-01 19:43:58 +02:00
Howard Chu
e034bd3d84 ITS#8259 fix usage ordering 2015-09-30 18:11:20 +01:00
Howard Chu
3cbbe3a0d8 ITS#8221 fix typos 2015-09-29 17:31:56 +01:00
Howard Chu
2247507bb8 ITS#8221 cleanup prev commit 2015-09-27 22:34:22 +01:00
Howard Chu
7267e0f566 ITS#8221 don't merge branch pages needlessly 2015-09-26 16:50:28 +01:00
Luke Yeager
62826b0965 ITS#8256 Create install directories if needed 2015-09-25 19:59:30 +01:00
Howard Chu
7e476e4983 ITS#8237 fix ITS#7589 regression 2015-09-06 20:38:58 +01:00
Hallvard Furuseth
e9e3c9fb51 ITS#7377 mdb_env_init_meta(): Catch calloc error 2015-08-23 11:12:45 +02:00
Howard Chu
bc4c177b91 Doc tweak - MDB_RESERVE / DUPSORT incompat
For those people who insist on ignoring the obvious.
2015-08-22 14:00:12 +01:00
Howard Chu
c77fbc6f35 Another MDB_APPEND doc tweak
Missed this in 7ce29b9edb
2015-08-21 21:40:33 +01:00
Pavel Medvedev
10c808e4f9 ITS#8069 char* strings on Windows are ASCII 2015-08-19 17:21:16 +01:00
Pavel Medvedev
8d198fdd5a ITS#8067 add ssize_t typedef for MSVC 2015-08-19 16:39:08 +01:00
Howard Chu
80e997a0eb Bump version to 0.9.16 2015-08-14 01:01:40 +01:00
Howard Chu
c9d45600cd ITS#8192 fix typo 2015-07-30 00:54:05 +01:00
Howard Chu
d4f9568249 ITS#8192 cleanup unused label on WIN32 2015-07-29 20:03:43 +01:00
Howard Chu
572aff7e80 ITS#8192 fix reference to EINTR on WIN32 from ITS#8106 2015-07-29 20:01:34 +01:00
Hallvard Furuseth
2c6c267a23 Simpler mdb_env_write_meta() 2015-07-26 07:20:19 +02:00
Hallvard Furuseth
af29f6a594 Kill magic numbers for NUM_METAS, databases 2015-07-26 07:16:41 +02:00
Hallvard Furuseth
4dea7d44fa ITS#7377 Catch mdb_put() to blocked/read-only txns
...early enough that txn state is left unchanged.
2015-07-19 21:44:02 +02:00
Hallvard Furuseth
d7db12ad77 ITS#7377 Always notice env error on txn startup.
Move the check to the end of txn startup.  Catches env
breakage which happens while the new txn waits for a lock.
2015-07-19 21:43:10 +02:00
Hallvard Furuseth
060b63a58d Cleanup: Drop !mt_dbxs hack, use MDB_TXN_FINISHED 2015-07-19 21:31:54 +02:00
Hallvard Furuseth
3e301ec400 Catch most uses of finished/parent txns.
* Add MDB_TXN_FINISHED, MDB_TXN_HAS_CHILD, MDB_TXN_BLOCKED.
* Clear mt_numdbs in writers, for TXN_DBI_EXIST() to catch.
  We already do in readers.
2015-07-19 21:31:25 +02:00
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