Howard Chu
334ca55089
Merge remote-tracking branch 'origin/mdb.master'
2013-03-12 17:34:40 -07:00
Howard Chu
77001f549b
ITS#7538 fallout from ITS#7536 fix.
...
Allow leaf pages to have only 1 key.
2013-03-12 17:29:34 -07:00
Howard Chu
3247d7cbd6
Precalculate max size of a node
2013-03-12 17:25:49 -07:00
Howard Chu
8c1d95a438
Fix f97552a83a
...
Causes Bus Error on SPARC
2013-03-11 10:28:25 -07:00
Howard Chu
f80171e079
Check for MADV_RANDOM
...
Android supports madvise but not posix_madvise
2013-03-11 06:04:54 -07:00
Howard Chu
9c4ee82297
ITS#7377 Fix c0f3d9b9a8
...
Add missing parens
2013-03-11 05:59:07 -07:00
Howard Chu
b1da555c4c
Turn off readahead on main mmap
...
It's harmful when the DB is larger than RAM.
2013-03-11 05:49:14 -07:00
Howard Chu
8289ac3b5c
Merge remote-tracking branch 'origin/mdb.master'
2013-03-06 15:50:47 -08:00
Howard Chu
d74330128a
ITS#7536 fix mdb_rebalance
...
A page must always have at least 2 keys (unless it's a root page)
2013-03-06 15:10:22 -08:00
Howard Chu
6dab37f2ac
Use CC/LDFLAGS to link the shared lib
2013-02-25 05:06:51 -08:00
Howard Chu
d8b407d9a2
Install manpages too
2013-02-25 02:02:15 -08:00
Howard Chu
26e4222ffb
Delete obsolete @todo
...
We do it now... (coalescing freelist entries in page_alloc)
2013-02-24 23:43:36 -08:00
Howard Chu
58e27b6c20
Add sample apps for comparison/education purposes
2013-02-24 23:43:18 -08:00
Howard Chu
66c9f03055
Add $(DESTDIR) to make install target
2013-02-25 06:50:51 +00:00
Howard Chu
f839815778
Merge remote-tracking branch 'origin/mdb.master'
2013-02-21 05:20:20 +00:00
Howard Chu
3394bac2c0
Update error code instances
2013-02-20 05:08:52 -08:00
Hallvard Furuseth
80cd881184
Tweak MDB_INCOMPATIBLE description
2013-02-20 12:19:45 +01:00
Hallvard Furuseth
fbd76c44e4
Tweak prev commit: Restore if-test as an assert
2013-02-20 09:08:41 +01:00
Hallvard Furuseth
208e5c614d
ITS#7515 Fix mdb_txn_commit(nested txn).
...
Don't modify the parent txn until the current txn cannot fail.
Don't assume new dirty child pgnos > dirty parent pgnos.
Page alloc/touch: Fail if child+parent dirty pages would exceed
dirty_list's maxsize. Avoids an error situation in commit.
2013-02-19 18:44:10 -08:00
Hallvard Furuseth
f43ae20be7
ITS#7512 Plug mdb_txn_abort(nested txn) page leaks.
...
Also catch mdb_cursor_shadow() errors.
2013-02-19 22:03:04 +01:00
Hallvard Furuseth
f97552a83a
Check DB flags when refreshing a stale MDB DBI.
...
It's hairy to figure out when a DBI is valid. Catch destructive
user errors, and flags which another process changed under us.
2013-02-19 22:02:37 +01:00
Hallvard Furuseth
2dbb8bb833
mdb_cursor_prev,mdb_cursor_next: Fix return value.
...
Return mdb_node_read()'s return value if it fails, not 1.
(Can happen if mdb_page_get() fails and NDEBUG is #defined.)
2013-02-19 22:02:15 +01:00
Hallvard Furuseth
e4af9ee5da
ITS#7515 mdb_dbi_open(): Also open in parent txns.
...
This makes aborting nested and non-nested txns more
similar: The new DBI is available to the surrounding
context (parent txn and MDB_env respectively).
2013-02-19 22:01:29 +01:00
Hallvard Furuseth
4b67270374
mdb_page_alloc(): Handle freeDB txnid range holes.
...
A txn writes no freeDB entry if previous txn dropped mainDB and a read
txn prevents freelist entry reuse. This surprised mdb_page_alloc (and
mdb_txn_commit too before 65c053a6e7 ).
2013-02-19 21:17:33 +01:00
Hallvard Furuseth
f19655eabc
ITS#7517 Document that dirty DBs may not be closed
2013-02-19 21:15:26 +01:00
Hallvard Furuseth
8ad25001ff
ITS#7485 Document key/data size limits in lmdb.h.
...
mdb.c already describes them. The user doc should too.
2013-02-19 21:14:23 +01:00
Hallvard Furuseth
ef25056cfb
Revert "ITS#7515 update parent's mt_next_pgno on child commit"
...
This reverts commit fd4861bf00 .
It duplicated earlier code.
2013-02-17 08:42:14 +01:00
Howard Chu
fd4861bf00
ITS#7515 update parent's mt_next_pgno on child commit
2013-02-17 00:49:53 +00:00
Howard Chu
890f1da3ee
Don't limit retries when coalescing freelist
...
Try to use whatever's available.
2013-02-17 00:48:43 +00:00
Hallvard Furuseth
00d7a96bd5
ITS#7515 Fix MDB parent/child txn interaction.
...
mdb_txn_commit(child): Copy more state. Copy all of mt_dbs:
Include mainDB, and even freeDB since mdb_drop() can update
it. Don't skip DBs with unchanged root, this could break
when the new was newly opened and the old unused junk.
mdb_page_get(): Search parents' dirty lists.
2013-02-16 19:11:20 +01:00
Hallvard Furuseth
d90581fa5a
ITS#7377 Catch MDB failure updating root pointers.
...
"cannot fail" was wrong, it fails at least when exceeding mapsize.
2013-02-16 19:08:54 +01:00
Hallvard Furuseth
c7db955a94
ITS#7517 Don't save dropped dirty MDB databases.
...
mdb_txn_commit's attempt to save the DB could corrupt another DB if
another thread had called mdb_dbi_open and reused the closed DBI.
2013-02-16 19:08:37 +01:00
Hallvard Furuseth
8e1bbdf0dd
mdb_stat -ff[f]: show contiguous page spans.
2013-02-16 19:07:16 +01:00
Hallvard Furuseth
7aba5f5ab9
Add error code MDB_MAP_RESIZED.
2013-02-16 19:06:28 +01:00
Howard Chu
c6a4982793
More for ITS#7455
...
Don't memmove freelist entry when chunking it. Just advance the pointer,
now that it's no longer a complex struct. Also just calculate maxfree_1pg
at startup; it's a constant during runtime.
2013-02-15 13:33:50 +00:00
Hallvard Furuseth
1f953c5559
ITS#7455 Save freelist in single-page chunks
2013-02-15 13:33:50 +00:00
Hallvard Furuseth
7cacc0ec81
Freelist cleanup/streamlining
...
Drop unneeded definitions, redundant code.
2013-02-15 13:33:49 +00:00
Howard Chu
5e59695b8d
Don't memmove freelist entry when chunking it
...
Just advance the pointer, now that it's no longer a complex struct
2013-02-15 13:27:50 +00:00
Hallvard Furuseth
52ecd38e18
ITS#7455 Save freelist in single-page chunks
2013-02-15 13:27:50 +00:00
Hallvard Furuseth
1b8bfc5756
Freelist cleanup/streamlining
...
Drop unneeded definitions, redundant code.
2013-02-15 13:27:02 +00:00
Howard Chu
9ac070beb3
Merge remote-tracking branch 'origin/mdb.master'
2013-02-07 18:30:58 +00:00
Hallvard Furuseth
65c053a6e7
ITS#7512 Fix MDB page leak when malloc error.
...
mdb_page_alloc(): Delay moving me_pgfirst,me_pglast
until malloc(MDB_oldpages to hold the IDs) succeeds.
2013-02-07 08:17:30 +01:00
Howard Chu
e0eb495fb3
Revert "ITS#7515 fix mdb_dbi_open/close"
...
This reverts commit 48dc782ea6 .
2013-02-04 10:53:17 -08:00
Howard Chu
744e311939
NULL key is allowed for MDB_CURRENT
2013-02-01 06:19:23 -08:00
Howard Chu
48dc782ea6
ITS#7515 fix mdb_dbi_open/close
...
If a DBI handle is opened by a txn that aborts, the DBI handle
should no longer be valid.
2013-01-31 20:05:48 -08:00
Quanah Gibson-Mount
bc4e47a5a4
Merge remote branch 'origin/mdb.master'
2013-01-31 16:46:55 -08:00
Howard Chu
27aaecc744
ITS#7511 make sure cursor is marked valid after successful put
2013-01-28 18:45:36 -08:00
Howard Chu
9fa0c3bf31
ITS#7505 fix prev commit, partial revert
2013-01-29 01:08:24 +00:00
Howard Chu
0b8ac92b7a
ITS#7505 Fix mdb_update_key when key is too big
2013-01-27 18:02:18 +00:00
Howard Chu
1c581612f7
Merge remote-tracking branch 'origin/mdb.master'
2013-01-26 18:56:29 +00:00