Commit 31460885 authored by unknown's avatar unknown

Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime

into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt50-merge


sql/sql_insert.cc:
  Auto merged
parents b60d2825 4393673c
...@@ -407,3 +407,22 @@ select if( @stamp1 = @stamp2, "correct", "wrong"); ...@@ -407,3 +407,22 @@ select if( @stamp1 = @stamp2, "correct", "wrong");
if( @stamp1 = @stamp2, "correct", "wrong") if( @stamp1 = @stamp2, "correct", "wrong")
correct correct
drop table t1; drop table t1;
connection: default
set low_priority_updates=1;
drop table if exists t1;
create table t1 (a int, b int, unique key t1$a (a));
lock table t1 read;
connection: update
set low_priority_updates=1;
show variables like 'low_priority_updates';
Variable_name Value
low_priority_updates ON
insert into t1 values (1, 2) ON DUPLICATE KEY UPDATE b = 2;;
connection: select
select * from t1;
a b
connection: default
select * from t1;
a b
drop table t1;
set low_priority_updates=default;
...@@ -306,3 +306,38 @@ insert into t1(f1) values(1) on duplicate key update f1=1; ...@@ -306,3 +306,38 @@ insert into t1(f1) values(1) on duplicate key update f1=1;
select @stamp2:=f2 from t1; select @stamp2:=f2 from t1;
select if( @stamp1 = @stamp2, "correct", "wrong"); select if( @stamp1 = @stamp2, "correct", "wrong");
drop table t1; drop table t1;
#
# Bug#28587 SELECT is blocked by INSERT waiting on read lock, even with low_priority_updates
#
--echo connection: default
set low_priority_updates=1;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (a int, b int, unique key t1$a (a));
lock table t1 read;
connect (update,localhost,root,,);
connection update;
--echo connection: update
set low_priority_updates=1;
show variables like 'low_priority_updates';
let $ID= `select connection_id()`;
--send insert into t1 values (1, 2) ON DUPLICATE KEY UPDATE b = 2;
connection default;
# we must wait till the insert opens and locks the table
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = "Locked" and id = $ID;
--source include/wait_condition.inc
connect (select,localhost,root,,);
--echo connection: select
select * from t1;
connection default;
--echo connection: default
select * from t1;
connection default;
disconnect update;
disconnect select;
drop table t1;
set low_priority_updates=default;
...@@ -397,7 +397,7 @@ void upgrade_lock_type(THD *thd, thr_lock_type *lock_type, ...@@ -397,7 +397,7 @@ void upgrade_lock_type(THD *thd, thr_lock_type *lock_type,
if (duplic == DUP_UPDATE || if (duplic == DUP_UPDATE ||
duplic == DUP_REPLACE && *lock_type == TL_WRITE_CONCURRENT_INSERT) duplic == DUP_REPLACE && *lock_type == TL_WRITE_CONCURRENT_INSERT)
{ {
*lock_type= TL_WRITE; *lock_type= TL_WRITE_DEFAULT;
return; return;
} }
......
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