ITS#7515 Reject conflicting page versions.

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.
This commit is contained in:
Hallvard Furuseth 2013-07-07 17:14:38 +02:00
parent be47ca7667
commit a77767013a

View File

@ -1560,9 +1560,10 @@ mdb_page_touch(MDB_cursor *mc)
if (dl[0].mid) {
unsigned x = mdb_mid2l_search(dl, pgno);
if (x <= dl[0].mid && dl[x].mid == pgno) {
np = dl[x].mptr;
if (mp != np)
mc->mc_pg[mc->mc_top] = np;
if (mp != dl[x].mptr) { /* bad cursor? */
mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
return MDB_CORRUPTED;
}
return 0;
}
}