Commit 66060b0d authored by marko's avatar marko

branches/5.1: row_sel_get_clust_rec_for_mysql(): Store the cursor position

also for unlock_row().  (Bug #39320)

rb://96 approved by Heikki Tuuri.
parent e0281553
...@@ -38,3 +38,10 @@ a ...@@ -38,3 +38,10 @@ a
11 11
7 7
drop table t1; drop table t1;
create table t1 (a int, b int) engine=myisam;
create table t2 (c int, d int, key (c)) engine=innodb;
insert into t1 values (1,1);
insert into t2 values (1,2);
set session transaction isolation level read committed;
delete from t1 using t1 join t2 on t1.a = t2.c where t2.d in (1);
drop table t1, t2;
...@@ -53,3 +53,16 @@ drop table t1; ...@@ -53,3 +53,16 @@ drop table t1;
connection default; connection default;
disconnect a; disconnect a;
disconnect b; disconnect b;
# Bug 39320
create table t1 (a int, b int) engine=myisam;
create table t2 (c int, d int, key (c)) engine=innodb;
insert into t1 values (1,1);
insert into t2 values (1,2);
connect (a,localhost,root,,);
connection a;
set session transaction isolation level read committed;
delete from t1 using t1 join t2 on t1.a = t2.c where t2.d in (1);
connection default;
disconnect a;
drop table t1, t2;
...@@ -2901,8 +2901,9 @@ row_sel_get_clust_rec_for_mysql( ...@@ -2901,8 +2901,9 @@ row_sel_get_clust_rec_for_mysql(
func_exit: func_exit:
*out_rec = clust_rec; *out_rec = clust_rec;
if (prebuilt->select_lock_type == LOCK_X) { if (prebuilt->select_lock_type != LOCK_NONE) {
/* We may use the cursor in update: store its position */ /* We may use the cursor in update or in unlock_row():
store its position */
btr_pcur_store_position(prebuilt->clust_pcur, mtr); btr_pcur_store_position(prebuilt->clust_pcur, mtr);
} }
......
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