Commit graph

667 commits

Author SHA1 Message Date
Howard Chu
47ca2f7095 ITS#8699 more for cursor_del ITS#8622
Set C_DEL flag on reinit'd subcursor
2017-07-26 21:37:40 +01:00
Howard Chu
4d2154397a ITS#8622 fix xcursor after cursor_del
Re-fix 6b1df0e4c7 from ITS#8406
2017-03-23 20:55:12 +00:00
Hallvard Furuseth
b5e5fcc31d ITS#8582 Fill in MDB_LOCK_FORMAT
Attempt to stop liblmdb variants compiled with conflicting options
from using the lockfile at the same time and thus breaking it.
2017-03-19 13:24:08 +01:00
Hallvard Furuseth
52c0df1d50 Clear any struct padding in idbuf 2017-03-19 13:21:52 +01:00
Hallvard Furuseth
172d825155 Simplify mdb_hash_val() -> mdb_hash()
Simpler usage since it's only called once, rename to match new usage,
and drop 3 loop pessimizations which were optimizations 20 years ago.
2017-03-19 13:21:52 +01:00
Hallvard Furuseth
68eda68f0b Store lock ID instead of pathname in lockfile
This limits the namespace which the user can meddle with for
POSIX semaphores and Windows mutexes.  Their names change a
bit, they no longer have fixed lengths.
2017-03-19 13:21:51 +01:00
Hallvard Furuseth
58ba039b8f ITS#8582 MDB_LOCK_VERSION = 2 due to format change 2017-03-04 13:03:15 +01:00
Howard Chu
e36517dbbe ITS#8582 keep mutex at end of struct
since it's variable size on Linux/glibc
2017-02-06 15:09:26 +00:00
Howard Chu
1db9f32ae2 Workaround VL32 cursor refcounting miscount
Don't try to deref cursor page if txn's pagelist is empty
2017-01-31 10:41:52 +00:00
Howard Chu
882e27c1b4 Further fix f8ce8a8271
Fully revert the change to GET_MULTIPLE
2017-01-14 19:22:34 +00:00
Howard Chu
5eae7aad7e Fix f8ce8a8271
GET_MULTIPLE was broken
2017-01-12 13:35:31 +00:00
Howard Chu
6ac9aa666e Happy New Year 2017-01-11 14:39:08 +00:00
Howard Chu
f8ce8a8271 More C_EOF tweaks 2017-01-11 11:19:18 +00:00
Howard Chu
c44b29eaa8 ITS#8557 fix prev commit 2017-01-11 11:18:57 +00:00
Howard Chu
511f5880e2 Tweak cursor_next C_EOF check
Allow C_EOF flag to be stale
2017-01-11 10:33:28 +00:00
Howard Chu
d84dee516f ITS#8557 fix mdb_cursor_last
Optimize mdb_page_search_root(PS_LAST) when cursor is already near
last position, ignoring C_EOF flag for now.
2017-01-11 09:51:43 +00:00
Howard Chu
2e3eaf2ce2 ITS#8554 kFreeBSD is like BSD
Doesn't have POSIX robust mutexes - GNU userland on BSD kernel
2016-12-28 18:30:19 +00:00
Hallvard Furuseth
4bc270a2cb More MDB_node doc 2016-12-21 21:42:36 +01:00
Hallvard Furuseth
be94a7565b Doxygen fixes. Use DISTRIBUTE_GROUP_DOC.
- DISTRIBUTE_GROUP_DOC makes doxygen give several fields the
  same doc: mn_hi + mn_lo in MDB_node.
