merge with the main 5.1-bugteam
This commit is contained in:
commit
48a40e2ee5
@ -1,3 +1,5 @@
|
||||
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||
set @@global.concurrent_insert= 0;
|
||||
flush status;
|
||||
show status like 'Table_lock%';
|
||||
Variable_name Value
|
||||
@ -7,22 +9,31 @@ select * from information_schema.session_status where variable_name like 'Table_
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
TABLE_LOCKS_IMMEDIATE 2
|
||||
TABLE_LOCKS_WAITED 0
|
||||
SET SQL_LOG_BIN=0;
|
||||
# Switched to connection: con1
|
||||
set sql_log_bin=0;
|
||||
set @old_general_log = @@global.general_log;
|
||||
set global general_log = 'OFF';
|
||||
drop table if exists t1;
|
||||
create table t1(n int) engine=myisam;
|
||||
insert into t1 values(1);
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
# Switched to connection: con2
|
||||
lock tables t1 read;
|
||||
unlock tables;
|
||||
lock tables t1 read;
|
||||
# Switched to connection: con1
|
||||
update t1 set n = 3;
|
||||
# Switched to connection: con2
|
||||
unlock tables;
|
||||
# Switched to connection: con1
|
||||
show status like 'Table_locks_waited';
|
||||
Variable_name Value
|
||||
Table_locks_waited 1
|
||||
drop table t1;
|
||||
set global general_log = @old_general_log;
|
||||
# Switched to connection: default
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
@ -198,3 +209,4 @@ ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table '
|
||||
drop database db37908;
|
||||
drop procedure proc37908;
|
||||
drop function func37908;
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
@ -4,6 +4,11 @@
|
||||
# embedded server causes different stat
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# Disable concurrent inserts to avoid sporadic test failures as it might
|
||||
# affect the the value of variables used throughout the test case.
|
||||
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||
set @@global.concurrent_insert= 0;
|
||||
|
||||
# PS causes different statistics
|
||||
--disable_ps_protocol
|
||||
|
||||
@ -12,54 +17,45 @@ connect (con2,localhost,root,,);
|
||||
|
||||
flush status;
|
||||
|
||||
# Logging to the general query log table (--log-output=table --log) increments
|
||||
# Table_locks_immediate with each query, so here Immediate becomes 1
|
||||
show status like 'Table_lock%';
|
||||
# ++Immediate = 2
|
||||
select * from information_schema.session_status where variable_name like 'Table_lock%';
|
||||
|
||||
connection con1;
|
||||
# ++Immediate = 3
|
||||
SET SQL_LOG_BIN=0;
|
||||
set @old_general_log = @@global.general_log;
|
||||
--echo # Switched to connection: con1
|
||||
set sql_log_bin=0;
|
||||
set @old_general_log = @@global.general_log;
|
||||
set global general_log = 'OFF';
|
||||
--disable_warnings
|
||||
# ++Immediate = 4
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
# ++Immediate = 5
|
||||
create table t1(n int) engine=myisam;
|
||||
# Immediate + 2 = 7
|
||||
insert into t1 values(1);
|
||||
# Execute dummy select in order to ensure that tables used in the
|
||||
# previous statement are unlocked and closed.
|
||||
select 1;
|
||||
|
||||
connection con2;
|
||||
# Immediate + 2 = 9
|
||||
--echo # Switched to connection: con2
|
||||
lock tables t1 read;
|
||||
# ++Immediate = 10
|
||||
unlock tables;
|
||||
# Immediate + 2 = 12
|
||||
lock tables t1 read;
|
||||
|
||||
connection con1;
|
||||
# ++Immediate = 13
|
||||
--echo # Switched to connection: con1
|
||||
let $ID= `select connection_id()`;
|
||||
# ++Immediate = 14 (Not +2, because this increments Table_locks_waited)
|
||||
--send
|
||||
update t1 set n = 3;
|
||||
--send update t1 set n = 3
|
||||
|
||||
connection con2;
|
||||
--echo # Switched to connection: con2
|
||||
# wait for the other query to start executing
|
||||
let $wait_condition= select 1 from INFORMATION_SCHEMA.PROCESSLIST where ID = $ID and STATE = "Locked";
|
||||
# Immediate = 14 + $wait_condition_reps ($wait_timeout is 0, so no extra select
|
||||
# is done inside wait_condition.inc)
|
||||
--source include/wait_condition.inc
|
||||
# ++Immediate = 15 + $wait_condition_reps
|
||||
unlock tables;
|
||||
|
||||
connection con1;
|
||||
--echo # Switched to connection: con1
|
||||
reap;
|
||||
# ++Immediate = 16 + $wait_condition_reps
|
||||
show status like 'Table_locks_waited';
|
||||
drop table t1;
|
||||
set global general_log = @old_general_log;
|
||||
@ -67,6 +63,7 @@ set global general_log = @old_general_log;
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
--echo # Switched to connection: default
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
@ -295,3 +292,7 @@ drop database db37908;
|
||||
drop procedure proc37908;
|
||||
drop function func37908;
|
||||
# End of 5.1 tests
|
||||
|
||||
# Restore global concurrent_insert value. Keep in the end of the test file.
|
||||
--connection default
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
@ -3720,8 +3720,9 @@ void assign_new_table_id(TABLE_SHARE *share)
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
/* Cause a spurious statement reprepare for debug purposes. */
|
||||
static inline bool inject_reprepare(THD *thd)
|
||||
static bool inject_reprepare(THD *thd)
|
||||
{
|
||||
if (thd->m_reprepare_observer && thd->stmt_arena->is_reprepared == FALSE)
|
||||
{
|
||||
@ -3731,6 +3732,7 @@ static inline bool inject_reprepare(THD *thd)
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
Compare metadata versions of an element obtained from the table
|
||||
|
Loading…
x
Reference in New Issue
Block a user