summaryrefslogtreecommitdiff
path: root/mysql-test/t/sp_notembedded.test
diff options
context:
space:
mode:
authorunknown <davi@mysql.com/endora.local>2008-03-13 14:54:29 -0300
committerunknown <davi@mysql.com/endora.local>2008-03-13 14:54:29 -0300
commit416ab8532e6ee39de48c75aca49aa665cc8d2a2a (patch)
treec18a39185f2e499114d9d78dd56f60c9ad21d23c /mysql-test/t/sp_notembedded.test
parent054341a6d07110dac1d05f023abd98bf7eaad39e (diff)
downloadmariadb-git-416ab8532e6ee39de48c75aca49aa665cc8d2a2a.tar.gz
Bug#34891 sp_notembedded.test fails sporadically
The problem is that since MyISAM's concurrent_insert is on by default some concurrent SELECT statements might not see changes made by INSERT statements in other connections, even if the INSERT statement has returned. The solution is to disable concurrent_insert so that INSERT statements returns after the data is actually visible to other statements. mysql-test/r/flush_read_lock_kill.result: Restore old value of @@global.concurrent_insert mysql-test/r/kill.result: Restore old value of @@global.concurrent_insert mysql-test/r/sp_notembedded.result: Update test case result mysql-test/t/flush_read_lock_kill.test: Restore old value of @@global.concurrent_insert so it doesn't affect other tests. mysql-test/t/kill.test: Restore old value of @@global.concurrent_insert so it doesn't affect other tests. mysql-test/t/sp_notembedded.test: Disable and restore concurrent_insert value at the end of the test case. The test case for Bug 29936 requires that the inserted rows need to be visible before a SELECT statement is queued in another connection. Remove sleep at the start of the test, it's not necessary to log the result of the processlist command, showing the warnings has the same end result.
Diffstat (limited to 'mysql-test/t/sp_notembedded.test')
-rw-r--r--mysql-test/t/sp_notembedded.test141
1 files changed, 75 insertions, 66 deletions
diff --git a/mysql-test/t/sp_notembedded.test b/mysql-test/t/sp_notembedded.test
index 4e298b2076a..16ebb710f25 100644
--- a/mysql-test/t/sp_notembedded.test
+++ b/mysql-test/t/sp_notembedded.test
@@ -1,7 +1,9 @@
# Can't test with embedded server
-- source include/not_embedded.inc
+# Disable concurrent inserts to avoid test failures
+set @old_concurrent_insert= @@global.concurrent_insert;
+set @@global.concurrent_insert= 0;
---sleep 2
--disable_warnings
drop table if exists t1,t3;
--enable_warnings
@@ -39,10 +41,14 @@ create procedure bug4902_2()
begin
show processlist;
end|
---replace_column 1 # 6 # 3 localhost
+--disable_result_log
call bug4902_2()|
---replace_column 1 # 6 # 3 localhost
+--enable_result_log
+show warnings|
+--disable_result_log
call bug4902_2()|
+--enable_result_log
+show warnings|
drop procedure bug4902_2|
#
@@ -268,69 +274,72 @@ drop procedure 15298_1;
drop procedure 15298_2;
#
-# Test case disabled due to Bug#34891: sp_notembedded.test fails sporadically.
+# Bug#29936 Stored Procedure DML ignores low_priority_updates setting
#
-# #
-# # Bug#29936 Stored Procedure DML ignores low_priority_updates setting
-# #
-#
-# --disable_warnings
-# drop table if exists t1;
-# drop procedure if exists p1;
-# --enable_warnings
-#
-# create table t1 (value varchar(15));
-# create procedure p1() update t1 set value='updated' where value='old';
-#
-# # load the procedure into sp cache and execute once
-# call p1();
-#
-# insert into t1 (value) values ("old");
-#
-# connect (rl_holder, localhost, root,,);
-# connect (rl_acquirer, localhost, root,,);
-# connect (rl_contender, localhost, root,,);
-# connect (rl_wait, localhost, root,,);
-#
-# connection rl_holder;
-# select get_lock('b26162',120);
-#
-# connection rl_acquirer;
-# --send select 'rl_acquirer', value from t1 where get_lock('b26162',120);
-#
-# # we must wait till this select opens and locks the tables
-# connection rl_wait;
-# let $wait_condition=
-# select count(*) = 1 from information_schema.processlist
-# where state = "User lock" and
-# info = "select 'rl_acquirer', value from t1 where get_lock('b26162',120)";
-# --source include/wait_condition.inc
-#
-# connection default;
-# set session low_priority_updates=on;
-# --send call p1();
-#
-# connection rl_wait;
-# let $wait_condition=
-# select count(*) = 1 from information_schema.processlist
-# where state = "Locked" and
-# info = "update t1 set value='updated' where value='old'";
-# --source include/wait_condition.inc
-#
-# connection rl_contender;
-# select 'rl_contender', value from t1;
-#
-# connection rl_holder;
-# select release_lock('b26162');
+
+--disable_warnings
+drop table if exists t1;
+drop procedure if exists p1;
+--enable_warnings
+
+create table t1 (value varchar(15));
+create procedure p1() update t1 set value='updated' where value='old';
+
+# load the procedure into sp cache and execute once
+call p1();
+
+insert into t1 (value) values ("old");
+
+connect (rl_holder, localhost, root,,);
+connect (rl_acquirer, localhost, root,,);
+connect (rl_contender, localhost, root,,);
+connect (rl_wait, localhost, root,,);
+
+connection rl_holder;
+select get_lock('b26162',120);
+
+connection rl_acquirer;
+--send select 'rl_acquirer', value from t1 where get_lock('b26162',120);
+
+# we must wait till this select opens and locks the tables
+connection rl_wait;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "User lock" and
+ info = "select 'rl_acquirer', value from t1 where get_lock('b26162',120)";
+--source include/wait_condition.inc
+
+connection default;
+set session low_priority_updates=on;
+--send call p1();
+
+connection rl_wait;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Locked" and
+ info = "update t1 set value='updated' where value='old'";
+--source include/wait_condition.inc
+
+connection rl_contender;
+select 'rl_contender', value from t1;
+
+connection rl_holder;
+select release_lock('b26162');
+
+connection rl_acquirer;
+--reap
+connection default;
+--reap
+
+disconnect rl_holder;
+disconnect rl_acquirer;
+disconnect rl_wait;
+drop procedure p1;
+drop table t1;
+set session low_priority_updates=default;
+
#
-# connection rl_acquirer;
-# --reap
-# connection default;
-# --reap
+# Restore global concurrent_insert value. Keep in the end of the test file.
#
-# disconnect rl_holder;
-# disconnect rl_acquirer;
-# disconnect rl_wait;
-# drop procedure p1;
-# drop table t1;
-# set session low_priority_updates=default;
+
+set @@global.concurrent_insert= @old_concurrent_insert;