Commit 061e01a0 authored by vasil's avatar vasil

Fix phantom reads (http://bugs.mysql.com/27197) following Heikki's

patch in the bug followup.

Approved by:	Heikki
parent e2374e8d
...@@ -3619,6 +3619,32 @@ shortcut_fails_too_big_rec: ...@@ -3619,6 +3619,32 @@ shortcut_fails_too_big_rec:
pcur, 0, &mtr); pcur, 0, &mtr);
pcur->trx_if_known = trx; pcur->trx_if_known = trx;
rec = btr_pcur_get_rec(pcur);
if (!moves_up
&& !page_rec_is_supremum(rec)
&& set_also_gap_locks
&& !(srv_locks_unsafe_for_binlog
|| trx->isolation_level == TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE) {
/* Try to place a gap lock on the next index record
to prevent phantoms in ORDER BY ... DESC queries */
offsets = rec_get_offsets(page_rec_get_next(rec),
index, offsets,
ULINT_UNDEFINED, &heap);
err = sel_set_rec_lock(page_rec_get_next(rec),
index, offsets,
prebuilt->select_lock_type,
LOCK_GAP, thr);
if (err != DB_SUCCESS) {
goto lock_wait_or_error;
}
}
} else { } else {
if (mode == PAGE_CUR_G) { if (mode == PAGE_CUR_G) {
btr_pcur_open_at_index_side( btr_pcur_open_at_index_side(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment