Commit Graph

846 Commits

Author SHA1 Message Date
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
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
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
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
cfedb365b4 Fix MDB_CURRENT updating for dupsort items 2013-01-26 18:55:35 +00:00
Hallvard Furuseth
7fdf672041 Update MDB comments: Caveats, flags, etc. 2013-01-16 18:42:57 +01:00
Howard Chu
8e7bb2042b ITS#7485 data sizes limited to 32 bits
That's all we have space for in a node record.
2013-01-15 04:28:47 -08:00
Howard Chu
1a0d02c4c4 ITS#7485 more size checks 2013-01-14 13:46:25 -08:00
Howard Chu
25a99d4024 ITS#7485 check maxkeysize in mdb_cursor_put
Also MDB_MAXKEYSIZE is redefinable at compile time.
2013-01-14 13:12:15 -08:00
Howard Chu
9e35127f1d One more rename
Forgot this in 98fe339089
2013-01-14 12:57:54 -08:00
Howard Chu
53cf2eed90 ITS#7491 check for filled dirty page list
Very large single transactions will fail. It's not just a problem when
nested transactions are used. We could make this dynamically sized,
but I'm not sure what the point is.
2013-01-11 11:45:25 -08:00
Howard Chu
fed573cb86 Happy New Year 2013-01-10 02:58:55 -08:00
Hallvard Furuseth
cd80a15474 Delete liblmdb/mfree. It has moved into mdb_stat. 2013-01-09 20:49:43 +01:00
Howard Chu
2a36346b50 ITS#7455 don't give up so soon
If we're operating on the freelist, see if our current pghead
can satisfy the request before giving up and using new pages.
2013-01-09 08:30:13 -08:00
Howard Chu
057e068630 Fix typo 2012-12-19 13:20:24 -08:00
Howard Chu
460a05bf78 Add initial mdb utility manpages 2012-12-19 13:09:56 -08:00
Howard Chu
82b97a8af0 init_meta should write mapsize
Was leaving it 0 initially.
2012-12-11 22:21:52 -08:00
Howard Chu
0702fbd688 Update version date 2012-12-11 16:01:25 -08:00
Howard Chu
9acf801cc1 Make sure init_meta is at beginning of file 2012-12-11 12:55:47 -08:00
Howard Chu
ed86a086f7 More for prev commit
Use the latest meta page
2012-12-11 12:46:17 -08:00
Howard Chu
e74d70e88e Partially revert 65d40eb5d2
Allow both increasing and decreasing the environment size.
But don't allow decreasing below the currently occupied space.
2012-12-11 12:03:19 -08:00
Howard Chu
282be11654 FIx prev commit 2012-12-10 17:21:24 -08:00
Howard Chu
0ce6bb4be0 Add error checks to txn_commit
These ops could fail if the map is full.
2012-12-10 12:21:36 -08:00
Howard Chu
aff2693fc0 ITS#7455 simplify
Don't try to reclaim overflow pages while operating on
the freelist (for now). The circular dependencies are much like
the single-page case, but worse. Maybe look into this in the
future, but it's not absolutely necessary now.
2012-12-10 12:16:50 -08:00
Howard Chu
e26fc73417 ITS#7467 add verbose freelist info 2012-12-07 13:19:36 -08:00
Howard Chu
784757faa9 ITS#7465 fail if both -a and -s specified 2012-12-07 12:06:30 -08:00
Howard Chu
9a5d4370be Yet more retries for overflow page scan 2012-12-06 17:39:49 -08:00
Howard Chu
5863d5cc61 Freelist fixes
Keep list sorted if it grows during a write. Don't free pghead until
we're sure our writes are all finished.
2012-12-06 09:05:30 -08:00
Howard Chu
7b10fdde00 Fix mdb_env_copy
Just write in 2^31 sized chunks
2012-12-04 06:30:22 -08:00
Howard Chu
04b7c42109 Rename mdb_open/close mdb_dbi_open/close
Avoid possible symbol clashes with MDB-Tools libmdb
2012-12-03 16:53:24 -08:00
Howard Chu
e545b742e5 Fix 5c1ee7f7ba
mdb_cursor_sibling() no longer pops cursor before returning.
2012-12-03 13:57:46 -08:00
Howard Chu
5af47adf6b Fix mdb_midl_shrink 2012-12-03 13:57:28 -08:00
Howard Chu
d3f51fdcf7 More retries for overflow page scan 2012-11-30 12:54:19 -08:00
Howard Chu
98fe339089 Rename libmdb to liblmdb 2012-11-30 12:45:34 -08:00