Howard Chu
4f4590f110
Merge remote-tracking branch 'origin/mdb.master'
2013-07-28 17:13:04 -07:00
Howard Chu
acf20f77f3
Tweak mdb_envinfo numreaders
...
Return the actual shared reader count when it exists, not
just the current process env's reader count.
2013-07-28 17:02:51 -07:00
Howard Chu
e8ba9dbd28
ITS#7615 use shorter names for semaphores
...
NetBSD can only handle up to 14 chars, we were using 21. Now
we encode to 15, and for NetBSD truncate the last char.
2013-07-26 10:19:54 -07:00
Howard Chu
96bf741367
Merge remote-tracking branch 'origin/mdb.master'
2013-07-19 10:02:24 -07:00
Howard Chu
de72c08660
Tweak reader_pid check
...
Check again after acquiring rmutex. Avoids potential issue with
a duplicate pid coming in between initial check and rmutex.
2013-07-19 09:57:33 -07:00
Howard Chu
b1dc72b6b5
Get pid lock outside of rmutex
...
Avoid holding rmutex for longer than necessary.
2013-07-19 09:55:10 -07:00
Howard Chu
dfa993c14f
Merge remote-tracking branch 'origin/mdb.master'
2013-07-18 15:25:29 -07:00
Howard Chu
5ca73f864f
Tweak reader checks
...
Use mti_numreaders for loop limit, not me_maxreaders.
2013-07-18 15:24:09 -07:00
Howard Chu
2a63c76d51
Merge remote-tracking branch 'origin/mdb.master'
2013-07-18 11:09:05 -07:00
Howard Chu
a4bbe57f8b
Add mdb_reader_check()
2013-07-18 10:47:29 -07:00
Howard Chu
4d7c9e5bca
Split MDB_VERSION to MDB_DATA/MDB_LOCK VERSION
2013-07-18 09:11:09 -07:00
Howard Chu
68a0adc59f
Tweak reader_list
2013-07-18 09:00:51 -07:00
Howard Chu
360d0492db
Tweak mdb_stat(1)
...
Don't obtain reader txn before displaying reader table. Exit
after reader table if no other DB query options were given.
2013-07-18 08:33:24 -07:00
Howard Chu
49289f0d2e
Add mdb_reader_list()
...
Dump the active slots in the reader table.
2013-07-18 07:45:12 -07:00
Howard Chu
fc137e39a3
Add mdb_dbi_flags()
...
Retrieve the flags from a DB handle.
2013-07-15 10:57:13 -07:00
Howard Chu
f383396a10
Merge remote-tracking branch 'origin/mdb.master'
2013-07-14 17:20:14 -07:00
Howard Chu
501eac2fc4
Fix child txn dirty_room counts in spill/unspill
...
Don't count pages twice if they're already accounted in an ancestor txn.
2013-07-14 16:53:04 -07:00
Howard Chu
2c3488aeeb
More for stale sub-cursor flags
...
Same fix for cursor_first/last.
2013-07-14 08:28:26 -07:00
Howard Chu
56a41d87d4
Fix stale sub-cursor C_INIT flag
...
Whenever we enter cursor_set() the sub-cursor's flag must be
cleared. If the new cursor position has valid subdata it will
be initialized again, if not then the sub-cursor has nothing
to point to.
2013-07-14 08:20:18 -07:00
Howard Chu
8ae56c34d5
Tweak comments, defaults should be OK already
2013-07-12 13:55:18 -07:00
Howard Chu
fa7228962b
Bump version to 0.9.7
2013-07-12 13:36:05 -07:00
Howard Chu
79ac4cb361
Merge remote-tracking branch 'origin/mdb.master'
2013-07-12 13:23:45 -07:00
Hallvard Furuseth
f04dc0ebd2
Also set/clear P_KEEP in parent txn's cursors
2013-07-12 13:17:04 -07:00
Howard Chu
e9ed4d75f7
Spill pages, take 3
2013-07-12 13:17:04 -07:00
Howard Chu
d7bc4baf63
Delay touching pages until cursor is positioned.
...
This avoids unnecessary rewrites of pages that do not change.
(Restructuring for upcoming mdb_page_spill work.)
2013-07-12 13:17:04 -07:00
Hallvard Furuseth
c09db5757d
Simplify: Always set C_UNTRACK for tracked cursors.
...
TODO: Rename C_UNTRACK to C_TRACKED. Omitted now for readability.
The current name is because it's lazy: not always set when tracked.
2013-07-12 13:17:04 -07:00
Hallvard Furuseth
6741f9c0ef
Save freelist using proper mdb_cursor_put().
...
(Restructuring for upcoming mdb_page_spill work.)
mdb_freelist_save() can't just Get() the destination, since
mdb_page_spill() may have put the destination in the read-only map.
TODO: Can this new put() modify the freelist, which would break it? The
final iteration's put() can shorten the node, the rest uses MDB_CURRENT.
We could set P_KEEP on dirty freeDB leaves and ovpages, since they are
all about to be modified. But the code in this commit must stay anyway,
if mdb should support dropping a 256G DB. I.e. too big for dirty_list.
2013-07-12 13:17:04 -07:00
Howard Chu
08373439a6
Move code out to mdb_page_dirty()
2013-07-12 13:17:04 -07:00
Howard Chu
87a7f06feb
Factor out parent
2013-07-12 13:17:04 -07:00
Howard Chu
ba6dfe0bbb
Fix env_read_header() on Windows
...
Commit d6d2638acc
broke read
on zero-length files.
2013-07-12 12:55:08 -07:00
Hallvard Furuseth
3d46d5502a
Do not follow uninited cursors' page pointers.
...
Nor uninited cursors' subcursors' page pointers.
2013-07-10 22:11:44 +02:00
Howard Chu
b711c07f34
Fix rebalance/cursor adjust
...
When collapsing root, must also move cursor index down,
not just the page pointer.
Also in mtest, break from NEXT loops on error, otherwise it just
prints the previous key/data again, which looks confusing.
2013-07-10 11:04:37 -07:00
Howard Chu
f81eb631ff
Cursors: Clear C_EOF when clearing C_INITIALIZED
2013-07-10 08:49:29 -07:00
Howard Chu
64676da8d9
Fixup other cursors after delete op
2013-07-09 14:21:35 -07:00
Hallvard Furuseth
a77767013a
ITS#7515 Reject conflicting page versions.
...
If mdb_page_touch() sees a page in txn's dirty_list, that
is the page version txn's cursors should have. Fail if
the user may be seeing and depending on another version.
2013-07-07 17:14:38 +02:00
Hallvard Furuseth
be47ca7667
ITS#7515 Fix tracking of parent txn's cursors.
...
Restore mc_flags and xcursors, they were tracked but not merged.
Simplify: Track parent txn's original cursors after backing them
up, instead of tracking copies and merging them back at commit.
2013-07-07 17:13:27 +02:00
Hallvard Furuseth
9be6af0dcb
Simplify MDB_cursor: Drop flags C_ALLOCD,C_SHADOW.
2013-07-07 17:13:27 +02:00
Hallvard Furuseth
3d1e709504
Silence more uninit warnings
2013-07-06 21:42:45 +02:00
Howard Chu
06a3ad08cd
Silence uninit warning in prev commit
2013-07-02 02:23:49 -07:00
Howard Chu
589370d880
Tweaks for MDB_MULTIPLE
...
Terminate loop on intermediate failures, return count of written items,
document usage.
2013-07-02 02:19:17 -07:00
Howard Chu
60720f5d9c
Merge remote-tracking branch 'origin/mdb.master'
2013-07-01 14:55:25 -07:00
Howard Chu
fb674c1cf5
ITS#7635 simplify 9474c1a0b6
2013-07-01 14:53:29 -07:00
Howard Chu
8442047d2d
Merge remote-tracking branch 'origin/mdb.master'
2013-07-01 14:31:57 -07:00
Howard Chu
9474c1a0b6
ITS#7635 fix read txn potential data race
2013-07-01 13:41:23 -07:00
Howard Chu
3347a02905
Fix uninit warnings, lseek usage
2013-06-30 07:40:02 -07:00
Hallvard Furuseth
7f67383552
Fix alloc/free issues.
...
Page leak, mdb_page_alloc(). On error, don't shorten me_pghead.
Memleak, mdb_ovpage_free(). Free page or keep it in dirty_list.
Bad MIDL, mdb_midl_need(). Fix midl[-1] (allocated size).
2013-06-26 18:02:52 +02:00
Hallvard Furuseth
12c558fe13
Factor out some vars, simplify.
2013-06-26 18:02:48 +02:00
Hallvard Furuseth
b7ce06f5c5
Makefile/user-macro comments.
2013-06-26 18:02:26 +02:00
Hallvard Furuseth
26a25df5fc
Tweak I/O, fix last commit.
2013-06-26 18:02:17 +02:00
Hallvard Furuseth
d6d2638acc
Improve MDB error handling, drop seek calls.
...
Catch I/O errors. Do nothing between OS call failure and ErrCode().
Do not use errno after non-OS-errors like write() >= 0, which could
give a failure return of success (errno 0) or some irrelevant error
code. Drop seek calls, use pwrite/pread/Windows OVERLAPPED offset.
2013-06-22 23:15:10 +02:00