- With mdb_mutex_t + mdb_mutexref_t, instead split them up.
- Don't hide a doxygen #name inside double quotes.
2016-12-21 21:40:50 +01:00
Hallvard Furuseth
e539654051 ITS#8504 Fix prev commit: mc_error, #ifdef SIGPIPE
Never clear mc_error, we could lose a failure in the other thread.
2016-12-13 18:50:45 +01:00
Lorenz Bauer
3e7a8e26e6 ITS#8504 mdb_env_copyfd2(): Don't abort on SIGPIPE
Return EPIPE instead.
2016-12-13 18:47:13 +01:00
Hallvard Furuseth
65e95ffccf ITS#7377 Catch mdb_cursor_sibling() error 2016-12-10 22:00:31 +01:00
Hallvard Furuseth
d78c80d902 Clean up and comment C_UNTRACK
Don't use it as a "cursor is tracked" hint in mdb_pages_xkeep().
It's been harmless so far, but would break after mdb_cursor_copy().
Checking m0 directly short-circuits better anyway.
2016-12-10 21:42:39 +01:00
Hallvard Furuseth
1fb0822b40 ITS#8355 cleanup
Drop ~C_EOF, pointless after 8c215aa970
2016-12-10 21:11:12 +01:00
Hallvard Furuseth
c0ff9a267a MDB_VL32 cleanup: MDB_env.mm_mapsize type 2016-12-10 17:17:28 +01:00
Hallvard Furuseth
e1be73c771 ITS#8542 mdb_dbi_open(): Protect mainDB cursors 2016-12-10 09:16:17 +01:00
Hallvard Furuseth
ffd13db3f8 Cleanup: Add flag DB_DUPDATA, drop DB_DIRTY hack 2016-12-09 00:03:36 +01:00
Hallvard Furuseth
ef066598b5 MDB_CP_COMPACT comments 2016-12-07 19:06:11 +01:00
Hallvard Furuseth
3dda2bfa4a doxygen cleanup 2016-12-07 19:04:19 +01:00
Hallvard Furuseth
72f875b48a Note functions which must set MDB_TXN_ERROR on failure
Other functions depend on them to do so.
For mdb_node_read(), instead remove such a dependence.
2016-12-07 18:55:21 +01:00
Hallvard Furuseth
08e4684d37 MDB_VL32 mdb_page_get(): Set MDB_TXN_ERROR on failure. 2016-12-02 07:00:08 +01:00
Hallvard Furuseth
a70200f15f Fix mdb_env_open() with MDB_VL32
Init me_rpmutex independently of MDB_NOLOCK.
Plug leaks on mdb_env_open() failure.
Tweak mdb_env_close0() to handle the rearranged mdb_env_open().
2016-12-02 05:22:11 +01:00
Hallvard Furuseth
f3ab0d23a4 Factor out refreshing sub-page pointers 2016-12-01 21:17:42 +01:00
Howard Chu
fa83b25ec5 More for ITS#8406
xcursor fixup depends on init state
2016-11-29 19:19:45 +00:00
Howard Chu
e58db7d556 More for ITS#8406
Revert excess cursor fixup
2016-11-12 23:11:20 +00:00
Hallvard Furuseth
f7e85d7804 Only set me_mfd if needed. Drop unused read access. 2016-10-04 21:16:27 +02:00
Hallvard Furuseth
6355dade31 ITS#8505 Protect parent from fork()-pthread_exit() 2016-10-04 21:16:27 +02:00
Hallvard Furuseth
04acac634a ITS#8505 Set FD_CLOEXEC for me_mfd,env_copy as well 2016-10-04 19:12:58 +02:00
Hallvard Furuseth
15666878af Move opening files to mdb_fopen()
No change in functionality.
2016-10-04 19:12:58 +02:00
Hallvard Furuseth
cdc3f9cc2d Factor filename handling out to mdb_fname_*()
No change in functionality, except needs less mallocing.
2016-09-25 15:40:08 +02:00
Hallvard Furuseth
67fb3c746a ITS#7992 Tighter utf8_to_utf16(), fix errcodes
The 0xFFFD check seems due to misleading MultiByteToWideChar() doc.
Bad UTF-8 gives 0xFFFD in the output string, not the return value.
2016-09-25 15:40:08 +02:00
Hallvard Furuseth
d87ee20e0b Clean up strange fcntl result check
...and check !MDB_CLOEXEC in an 'if' rather than '#if'
to match its non-zero usage.
2016-09-25 08:12:56 +02:00
Hallvard Furuseth
3dd2d207d7 Drop spurious Errcode() call 2016-09-25 08:12:56 +02:00
Hallvard Furuseth
cdcf9da600 ITS#7682 F_NOCACHE: Allow error, skip any O_DIRECT
We can run without F_NOCACHE if it fails. And we do not know
what combining it with O_DIRECT means, if a system has both.
2016-09-25 08:12:56 +02:00
Hallvard Furuseth
26e226b2a8 Silence warning for initializer "mdb_copy my = {0}"
1st struct member was not a scalar.
2016-09-03 09:41:30 +02:00
Howard Chu
45a88275d2 ITS#8489 reset cursor EOF flag in cursor_set
It usually gets done anyway, but one of the fastpath shortcuts
bypassed this step.
2016-09-01 00:41:35 +01:00
Hallvard Furuseth
da4443a9b3 Clean up MDB_USE_ROBUST #defines
Make explicit and default nonzero equivalent. Parenthesize.
2016-08-21 23:22:18 +02:00
Hallvard Furuseth
36d374ba9e Fix mdb_page_list() message 2016-08-21 23:20:22 +02:00
Howard Chu
7e2290c52b MDB_VL32 plug rpage leak
mdb_cursor_set wasn't unref'ing as intended.
2016-08-11 21:30:56 +01:00
Hallvard Furuseth
77d522d151 Comment MDB_page 2016-08-02 22:17:54 +02:00