- Jul 12, 2013
-
-
Howard Chu authored
-
Howard Chu authored
-
Hallvard Furuseth authored
-
Howard Chu authored
-
Howard Chu authored
This avoids unnecessary rewrites of pages that do not change. (Restructuring for upcoming mdb_page_spill work.)
-
Hallvard Furuseth authored
TODO: Rename C_UNTRACK to C_TRACKED. Omitted now for readability. The current name is because it's lazy: not always set when tracked.
-
Hallvard Furuseth authored
(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.
-
Howard Chu authored
-
Howard Chu authored
-
Howard Chu authored
Commit d6d2638a broke read on zero-length files.
-
- Jul 10, 2013
-
-
Hallvard Furuseth authored
Nor uninited cursors' subcursors' page pointers.
-
Howard Chu authored
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.
-
Howard Chu authored
-
- Jul 09, 2013
-
-
Howard Chu authored
-
- Jul 07, 2013
-
-
Hallvard Furuseth authored
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.
-
Hallvard Furuseth authored
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.
-
Hallvard Furuseth authored
-
- Jul 06, 2013
-
-
Hallvard Furuseth authored
-
- Jul 02, 2013
-
-
Howard Chu authored
-
Howard Chu authored
Terminate loop on intermediate failures, return count of written items, document usage.
-
- Jul 01, 2013
-
-
Howard Chu authored
-
Howard Chu authored
-
- Jun 30, 2013
-
-
Howard Chu authored
-
- Jun 26, 2013
-
-
Hallvard Furuseth authored
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).
-
Hallvard Furuseth authored
-
Hallvard Furuseth authored
-
Hallvard Furuseth authored
-
- Jun 22, 2013
-
-
Hallvard Furuseth authored
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.
-
Hallvard Furuseth authored
Don't put a 64-bit filesize in a 32-bit int before shifting down. Always pass &sizehi to SetFilePointer->maxsize, so sizelo not is treated a signed distance. Hide unused vars when _WIN32. Reinitialize OVERLAPPED before reuse.
-
Hallvard Furuseth authored
-
Hallvard Furuseth authored
Grow midls earlier in order to catch errors earlier. Use mdb_midl_need() instead of mdb_midl_grow(), then mdb_midl_xappend() needs no error checks. Factor out mdb_midl_append_range().
-
Hallvard Furuseth authored
mdb_page_malloc(): Take a txn arg instead of a cursor.
-
Hallvard Furuseth authored
Split out mdb_dpage_free(), mdb_page_flush() and clean up.
-
- Jun 20, 2013
-
-
Hallvard Furuseth authored
Merge if() branches. Restore retry=500 when MDB_PARANOID, for clarity.
-
Hallvard Furuseth authored
MDB_env.me_pghead: Don't free it when empty. mdb_ovpage_free() needs it, but cannot allocate it. mdb_midl_alloc(): Fill in length=0. mdb_page_alloc(): Also Skip freeDB if txnid<3, instead of <4, and consistently DPRINTF consumed IDLs.
-
- Jun 17, 2013
-
-
- Jun 13, 2013
-
-
Hallvard Furuseth authored
Committing a nested txn lost the MDB_TXN_DIRTY flag in the parent, unless the child had set it too.
-
Hallvard Furuseth authored
When copying, round up/down to aligned sizes. Skip the unused portion, this was not done when touching a page dirty in the parent txn. No other change in behavior. Simplify mdb_page_touch(), including: Drop test m3==mc, the condition is caught below. Don't "modify" the parent's pgno into the same pgno, when a nested txn copies a parent's page into its freelist.
-
Hallvard Furuseth authored
The tracking code should not change the current cursor. It did when that was a C_SUB cursor, which should not be checked against the tracked cursors but their xcursors. However, do not bother to skip the tracking code for the current cursor when it would not change that cursor anyway.
-
Hallvard Furuseth authored
-