Commit 14876884 authored by jan's avatar jan

Port r100 from branches/5.0 to trunk.

parent eacc1b5d
--innodb_locks_unsafe_for_binlog=true
drop table if exists t1,t2;
create table t1 (id int not null, f_id int not null, f int not null,
primary key(f_id, id)) engine=innodb;
create table t2 (id int not null,s_id int not null,s varchar(200),
primary key(id)) engine=innodb;
INSERT INTO t1 VALUES (8, 1, 3);
INSERT INTO t1 VALUES (1, 2, 1);
INSERT INTO t2 VALUES (1, 0, '');
INSERT INTO t2 VALUES (8, 1, '');
commit;
DELETE ml.* FROM t1 AS ml LEFT JOIN t2 AS mm ON (mm.id=ml.id)
WHERE mm.id IS NULL;
select ml.* from t1 as ml left join t2 as mm on (mm.id=ml.id)
where mm.id is null lock in share mode;
id f_id f
drop table t1,t2;
-- source include/have_innodb.inc
#
# Note that these test work only on 5.0 because these test need
# innodb_locks_unsafe_for_binlog option implemented.
#
#
# Test cases for a bug #15650
#
--disable_warnings
drop table if exists t1,t2;
--enable_warnings
create table t1 (id int not null, f_id int not null, f int not null,
primary key(f_id, id)) engine=innodb;
create table t2 (id int not null,s_id int not null,s varchar(200),
primary key(id)) engine=innodb;
INSERT INTO t1 VALUES (8, 1, 3);
INSERT INTO t1 VALUES (1, 2, 1);
INSERT INTO t2 VALUES (1, 0, '');
INSERT INTO t2 VALUES (8, 1, '');
commit;
DELETE ml.* FROM t1 AS ml LEFT JOIN t2 AS mm ON (mm.id=ml.id)
WHERE mm.id IS NULL;
select ml.* from t1 as ml left join t2 as mm on (mm.id=ml.id)
where mm.id is null lock in share mode;
drop table t1,t2;
...@@ -3972,12 +3972,12 @@ cursor lock count is done correctly. See bugs #12263 and #12456! ...@@ -3972,12 +3972,12 @@ cursor lock count is done correctly. See bugs #12263 and #12456!
/* We have an optimization to save CPU time: if this is a consistent /* We have an optimization to save CPU time: if this is a consistent
read on a unique condition on the clustered index, then we do not read on a unique condition on the clustered index, then we do not
store the pcur position, because any fetch next or prev will anyway store the pcur position, because any fetch next or prev will anyway
return 'end of file'. An exception is the MySQL HANDLER command return 'end of file'. Exceptions are locking reads and the MySQL
where the user can move the cursor with PREV or NEXT even after HANDLER command where the user can move the cursor with PREV or NEXT
a unique search. */ even after a unique search. */
if (!unique_search_from_clust_index if (!unique_search_from_clust_index
|| prebuilt->select_lock_type == LOCK_X || prebuilt->select_lock_type != LOCK_NONE
|| prebuilt->used_in_HANDLER) { || prebuilt->used_in_HANDLER) {
/* Inside an update always store the cursor position */ /* Inside an update always store the cursor position */
......
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