Howard Chu
bf0e97aa0e
ITS#7718 invalidate cursor when DB gets emptied
2013-10-08 04:43:58 -07:00
Howard Chu
d327a36ad8
Fix mdb_env_set_mapsize()
...
Don't allow shrinking below minimum size for an already open env.
2013-10-04 02:55:34 -07:00
Howard Chu
2520247ba1
ITS#7715 always set filesize for WRITEMAP
2013-10-04 02:46:38 -07:00
Hallvard Furuseth
9f7ae8925f
Add Caveat: Readers need write access. Whitespace.
2013-10-04 00:51:58 +02:00
Hallvard Furuseth
0f9b79e12c
Maintain MDB_cursor.mc_top
2013-10-04 00:32:35 +02:00
Hallvard Furuseth
99ea7669a3
mdb_cursor_sibling(): Fix error result
2013-10-03 23:59:25 +02:00
Hallvard Furuseth
8f075595a1
mdb_node_add(): Plug page leak when MDB_PAGE_FULL.
...
Do not fail after mdb_page_new() succeeds.
2013-10-03 23:59:25 +02:00
Hallvard Furuseth
3a1d73daff
Optimize code holding reader mutex
2013-10-03 23:59:24 +02:00
Hallvard Furuseth
3d67838a59
Set MDB_xcursor DB_DIRTY, clear md_name.
...
Both were unused and md_name was unmaintained -- except
mdb_cursor_touch(xcursor) would abuse md_name as a key to
touch MAIN_DBI if it could somehow get passed ! DB_DIRTY.
2013-10-03 23:59:24 +02:00
Hallvard Furuseth
07dc79a7c3
Set subDB DBI=parent DBI, fix MDB_DUPSORT delete.
...
xcursor DBIs were parent DBI+1 for debugging. Instead output
-(parent DBI). Fixes a crash in mdb_cursor_del0()'s xcursor
tracking, it forgot to subtract 1 for C_SUB cursors.
2013-10-03 23:59:24 +02:00
Howard Chu
79eac42c0f
s/MDB_NORDLOCK/MDB_NOLOCK/
...
Leave all lock management to the caller.
2013-10-03 10:26:44 -07:00
Howard Chu
a1685c3ef7
More doc for MDB_NORDLOCK
2013-10-01 23:36:57 -07:00
Howard Chu
f739940547
Add MDB_NORDLOCK to omit all reader table usage
...
Calling app wants to manage its own locking.
2013-10-01 13:16:38 -07:00
Hallvard Furuseth
e3f6c152c5
Drop unneeded code.
...
MDB_txn.mt_toggle: Use (mt_txnid & 1) instead.
Drop error checks which will be repeated.
mdb_cursor_set(): Turn assert into if/return to match the above.
mdb_cursor_del(): 'flags' are now used as bitflags.
2013-09-23 20:21:11 +02:00
Hallvard Furuseth
2980bd30f5
Clean up and simplify mdb_page_search().
...
Only named DBs can have DB_STALE, and they do not use MDB_PS_MODIFY.
Replace magic key values with flags. Drop duplicated comments at
mdb_page_search_root() vs. mdb_page_search(), and rephrase.
2013-09-23 20:21:11 +02:00
Hallvard Furuseth
31cfca9316
Tweak MDB_DEBUG output
2013-09-23 20:20:42 +02:00
Hallvard Furuseth
7bdb5be0b5
Rename SWAP() to avoid conflict with sqlightning.
...
Happened since sqlightning #includes mdb.c, midl.c.
2013-09-23 20:20:05 +02:00
Hallvard Furuseth
52cb8b3417
mdb_page_unspill(): Rename local vars.
...
The names have caused bugs, "txn" was treated as
the current transaction.
2013-09-23 20:13:27 +02:00
Hallvard Furuseth
8e1d10e828
ITS#7515 Fix mdb_page_unspill() in nested txn.
...
Malloc a page in this txn, not in a parent.
2013-09-23 20:13:27 +02:00
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