Hallvard Furuseth
a3b3482854
ITS#7515 Fix mdb_txn_commit(nested txn with spills).
...
Catch malloc error.
Fix hunt for dirty vs spilled pages: Don't leave x at a deleted pageno.
Cleanup: Factor out variables, squash pages already marked for deletion.
2013-09-23 20:13:27 +02:00
Hallvard Furuseth
bc48a40621
ITS#7515 Fix mt_dirty_room in nested txns.
...
Fix description & code: Also ignore dirty pages hidden by
spilled pages, as they won't merge into our dirty_list.
Update it in mdb_page_flush() instead of mdb_page_spill().
2013-09-23 20:13:27 +02:00
Hallvard Furuseth
cfe262dce9
ITS#7515 mdb_pages_xkeep(): Careful about xcursors.
...
Don't prod sub-pages or pages referring to uninitialized xcursors.
2013-09-23 20:13:27 +02:00
Hallvard Furuseth
5b96d68faf
mdb_pages_xkeep(): Reformat, use common flag mask
2013-09-23 20:13:27 +02:00
Hallvard Furuseth
5b21307f29
Update MDB documentation and comments.
2013-09-23 20:09:47 +02:00
Hallvard Furuseth
3335b25834
ITS#7682 mdb_env_copy(): Avoid Linux O_DIRECT bug.
...
Use fcntl() to set the flag. Linux open(,O_DIRECT...) can create
the file even on failure, if the filesystem lacks O_DIRECT support.
2013-09-23 20:07:29 +02:00
Howard Chu
912e09fd04
ITS#7681 fix 18a07eb7c2
...
Set rc=0 when taking the SET_RANGE branch
2013-09-21 14:51:01 -07:00
Howard Chu
0144da6eab
ITS#7701 fix mdb_rebalance
...
Must copy tmp cursor back to real cursor when merging into tmp cursor.
2013-09-21 14:37:11 -07:00
Howard Chu
0f842a2710
Release 0.9.8
2013-09-09 08:29:46 -07:00
Howard Chu
7e58cc0fd3
updates
2013-09-05 16:23:49 -07:00
Salvador Ortiz
cfc13e2b48
ITS#7682 In mdb_env_copy retry open if O_DIRECT fails
2013-09-05 16:20:18 -07:00
Howard Chu
90c55178db
More for 5f6fa8c042
...
Reset delete flag in cursor_put().
2013-09-05 06:02:07 -07:00
Claude Brisson
18a07eb7c2
ITS#7681 fix mdb_cursor_set behaviour for MDB_SET_RANGE
2013-09-05 05:57:03 -07:00
Howard Chu
5f6fa8c042
Remember if last cursor op was a delete
...
If so, don't advance cursor on next NEXT. Also, init xcursor
on the next GET_CURRENT.
2013-09-03 16:10:20 -07:00
Howard Chu
3d59ca3558
Add a changelog
2013-08-28 20:22:41 -07:00
Howard Chu
5c5300c604
Bump version to 0.9.8
2013-08-28 19:17:25 -07:00
Howard Chu
2e7130cab0
Allow mdb_env_set_mapsize() on an open environment
...
The caller is responsible for making sure no transactions are
active in this process before resizing. This is slightly lighter
weight than doing a full env_close/env_open cycle.
2013-08-28 19:12:59 -07:00
Howard Chu
2a28686e4f
ITS#7672 fix mdb_dbi_flags
...
Use a txn instead of env argument. Only return persistent flags.
2013-08-27 06:28:30 -07:00
Hallvard Furuseth
4dd10d70a5
mdb_page_unspill(): Fix dirty_room in nested txn
2013-08-25 23:59:58 +02:00
Howard Chu
56c2a8d04a
Another take on spill_pgs and deletes
2013-08-24 20:37:45 +01:00
Howard Chu
b917266ca1
Cleanup prev commit
2013-08-24 11:54:05 -07:00
Howard Chu
41bf5c906a
Speedup deletion from spill_pgs
2013-08-24 19:51:47 +01:00
Howard Chu
6423c87749
ITS#7671 always return the key for a dup val
2013-08-23 07:36:07 -07:00
Howard Chu
e15a90c762
ITS#7670 Tweak cursor_del0
...
Always leave cursor pointing at "next" node, if any.
Find next sibling if we're already at end of current page.
2013-08-23 04:55:41 -07:00
Hallvard Furuseth
6616034eb9
mdb_page_spill(): Fix nested txn mt_dirty_room
2013-08-23 13:52:35 +02:00
Hallvard Furuseth
392be3a7c6
Simplify last commits
2013-08-23 13:52:35 +02:00
Howard Chu
45c4ed1805
Tweak prev commit
...
If somehow "need" is larger than the list size, don't
try to fake out the dirty list.
2013-08-22 21:29:53 -07:00
Howard Chu
7b1db13050
Less aggressive page_spill
...
spilling all possible pages is a waste because the majority will be
needed again. Just do 1/8th of the dirty list instead.
2013-08-22 18:51:48 -07:00
Howard Chu
c22a7d98ec
Update caveats now that mdb_reader_check exists
2013-08-20 17:37:53 -07:00
Howard Chu
214e9ed07d
Silence warnings
2013-08-14 09:57:25 -07:00
Hallvard Furuseth
82b27c09c9
Tweak ITS#7615 fix: Obey strict-aliasing rules.
...
Do not access a long long as an array of longs.
2013-08-14 15:21:59 +02:00
Howard Chu
76f0a02485
ITS#7664 better fix
...
For RDONLY, don't get lockfile until we know datafile exists.
Also, don't try to create a new datafile for me_mfd if someone
deleted it after we got me_fd.
2013-08-13 13:12:47 -07:00
Howard Chu
a77ffaaa5d
Revert "ITS#7664 delete lockfile if there is no environment"
...
This reverts commit 8725838409
.
2013-08-13 13:05:32 -07:00
Howard Chu
8725838409
ITS#7664 delete lockfile if there is no environment
2013-08-13 11:34:32 -07:00
Howard Chu
eaeeecc3b2
Fix uninit'd mem ref in mdb_page_split
...
Don't compare cursors beyond their depth. (detected by valgrind)
2013-08-12 12:43:42 -07:00
Howard Chu
6ecee1cbf9
Tweak NODUPDATA flag check
...
Should allow for the possibility of future flag combos.
2013-08-11 17:25:00 -07:00
Howard Chu
5a5d33ff33
Fix obscure MDB_MULTIPLE bug
...
If a key has a single existing value, and then a put (MDB_MULTIPLE)
is done where the first of the multiple values matches the existing
value, the put would return SUCCESS without writing any of the
values. Fixed to loop to the next value as intended.
2013-08-11 17:15:03 -07:00
Howard Chu
76f8b77e36
Point to mdb.c for docs on macros in Makefile
2013-08-10 16:19:44 -07:00
Hallvard Furuseth
9c49ef1d71
Avoid compiling debug args with C90 compilers.
...
Use double DPRINTF() parenthesis, so varargs macros are not needed.
Parenthesize MDB_DEBUG, in case the user defines it as foo || bar.
2013-08-10 13:50:10 +02:00
Hallvard Furuseth
76d31573a4
Refuse ops on bad txns
2013-08-10 13:23:30 +02:00
Hallvard Furuseth
9beea541e1
Replace EINVALs with generalized MDB_INCOMPATIBLE.
...
Also check xcursor instead of DUPSORT, it's slightly briefer.
2013-08-10 13:23:30 +02:00
John Hewson
ef899fe84e
ITS#7656 fix install target
2013-08-10 04:13:24 -07:00
Salvador Ortiz
86551828ab
ITS#7660 Add mdb_txn_env to API
2013-08-10 04:06:16 -07:00
Hallvard Furuseth
5645812f41
mdb_txn_commit(): Always commit if MDB_TXN_SPILLS.
...
Checking dirty_list was insufficient after a spill
with no named databases and no positioned cursors.
2013-08-10 12:29:45 +02:00
Salvador Ortiz
92eb220184
ITS#7661 mdb_dbi_flags(): Allow main DBI
2013-08-10 09:42:19 +02:00
Salvador Ortiz
335f0e4cee
mdb_del must ignore data if db not opened with MDB_DUPSORT
2013-08-09 09:05:44 -07:00
Howard Chu
1ac3c8308f
Add mdb_env_get_maxkeysize()
2013-08-09 04:51:33 -07:00
Hallvard Furuseth
1ecd86b14c
Replace unpredictable EINVAL error returns.
...
Return EINVAL only for simple programmer errors.
2013-08-09 13:05:14 +02:00
Hallvard Furuseth
22c104c5d7
Re-fix reader-pid code
2013-08-09 12:54:42 +02:00
Hallvard Furuseth
38b11b1de1
mdb_cursorpages_mark: Mark current txn and no more.
...
Ignore parent txn cursors since it is the current txn's dirty_list
which will be flushed. But check the current txn also when clearing,
since cursors can have pages which are dirty in a parent.
Check !mc_xcursor instead of !MDB_DUPSORT. Equivalent for valid
data, but a bit safer if the sub-DB flags are corrupt.
2013-08-08 19:57:52 +02:00