Commit 8b055e24 authored by Matthias Leich's avatar Matthias Leich

Merge into actual tree

parents 2b877885 2417d310
...@@ -2,14 +2,23 @@ ...@@ -2,14 +2,23 @@
# #
# SUMMARY # SUMMARY
# #
# Waits until the passed number ($count_sessions) of concurrent sessions was # Waits until the passed number ($count_sessions) of concurrent sessions or
# observed via # a smaller number was observed via
# SHOW STATUS LIKE 'Threads_connected' # SHOW STATUS LIKE 'Threads_connected'
# or the operation times out. # or the operation times out.
# Note: Starting with 5.1 we could also use # Note:
# SELECT COUNT(*) FROM information_schema.processlist # 1. We wait for $current_sessions <= $count_sessions because in the use case
# I stay with "SHOW STATUS LIKE 'Threads_connected'" because this # with count_sessions.inc before and wait_until_count_sessions.inc after
# runs in all versions 5.0+ # the core of the test it could happen that the disconnects of sessions
# belonging to the preceeding test are not finished.
# sessions at test begin($count_sessions) = m + n
# sessions of the previous test which will be soon disconnected = n (n >= 0)
# sessions at test end ($current sessions, assuming the test disconnects
# all additional sessions) = m
# 2. Starting with 5.1 we could also use
# SELECT COUNT(*) FROM information_schema.processlist
# I stay with "SHOW STATUS LIKE 'Threads_connected'" because this
# runs in all versions 5.0+
# #
# #
# USAGE # USAGE
...@@ -19,20 +28,20 @@ ...@@ -19,20 +28,20 @@
# #
# OR typical example of a test which uses more than one session # OR typical example of a test which uses more than one session
# Such a test could harm successing tests if there is no server shutdown # Such a test could harm successing tests if there is no server shutdown
# and start between.cw # and start between.
# #
# If the testing box is slow than the disconnect of sessions belonging to # If the testing box is slow than the disconnect of sessions belonging to
# the current test might happen when the successing test gets executed. # the current test might happen when the successing test gets executed.
# This means the successing test might see activities like unexpected # This means the successing test might see activities like unexpected
# rows within the general log or the PROCESSLIST. # rows within the general log or the PROCESSLIST.
# Example from bug http://bugs.mysql.com/bug.php?id=40377 # Example from bug http://bugs.mysql.com/bug.php?id=40377
# --- bzr_mysql-6.0-rpl/.../r/log_state.result # --- bzr_mysql-6.0-rpl/.../r/log_state.result
# +++ bzr_mysql-6.0-rpl/.../r/log_state.reject # +++ bzr_mysql-6.0-rpl/.../r/log_state.reject
# @@ -25,6 +25,7 @@ # @@ -25,6 +25,7 @@
# event_time user_host ... command_type argument # event_time user_host ... command_type argument
# TIMESTAMP USER_HOST ... Query create table t1(f1 int) # TIMESTAMP USER_HOST ... Query create table t1(f1 int)
# TIMESTAMP USER_HOST ... Query select * from mysql.general_log # TIMESTAMP USER_HOST ... Query select * from mysql.general_log
# +TIMESTAMP USER_HOST ... Quit # +TIMESTAMP USER_HOST ... Quit
# .... # ....
# #
# What to do? # What to do?
...@@ -79,7 +88,11 @@ ...@@ -79,7 +88,11 @@
# backup.test, grant3.test # backup.test, grant3.test
# #
# #
# Created: 2009-01-14 mleich # Created:
# 2009-01-14 mleich
# Modified:
# 2009-02-24 mleich Fix Bug#43114 wait_until_count_sessions too restrictive,
# random PB failures
# #
let $wait_counter= 100; let $wait_counter= 100;
...@@ -93,7 +106,7 @@ let $wait_timeout= 0; ...@@ -93,7 +106,7 @@ let $wait_timeout= 0;
while ($wait_counter) while ($wait_counter)
{ {
let $current_sessions= query_get_value(SHOW STATUS LIKE 'Threads_connected', Value, 1); let $current_sessions= query_get_value(SHOW STATUS LIKE 'Threads_connected', Value, 1);
let $success= `SELECT $current_sessions = $count_sessions`; let $success= `SELECT $current_sessions <= $count_sessions`;
if ($success) if ($success)
{ {
let $wait_counter= 0; let $wait_counter= 0;
...@@ -107,7 +120,7 @@ while ($wait_counter) ...@@ -107,7 +120,7 @@ while ($wait_counter)
if (!$success) if (!$success)
{ {
--echo # Timeout in wait_until_count_sessions.inc --echo # Timeout in wait_until_count_sessions.inc
--echo # Number of sessions expected: $count_sessions found: $current_sessions --echo # Number of sessions expected: <= $count_sessions found: $current_sessions
SHOW PROCESSLIST; SHOW PROCESSLIST;
} }
...@@ -188,7 +188,7 @@ DROP USER mysqltest_u1@localhost; ...@@ -188,7 +188,7 @@ DROP USER mysqltest_u1@localhost;
# -- End of Bug#33507. # -- End of Bug#33507.
# -- Bug#35074: max_used_connections is not correct. # -- Bug#35074: max_used_connections is not correct.
FLUSH STATUS; FLUSH STATUS;
......
drop table if exists t1; DROP TABLE IF EXISTS t1;
create table t1 (a int) engine=innodb; # Establish connection con1 (user=root)
start transaction with consistent snapshot; # Establish connection con2 (user=root)
insert into t1 values(1); # Switch to connection con1
select * from t1; CREATE TABLE t1 (a INT) ENGINE=innodb;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
# Switch to connection con2
INSERT INTO t1 VALUES(1);
# Switch to connection con1
SELECT * FROM t1;
a a
commit; COMMIT;
delete from t1; DELETE FROM t1;
start transaction; START TRANSACTION;
insert into t1 values(1); # Switch to connection con2
select * from t1; INSERT INTO t1 VALUES(1);
# Switch to connection con1
SELECT * FROM t1;
a a
1 1
commit; COMMIT;
drop table t1; # Switch to connection default + close connections con1 and con2
DROP TABLE t1;
drop table if exists t1; DROP TABLE IF EXISTS t1;
create table t1 (n int); CREATE TABLE t1 (n INT);
insert into t1 values (1),(2),(3); INSERT INTO t1 VALUES (1),(2),(3);
select * from t1; SELECT * FROM t1;
n n
1 1
2 2
3 3
drop table t1; DROP TABLE t1;
drop table if exists t1; # Establish connection con1 (user=root)
create table t1 (a int) engine=innodb; # Establish connection con2 (user=root)
begin; # Establish connection con3 (user=root)
insert into t1 values(1); # Switch to connection con1
flush tables with read lock; DROP TABLE IF EXISTS t1;
select * from t1; CREATE TABLE t1 (a INT) ENGINE=innodb;
BEGIN;
INSERT INTO t1 VALUES(1);
# Switch to connection con2
FLUSH TABLES WITH READ LOCK;
SELECT * FROM t1;
a a
commit; # Switch to connection con1
select * from t1; COMMIT;
# Switch to connection con2
SELECT * FROM t1;
a a
unlock tables; UNLOCK TABLES;
begin; # Switch to connection con1
select * from t1 for update; # Switch to connection con1
BEGIN;
SELECT * FROM t1 FOR UPDATE;
a a
1 1
begin; # Switch to connection con2
select * from t1 for update; BEGIN;
flush tables with read lock; SELECT * FROM t1 FOR UPDATE;
commit; # Switch to connection con3
FLUSH TABLES WITH READ LOCK;
# Switch to connection con1
COMMIT;
# Switch to connection con2
a a
1 1
unlock tables; # Switch to connection con3
commit; UNLOCK TABLES;
begin; # Switch to connection con2
insert into t1 values(10); COMMIT;
flush tables with read lock; # Switch to connection con1
commit; BEGIN;
unlock tables; INSERT INTO t1 VALUES(10);
flush tables with read lock; FLUSH TABLES WITH READ LOCK;
unlock tables; COMMIT;
begin; UNLOCK TABLES;
select * from t1; # Switch to connection con2
FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES;
BEGIN;
SELECT * FROM t1;
a a
1 1
10 10
show create database test; SHOW CREATE DATABASE test;
Database Create Database Database Create Database
test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
drop table t1; DROP TABLE t1;
# Switch to connection default and close connections con1, con2, con3
create table t1 (a int) engine=innodb; # Establish connection con1 (user=root)
reset master; # Establish connection con2 (user=root)
set autocommit=0; # Switch to connection con1
insert t1 values (1); CREATE TABLE t1 (a INT) ENGINE=innodb;
flush tables with read lock; RESET MASTER;
show master status; SET AUTOCOMMIT=0;
INSERT t1 VALUES (1);
# Switch to connection con2
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 106 master-bin.000001 106
commit; # Switch to connection con1
show master status; COMMIT;
# Switch to connection con2
SHOW MASTER STATUS;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 106 master-bin.000001 106
unlock tables; UNLOCK TABLES;
drop table t1; # Switch to connection con1
set autocommit=1; DROP TABLE t1;
SET AUTOCOMMIT=1;
# Switch to connection default and close connections con1 and con2
set @old_concurrent_insert= @@global.concurrent_insert; SET @old_concurrent_insert= @@global.concurrent_insert;
set @@global.concurrent_insert= 0; SET @@global.concurrent_insert= 0;
drop table if exists t1; DROP TABLE IF EXISTS t1;
create table t1 (kill_id int); CREATE TABLE t1 (kill_id INT);
insert into t1 values(connection_id()); INSERT INTO t1 VALUES(connection_id());
flush tables with read lock; FLUSH TABLES WITH READ LOCK;
select ((@id := kill_id) - kill_id) from t1; SELECT ((@id := kill_id) - kill_id) FROM t1;
((@id := kill_id) - kill_id) ((@id := kill_id) - kill_id)
0 0
kill connection @id; KILL CONNECTION @id;
drop table t1; DROP TABLE t1;
set @@global.concurrent_insert= @old_concurrent_insert; SET @@global.concurrent_insert= @old_concurrent_insert;
...@@ -51,10 +51,10 @@ Field Type Null Key Default Extra ...@@ -51,10 +51,10 @@ Field Type Null Key Default Extra
a int(11) YES NULL a int(11) YES NULL
unlock tables; unlock tables;
drop table t1; drop table t1;
use mysql; USE mysql;
LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE; LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
FLUSH TABLES; FLUSH TABLES;
use mysql; USE mysql;
SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1; SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
OPTIMIZE TABLES columns_priv, db, host, user; OPTIMIZE TABLES columns_priv, db, host, user;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
...@@ -65,7 +65,7 @@ mysql.user optimize status OK ...@@ -65,7 +65,7 @@ mysql.user optimize status OK
UNLOCK TABLES; UNLOCK TABLES;
Select_priv Select_priv
N N
use test; USE test;
use test; use test;
CREATE TABLE t1 (c1 int); CREATE TABLE t1 (c1 int);
LOCK TABLE t1 WRITE; LOCK TABLE t1 WRITE;
...@@ -133,8 +133,8 @@ DROP TABLE t1; ...@@ -133,8 +133,8 @@ DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
create table t1 (i int); create table t1 (i int);
lock table t1 read; lock table t1 read;
update t1 set i= 10;; update t1 set i= 10;
select * from t1;; select * from t1;
kill query ID; kill query ID;
i i
ERROR 70100: Query execution was interrupted ERROR 70100: Query execution was interrupted
......
...@@ -391,9 +391,9 @@ DELIMITER ; ...@@ -391,9 +391,9 @@ DELIMITER ;
ROLLBACK /* added by mysqlbinlog */; ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
CREATE TABLE t1 (c1 CHAR(10)); CREATE TABLE t1 (c1 CHAR(10));
flush logs; FLUSH LOGS;
INSERT INTO t1 VALUES ('0123456789'); INSERT INTO t1 VALUES ('0123456789');
flush logs; FLUSH LOGS;
DROP TABLE t1; DROP TABLE t1;
We expect this value to be 1 We expect this value to be 1
The bug being tested was that 'Query' lines were not preceded by '#' The bug being tested was that 'Query' lines were not preceded by '#'
...@@ -403,16 +403,16 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%'; ...@@ -403,16 +403,16 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
BUG#28293_expect_1 BUG#28293_expect_1
1 1
DROP TABLE patch; DROP TABLE patch;
flush logs; FLUSH LOGS;
create table t1(a int); CREATE TABLE t1(a INT);
insert into t1 values(connection_id()); INSERT INTO t1 VALUES(connection_id());
flush logs; FLUSH LOGS;
drop table t1; DROP TABLE t1;
1 1
drop table t1; DROP TABLE t1;
shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql
flush logs; FLUSH LOGS;
BUG#31611: Security risk with BINLOG statement Bug#31611 Security risk with BINLOG statement
SET BINLOG_FORMAT=ROW; SET BINLOG_FORMAT=ROW;
CREATE DATABASE mysqltest1; CREATE DATABASE mysqltest1;
CREATE USER untrusted@localhost; CREATE USER untrusted@localhost;
...@@ -435,7 +435,7 @@ a b ...@@ -435,7 +435,7 @@ a b
1 root@localhost 1 root@localhost
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
DROP USER untrusted@localhost; DROP USER untrusted@localhost;
BUG#32580: mysqlbinlog cannot read binlog event with user variables Bug#32580 mysqlbinlog cannot read binlog event with user variables
USE test; USE test;
SET BINLOG_FORMAT = STATEMENT; SET BINLOG_FORMAT = STATEMENT;
FLUSH LOGS; FLUSH LOGS;
...@@ -460,15 +460,15 @@ an_int 1000 ...@@ -460,15 +460,15 @@ an_int 1000
a_decimal 907.79 a_decimal 907.79
a_string Just a test a_string Just a test
DROP TABLE t1; DROP TABLE t1;
set @@global.server_id= 4294967295; SET @@global.server_id= 4294967295;
reset master; RESET MASTER;
flush logs; FLUSH LOGS;
select SELECT
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog")) (@a:=LOAD_FILE("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
is not null; IS NOT NULL;
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog")) (@a:=LOAD_FILE("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
is not null IS NOT NULL
1 1
*** Unsigned server_id 4294967295 is found: 1 *** *** Unsigned server_id 4294967295 is found: 1 ***
set @@global.server_id= 1; SET @@global.server_id= 1;
End of 5.1 tests End of 5.1 tests
...@@ -743,10 +743,12 @@ select 1; ...@@ -743,10 +743,12 @@ select 1;
-- a comment for the server; -- a comment for the server;
mysqltest: At line 1: Found line beginning with -- that didn't contain a valid mysqltest command, check your syntax or use # if you intended to write a comment mysqltest: At line 1: Found line beginning with -- that didn't contain a valid mysqltest command, check your syntax or use # if you intended to write a comment
con1 con1
con2
default default
con1 con1
default con2
con1
con1 con1
con2
con2
-closed_connection- -closed_connection-
End of tests End of tests
...@@ -128,7 +128,7 @@ set global read_only=0; ...@@ -128,7 +128,7 @@ set global read_only=0;
drop table t1,t2; drop table t1,t2;
drop user test@localhost; drop user test@localhost;
# #
# Bug #27440 read_only allows create and drop database # Bug#27440 read_only allows create and drop database
# #
set global read_only= 1; set global read_only= 1;
drop database if exists mysqltest_db1; drop database if exists mysqltest_db1;
......
...@@ -545,9 +545,9 @@ mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 */ ...@@ -545,9 +545,9 @@ mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 */
drop table mysqltest.t1; drop table mysqltest.t1;
drop database mysqltest; drop database mysqltest;
set names binary; set names binary;
delete from mysql.user delete from mysql.user
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
delete from mysql.db delete from mysql.db
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
flush privileges; flush privileges;
CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY; CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY;
...@@ -664,7 +664,7 @@ show create table t1; ...@@ -664,7 +664,7 @@ show create table t1;
ERROR HY000: Incorrect information in file: './test/t1.frm' ERROR HY000: Incorrect information in file: './test/t1.frm'
drop table if exists t1; drop table if exists t1;
# Bug#12183: SHOW OPEN TABLES behavior doesn't match grammar. # Bug#12183 SHOW OPEN TABLES behavior doesn't match grammar.
DROP DATABASE IF EXISTS mysqltest1; DROP DATABASE IF EXISTS mysqltest1;
CREATE DATABASE mysqltest1; CREATE DATABASE mysqltest1;
...@@ -784,7 +784,7 @@ show status like 'slow_queries'; ...@@ -784,7 +784,7 @@ show status like 'slow_queries';
Variable_name Value Variable_name Value
Slow_queries 1 Slow_queries 1
create table t1 (a int); create table t1 (a int);
create trigger tr1 before insert on t1 for each row create trigger tr1 before insert on t1 for each row
begin begin
end; end;
create view v1 as select a from t1; create view v1 as select a from t1;
...@@ -1010,7 +1010,7 @@ def TRIGGERS DATABASE_COLLATION Database Collation 253 96 17 N 1 0 33 ...@@ -1010,7 +1010,7 @@ def TRIGGERS DATABASE_COLLATION Database Collation 253 96 17 N 1 0 33
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
t1_bi INSERT t1 SET @a = 1 BEFORE NULL root@localhost binary binary latin1_swedish_ci t1_bi INSERT t1 SET @a = 1 BEFORE NULL root@localhost binary binary latin1_swedish_ci
---------------------------------------------------------------- ----------------------------------------------------------------
SELECT SELECT
TRIGGER_CATALOG, TRIGGER_CATALOG,
TRIGGER_SCHEMA, TRIGGER_SCHEMA,
TRIGGER_NAME, TRIGGER_NAME,
......
...@@ -5,7 +5,7 @@ GRANT USAGE ON *.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255' ...@@ -5,7 +5,7 @@ GRANT USAGE ON *.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
GRANT ALL PRIVILEGES ON `test`.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255' GRANT ALL PRIVILEGES ON `test`.* TO 'mysqltest_1'@'127.0.0.1/255.255.255.255'
REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255'; REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
DROP USER mysqltest_1@'127.0.0.1/255.255.255.255'; DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
select user(); SELECT USER();
user() USER()
# #
show processlist; SHOW PROCESSLIST;
...@@ -342,12 +342,12 @@ GRANT SUPER ON *.* TO mysqltest_2@localhost; ...@@ -342,12 +342,12 @@ GRANT SUPER ON *.* TO mysqltest_2@localhost;
GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost; GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
---> connection: mysqltest_2_con ---> connection: mysqltest_2_con
use mysqltest; USE mysqltest;
CREATE PROCEDURE wl2897_p1() SELECT 1; CREATE PROCEDURE wl2897_p1() SELECT 1;
CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1; CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1;
---> connection: mysqltest_1_con ---> connection: mysqltest_1_con
use mysqltest; USE mysqltest;
CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2; CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2;
ERROR 42000: Access denied; you need the SUPER privilege for this operation ERROR 42000: Access denied; you need the SUPER privilege for this operation
CREATE DEFINER=root@localhost FUNCTION wl2897_f2() RETURNS INT RETURN 2; CREATE DEFINER=root@localhost FUNCTION wl2897_f2() RETURNS INT RETURN 2;
...@@ -363,7 +363,7 @@ Warnings: ...@@ -363,7 +363,7 @@ Warnings:
Note 1449 The user specified as a definer ('a @ b @ c'@'localhost') does not exist Note 1449 The user specified as a definer ('a @ b @ c'@'localhost') does not exist
---> connection: con1root ---> connection: con1root
use mysqltest; USE mysqltest;
SHOW CREATE PROCEDURE wl2897_p1; SHOW CREATE PROCEDURE wl2897_p1;
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
wl2897_p1 CREATE DEFINER=`mysqltest_2`@`localhost` PROCEDURE `wl2897_p1`() wl2897_p1 CREATE DEFINER=`mysqltest_2`@`localhost` PROCEDURE `wl2897_p1`()
...@@ -393,7 +393,7 @@ CREATE USER mysqltest_2@localhost; ...@@ -393,7 +393,7 @@ CREATE USER mysqltest_2@localhost;
GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost; GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
---> connection: mysqltest_1_con ---> connection: mysqltest_1_con
use mysqltest; USE mysqltest;
CREATE PROCEDURE bug13198_p1() CREATE PROCEDURE bug13198_p1()
SELECT 1; SELECT 1;
CREATE FUNCTION bug13198_f1() RETURNS INT CREATE FUNCTION bug13198_f1() RETURNS INT
...@@ -406,7 +406,7 @@ bug13198_f1() ...@@ -406,7 +406,7 @@ bug13198_f1()
1 1
---> connection: mysqltest_2_con ---> connection: mysqltest_2_con
use mysqltest; USE mysqltest;
CALL bug13198_p1(); CALL bug13198_p1();
1 1
1 1
...@@ -418,7 +418,7 @@ bug13198_f1() ...@@ -418,7 +418,7 @@ bug13198_f1()
DROP USER mysqltest_1@localhost; DROP USER mysqltest_1@localhost;
---> connection: mysqltest_2_con ---> connection: mysqltest_2_con
use mysqltest; USE mysqltest;
CALL bug13198_p1(); CALL bug13198_p1();
ERROR HY000: The user specified as a definer ('mysqltest_1'@'localhost') does not exist ERROR HY000: The user specified as a definer ('mysqltest_1'@'localhost') does not exist
SELECT bug13198_f1(); SELECT bug13198_f1();
...@@ -435,7 +435,7 @@ Host User Password ...@@ -435,7 +435,7 @@ Host User Password
localhost user19857 *82DC221D557298F6CE9961037DB1C90604792F5C localhost user19857 *82DC221D557298F6CE9961037DB1C90604792F5C
---> connection: mysqltest_2_con ---> connection: mysqltest_2_con
use test; USE test;
CREATE PROCEDURE sp19857() DETERMINISTIC CREATE PROCEDURE sp19857() DETERMINISTIC
BEGIN BEGIN
DECLARE a INT; DECLARE a INT;
......
...@@ -1673,9 +1673,9 @@ INSERT INTO t2 VALUES (4,3,'n'); ...@@ -1673,9 +1673,9 @@ INSERT INTO t2 VALUES (4,3,'n');
INSERT INTO t2 VALUES (6,1,'n'); INSERT INTO t2 VALUES (6,1,'n');
INSERT INTO t2 VALUES (8,1,'y'); INSERT INTO t2 VALUES (8,1,'y');
CREATE VIEW v1 AS SELECT * FROM t1; CREATE VIEW v1 AS SELECT * FROM t1;
SELECT a.col1,a.col2,b.col2,b.col3 SELECT a.col1,a.col2,b.col2,b.col3
FROM t1 a LEFT JOIN t2 b ON a.col1=b.col1 FROM t1 a LEFT JOIN t2 b ON a.col1=b.col1
WHERE b.col2 IS NULL OR WHERE b.col2 IS NULL OR
b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1); b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1);
col1 col2 col2 col3 col1 col2 col2 col3
1 trudy 2 y 1 trudy 2 y
...@@ -1687,9 +1687,9 @@ col1 col2 col2 col3 ...@@ -1687,9 +1687,9 @@ col1 col2 col2 col3
7 carsten NULL NULL 7 carsten NULL NULL
8 ranger 1 y 8 ranger 1 y
10 matt NULL NULL 10 matt NULL NULL
SELECT a.col1,a.col2,b.col2,b.col3 SELECT a.col1,a.col2,b.col2,b.col3
FROM v1 a LEFT JOIN t2 b ON a.col1=b.col1 FROM v1 a LEFT JOIN t2 b ON a.col1=b.col1
WHERE b.col2 IS NULL OR WHERE b.col2 IS NULL OR
b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1); b.col2=(SELECT MAX(col2) FROM t2 b WHERE b.col1=a.col1);
col1 col2 col2 col3 col1 col2 col2 col3
1 trudy 2 y 1 trudy 2 y
...@@ -1743,7 +1743,7 @@ A A ...@@ -1743,7 +1743,7 @@ A A
2 2 2 2
3 3 3 3
create table t3 as select a a,a b from t2; create table t3 as select a a,a b from t2;
create view v2 as select * from t3 where create view v2 as select * from t3 where
a in (select * from t1) or b in (select * from t2); a in (select * from t1) or b in (select * from t2);
select * from v2 A, v2 B where A.a = B.b; select * from v2 A, v2 B where A.a = B.b;
a b a b a b a b
...@@ -1999,7 +1999,7 @@ dkjhgd ...@@ -1999,7 +1999,7 @@ dkjhgd
drop view v1; drop view v1;
create table t1 (f59 int, f60 int, f61 int); create table t1 (f59 int, f60 int, f61 int);
insert into t1 values (19,41,32); insert into t1 values (19,41,32);
create view v1 as select f59, f60 from t1 where f59 in create view v1 as select f59, f60 from t1 where f59 in
(select f59 from t1); (select f59 from t1);
update v1 set f60=2345; update v1 set f60=2345;
ERROR HY000: The target table v1 of the UPDATE is not updatable ERROR HY000: The target table v1 of the UPDATE is not updatable
...@@ -2115,7 +2115,7 @@ pid int NOT NULL ...@@ -2115,7 +2115,7 @@ pid int NOT NULL
INSERT INTO t1 VALUES(1,'a','b'), (2,'c','d'); INSERT INTO t1 VALUES(1,'a','b'), (2,'c','d');
INSERT INTO t2 values (1,1), (2,1), (2,2); INSERT INTO t2 values (1,1), (2,1), (2,2);
CREATE VIEW v1 AS SELECT t1.*,t2.pid FROM t1,t2 WHERE t1.aid = t2.aid; CREATE VIEW v1 AS SELECT t1.*,t2.pid FROM t1,t2 WHERE t1.aid = t2.aid;
SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM t1,t2 SELECT pid,GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) FROM t1,t2
WHERE t1.aid = t2.aid GROUP BY pid; WHERE t1.aid = t2.aid GROUP BY pid;
pid GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1) pid GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1)
1 a b,c d 1 a b,c d
...@@ -2217,7 +2217,7 @@ group_name varchar(32) NOT NULL ...@@ -2217,7 +2217,7 @@ group_name varchar(32) NOT NULL
) engine = InnoDB; ) engine = InnoDB;
create table t2 ( create table t2 (
r_object_id char(16) NOT NULL, r_object_id char(16) NOT NULL,
i_position int(11) NOT NULL, i_position int(11) NOT NULL,
users_names varchar(32) default NULL users_names varchar(32) default NULL
) Engine = InnoDB; ) Engine = InnoDB;
create view v1 as select r_object_id, group_name from t1; create view v1 as select r_object_id, group_name from t1;
...@@ -2230,7 +2230,7 @@ insert into t1 values('120001a080000542','tstgroup1'); ...@@ -2230,7 +2230,7 @@ insert into t1 values('120001a080000542','tstgroup1');
insert into t2 values('120001a080000542',-1, 'guser01'); insert into t2 values('120001a080000542',-1, 'guser01');
insert into t2 values('120001a080000542',-2, 'guser02'); insert into t2 values('120001a080000542',-2, 'guser02');
select v1.r_object_id, v2.users_names from v1, v2 select v1.r_object_id, v2.users_names from v1, v2
where (v1.group_name='tstgroup1') and v2.r_object_id=v1.r_object_id where (v1.group_name='tstgroup1') and v2.r_object_id=v1.r_object_id
order by users_names; order by users_names;
r_object_id users_names r_object_id users_names
120001a080000542 guser01 120001a080000542 guser01
...@@ -2380,8 +2380,8 @@ create table t4 (x int, y int, z int); ...@@ -2380,8 +2380,8 @@ create table t4 (x int, y int, z int);
create view v1 as create view v1 as
select t1.x select t1.x
from ( from (
(t1 join t2 on ((t1.y = t2.y))) (t1 join t2 on ((t1.y = t2.y)))
join join
(t3 left join t4 on (t3.y = t4.y) and (t3.z = t4.z)) (t3 left join t4 on (t3.y = t4.y) and (t3.z = t4.z))
); );
prepare stmt1 from "select count(*) from v1 where x = ?"; prepare stmt1 from "select count(*) from v1 where x = ?";
...@@ -2557,12 +2557,12 @@ Warnings: ...@@ -2557,12 +2557,12 @@ Warnings:
Warning 1052 Column 'x' in group statement is ambiguous Warning 1052 Column 'x' in group statement is ambiguous
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
drop table if exists t1; drop table if exists t1;
drop view if exists v1; drop view if exists v1;
create table t1 (id int); create table t1 (id int);
create view v1 as select * from t1; create view v1 as select * from t1;
drop table t1; drop table t1;
show create view v1; show create view v1;
drop view v1; drop view v1;
// //
View Create View character_set_client collation_connection View Create View character_set_client collation_connection
...@@ -2609,7 +2609,7 @@ DROP VIEW v2; ...@@ -2609,7 +2609,7 @@ DROP VIEW v2;
DROP TABLE t1, t2; DROP TABLE t1, t2;
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, CREATE TABLE t1 (id int NOT NULL PRIMARY KEY,
td date DEFAULT NULL, KEY idx(td)); td date DEFAULT NULL, KEY idx(td));
INSERT INTO t1 VALUES INSERT INTO t1 VALUES
(1, '2005-01-01'), (2, '2005-01-02'), (3, '2005-01-02'), (1, '2005-01-01'), (2, '2005-01-02'), (3, '2005-01-02'),
(4, '2005-01-03'), (5, '2005-01-04'), (6, '2005-01-05'), (4, '2005-01-03'), (5, '2005-01-04'), (6, '2005-01-05'),
(7, '2005-01-05'), (8, '2005-01-05'), (9, '2005-01-06'); (7, '2005-01-05'), (8, '2005-01-05'), (9, '2005-01-06');
...@@ -2973,10 +2973,10 @@ drop view v1; ...@@ -2973,10 +2973,10 @@ drop view v1;
drop table t1; drop table t1;
CREATE TABLE t1(pk int PRIMARY KEY); CREATE TABLE t1(pk int PRIMARY KEY);
CREATE TABLE t2(pk int PRIMARY KEY, fk int, ver int, org int); CREATE TABLE t2(pk int PRIMARY KEY, fk int, ver int, org int);
CREATE ALGORITHM=MERGE VIEW v1 AS CREATE ALGORITHM=MERGE VIEW v1 AS
SELECT t1.* SELECT t1.*
FROM t1 JOIN t2 FROM t1 JOIN t2
ON t2.fk = t1.pk AND ON t2.fk = t1.pk AND
t2.ver = (SELECT MAX(t.ver) FROM t2 t WHERE t.org = t2.org); t2.ver = (SELECT MAX(t.ver) FROM t2 t WHERE t.org = t2.org);
SHOW WARNINGS; SHOW WARNINGS;
Level Code Message Level Code Message
...@@ -3306,7 +3306,7 @@ name char(10) NOT NULL ...@@ -3306,7 +3306,7 @@ name char(10) NOT NULL
INSERT INTO t1 (lid, name) VALUES INSERT INTO t1 (lid, name) VALUES
(1, 'YES'), (2, 'NO'); (1, 'YES'), (2, 'NO');
CREATE TABLE t2 ( CREATE TABLE t2 (
id int NOT NULL PRIMARY KEY, id int NOT NULL PRIMARY KEY,
gid int NOT NULL, gid int NOT NULL,
lid int NOT NULL, lid int NOT NULL,
dt date dt date
...@@ -3405,8 +3405,8 @@ CREATE TABLE t1 (id int); ...@@ -3405,8 +3405,8 @@ CREATE TABLE t1 (id int);
CREATE TABLE t2 (id int, c int DEFAULT 0); CREATE TABLE t2 (id int, c int DEFAULT 0);
INSERT INTO t1 (id) VALUES (1); INSERT INTO t1 (id) VALUES (1);
INSERT INTO t2 (id) VALUES (1); INSERT INTO t2 (id) VALUES (1);
CREATE VIEW v1 AS CREATE VIEW v1 AS
SELECT t2.c FROM t1, t2 SELECT t2.c FROM t1, t2
WHERE t1.id=t2.id AND 1 IN (SELECT id FROM t1) WITH CHECK OPTION; WHERE t1.id=t2.id AND 1 IN (SELECT id FROM t1) WITH CHECK OPTION;
UPDATE v1 SET c=1; UPDATE v1 SET c=1;
DROP VIEW v1; DROP VIEW v1;
...@@ -3514,7 +3514,7 @@ role_name varchar(100) default NULL, ...@@ -3514,7 +3514,7 @@ role_name varchar(100) default NULL,
app_name varchar(40) NOT NULL, app_name varchar(40) NOT NULL,
INDEX idx_app_name(app_name) INDEX idx_app_name(app_name)
); );
CREATE VIEW v1 AS CREATE VIEW v1 AS
SELECT profile.person_id AS person_id SELECT profile.person_id AS person_id
FROM t1 profile, t2 userrole, t3 role FROM t1 profile, t2 userrole, t3 role
WHERE userrole.person_id = profile.person_id AND WHERE userrole.person_id = profile.person_id AND
...@@ -3526,7 +3526,7 @@ INSERT INTO t1 VALUES ...@@ -3526,7 +3526,7 @@ INSERT INTO t1 VALUES
(-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0'); (-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0');
INSERT INTO t2 VALUES INSERT INTO t2 VALUES
(1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10); (1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10);
INSERT INTO t3 VALUES INSERT INTO t3 VALUES
(1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'), (1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'),
(3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'), (3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'),
(5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'), (5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'),
...@@ -3552,7 +3552,7 @@ i ...@@ -3552,7 +3552,7 @@ i
2 2
3 3
4 4
select table_name, is_updatable from information_schema.views select table_name, is_updatable from information_schema.views
where table_name = 'v1'; where table_name = 'v1';
table_name is_updatable table_name is_updatable
v1 NO v1 NO
...@@ -3598,8 +3598,8 @@ DROP VIEW v2; ...@@ -3598,8 +3598,8 @@ DROP VIEW v2;
DROP VIEW v3; DROP VIEW v3;
DROP TABLE t1; DROP TABLE t1;
# #
# Bug#29477: Not all fields of the target table were checked to have # Bug#29477 Not all fields of the target table were checked to have
# a default value when inserting into a view. # a default value when inserting into a view.
# #
create table t1(f1 int, f2 int not null); create table t1(f1 int, f2 int not null);
create view v1 as select f1 from t1; create view v1 as select f1 from t1;
...@@ -3616,7 +3616,7 @@ drop table t1; ...@@ -3616,7 +3616,7 @@ drop table t1;
create table t1 (a int, key(a)); create table t1 (a int, key(a));
create table t2 (c int); create table t2 (c int);
create view v1 as select a b from t1; create view v1 as select a b from t1;
create view v2 as select 1 a from t2, v1 where c in create view v2 as select 1 a from t2, v1 where c in
(select 1 from t1 where b = a); (select 1 from t1 where b = a);
insert into t1 values (1), (1); insert into t1 values (1), (1);
insert into t2 values (1), (1); insert into t2 values (1), (1);
...@@ -3638,7 +3638,7 @@ MAX(a) COUNT(DISTINCT a) ...@@ -3638,7 +3638,7 @@ MAX(a) COUNT(DISTINCT a)
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# -- Bug#34337: Server crash when Altering a view using a table name. # -- Bug#34337 Server crash when Altering a view using a table name.
# ----------------------------------------------------------------- # -----------------------------------------------------------------
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
...@@ -3655,8 +3655,8 @@ DROP TABLE t1; ...@@ -3655,8 +3655,8 @@ DROP TABLE t1;
# -- End of test case for Bug#34337. # -- End of test case for Bug#34337.
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# -- Bug#35193: VIEW query is rewritten without "FROM DUAL", # -- Bug#35193 VIEW query is rewritten without "FROM DUAL",
# -- causing syntax error # -- causing syntax error
# ----------------------------------------------------------------- # -----------------------------------------------------------------
CREATE VIEW v1 AS SELECT 1 FROM DUAL WHERE 1; CREATE VIEW v1 AS SELECT 1 FROM DUAL WHERE 1;
...@@ -3723,7 +3723,7 @@ DROP DATABASE `d-1`; ...@@ -3723,7 +3723,7 @@ DROP DATABASE `d-1`;
USE test; USE test;
# #
# Bug#26676: VIEW using old table schema in a session. # Bug#26676 VIEW using old table schema in a session.
# #
DROP VIEW IF EXISTS v1; DROP VIEW IF EXISTS v1;
...@@ -3765,7 +3765,7 @@ DROP TABLE t1; ...@@ -3765,7 +3765,7 @@ DROP TABLE t1;
# End of test case for Bug#26676. # End of test case for Bug#26676.
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# -- Bug#32538: View definition picks up character set, but not collation # -- Bug#32538 View definition picks up character set, but not collation
# ----------------------------------------------------------------- # -----------------------------------------------------------------
DROP VIEW IF EXISTS v1; DROP VIEW IF EXISTS v1;
......
...@@ -646,7 +646,7 @@ CREATE DATABASE test2; ...@@ -646,7 +646,7 @@ CREATE DATABASE test2;
CREATE TABLE test1.t0 (a VARCHAR(20)); CREATE TABLE test1.t0 (a VARCHAR(20));
CREATE TABLE test2.t1 (a VARCHAR(20)); CREATE TABLE test2.t1 (a VARCHAR(20));
CREATE VIEW test2.t3 AS SELECT * FROM test1.t0; CREATE VIEW test2.t3 AS SELECT * FROM test1.t0;
CREATE OR REPLACE VIEW test.v1 AS CREATE OR REPLACE VIEW test.v1 AS
SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb; SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb;
DROP VIEW test.v1; DROP VIEW test.v1;
DROP VIEW test2.t3; DROP VIEW test2.t3;
...@@ -790,7 +790,7 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI ...@@ -790,7 +790,7 @@ v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
DROP USER u26813@localhost; DROP USER u26813@localhost;
DROP DATABASE db26813; DROP DATABASE db26813;
# #
# Bug#29908: A user can gain additional access through the ALTER VIEW. # Bug#29908 A user can gain additional access through the ALTER VIEW.
# #
CREATE DATABASE mysqltest_29908; CREATE DATABASE mysqltest_29908;
USE mysqltest_29908; USE mysqltest_29908;
...@@ -1043,3 +1043,4 @@ DROP VIEW v1, v2; ...@@ -1043,3 +1043,4 @@ DROP VIEW v1, v2;
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
DROP VIEW test.v3; DROP VIEW test.v3;
DROP USER mysqluser1@localhost; DROP USER mysqluser1@localhost;
USE test;
...@@ -9,10 +9,9 @@ ...@@ -9,10 +9,9 @@
# in proper order. # in proper order.
--source include/have_binlog_format_mixed_or_statement.inc --source include/have_binlog_format_mixed_or_statement.inc
# #
# Test for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global # Test for Bug#25044 ALTER TABLE ... ENABLE KEYS acquires global
# 'opening tables' lock". # 'opening tables' lock
# #
# ALTER TABLE ... ENABLE KEYS should not acquire LOCK_open mutex for # ALTER TABLE ... ENABLE KEYS should not acquire LOCK_open mutex for
# the whole its duration as it prevents other queries from execution. # the whole its duration as it prevents other queries from execution.
...@@ -56,6 +55,7 @@ show binlog events in 'master-bin.000001' from 106; ...@@ -56,6 +55,7 @@ show binlog events in 'master-bin.000001' from 106;
# Clean up # Clean up
drop tables t1, t2; drop tables t1, t2;
disconnect addconroot;
--echo End of 5.0 tests --echo End of 5.0 tests
...@@ -76,6 +76,7 @@ create table t1 (i int); ...@@ -76,6 +76,7 @@ create table t1 (i int);
reset master; reset master;
set session debug="+d,sleep_alter_before_main_binlog"; set session debug="+d,sleep_alter_before_main_binlog";
--send alter table t1 change i c char(10) default 'Test1'; --send alter table t1 change i c char(10) default 'Test1';
connect (addconroot, localhost, root,,);
connection addconroot; connection addconroot;
--sleep 2 --sleep 2
insert into t1 values (); insert into t1 values ();
...@@ -105,6 +106,7 @@ connection addconroot; ...@@ -105,6 +106,7 @@ connection addconroot;
rename table t1 to t3; rename table t1 to t3;
connection default; connection default;
--reap --reap
disconnect addconroot;
drop table t3; drop table t3;
set session debug="-d,sleep_alter_before_main_binlog"; set session debug="-d,sleep_alter_before_main_binlog";
...@@ -114,3 +116,4 @@ show binlog events in 'master-bin.000001' from 106; ...@@ -114,3 +116,4 @@ show binlog events in 'master-bin.000001' from 106;
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -9,11 +9,14 @@ ...@@ -9,11 +9,14 @@
# of the log tables (which are CSV-based). By connect mysql; show tables; # of the log tables (which are CSV-based). By connect mysql; show tables;
--source include/have_csv.inc --source include/have_csv.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--disable_warnings --disable_warnings
drop table if exists t1,t2; drop table if exists t1,t2;
--enable_warnings --enable_warnings
#connect (con1,localhost,root,,""); #connect (con1,localhost,root,,"");
#show tables; #show tables;
connect (con1,localhost,root,,mysql); connect (con1,localhost,root,,mysql);
...@@ -22,12 +25,16 @@ connect (con2,localhost,root,,test); ...@@ -22,12 +25,16 @@ connect (con2,localhost,root,,test);
show tables; show tables;
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,root,z,test2); connect (fail_con,localhost,root,z,test2);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,root,z,); connect (fail_con,localhost,root,z,);
connection default;
disconnect con1;
disconnect con2;
grant ALL on *.* to test@localhost identified by "gambling"; grant ALL on *.* to test@localhost identified by "gambling";
grant ALL on *.* to test@127.0.0.1 identified by "gambling"; grant ALL on *.* to test@127.0.0.1 identified by "gambling";
...@@ -39,20 +46,23 @@ show tables; ...@@ -39,20 +46,23 @@ show tables;
connect (con4,localhost,test,gambling,test); connect (con4,localhost,test,gambling,test);
show tables; show tables;
connection default;
disconnect con3;
disconnect con4;
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,,test2); connect (fail_con,localhost,test,,test2);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,,""); connect (fail_con,localhost,test,,"");
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,zorro,test2); connect (fail_con,localhost,test,zorro,test2);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,zorro,); connect (fail_con,localhost,test,zorro,);
# check if old password version also works # check if old password version also works
update mysql.user set password=old_password("gambling2") where user=_binary"test"; update mysql.user set password=old_password("gambling2") where user=_binary"test";
flush privileges; flush privileges;
...@@ -61,55 +71,57 @@ connect (con10,localhost,test,gambling2,); ...@@ -61,55 +71,57 @@ connect (con10,localhost,test,gambling2,);
connect (con5,localhost,test,gambling2,mysql); connect (con5,localhost,test,gambling2,mysql);
connection con5; connection con5;
set password=""; set password="";
--error 1372 --error ER_PASSWD_LENGTH
set password='gambling3'; set password='gambling3';
set password=old_password('gambling3'); set password=old_password('gambling3');
show tables; show tables;
connect (con6,localhost,test,gambling3,test); connect (con6,localhost,test,gambling3,test);
show tables; show tables;
connection default;
disconnect con10;
disconnect con5;
disconnect con6;
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,,test2); connect (fail_con,localhost,test,,test2);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,,); connect (fail_con,localhost,test,,);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,zorro,test2); connect (fail_con,localhost,test,zorro,test2);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045 --error ER_ACCESS_DENIED_ERROR
connect (fail_con,localhost,test,zorro,); connect (fail_con,localhost,test,zorro,);
# remove user 'test' so that other tests which may use 'test' # remove user 'test' so that other tests which may use 'test'
# do not depend on this test. # do not depend on this test.
delete from mysql.user where user=_binary"test"; delete from mysql.user where user=_binary"test";
flush privileges; flush privileges;
# #
# Bug#12517: Clear user variables and replication events before # Bug#12517 Clear user variables and replication events before
# closing temp tables in thread cleanup. # closing temp tables in thread cleanup.
connect (con7,localhost,root,,test); connect (con7,localhost,root,,test);
connection con7; connection con7;
let $connection_id= `select connection_id()`;
create table t1 (id integer not null auto_increment primary key); create table t1 (id integer not null auto_increment primary key);
create temporary table t2(id integer not null auto_increment primary key); create temporary table t2(id integer not null auto_increment primary key);
set @id := 1; set @id := 1;
delete from t1 where id like @id; delete from t1 where id like @id;
disconnect con7;
--sleep 5
connection default; connection default;
disconnect con7;
# Wait till the session con7 is disconnected
let $wait_condition =
SELECT COUNT(*) = 0
FROM information_schema.processlist
WHERE id = '$connection_id';
--source include/wait_condition.inc
drop table t1; drop table t1;
--disconnect con1
--disconnect con2
--disconnect con3
--disconnect con4
--disconnect con5
--disconnect con6
--disconnect con10
--echo # ------------------------------------------------------------------ --echo # ------------------------------------------------------------------
--echo # -- End of 4.1 tests --echo # -- End of 4.1 tests
--echo # ------------------------------------------------------------------ --echo # ------------------------------------------------------------------
...@@ -147,7 +159,7 @@ let $wait_condition = ...@@ -147,7 +159,7 @@ let $wait_condition =
--echo # -- Check that we allow exactly three user connections, no matter how --echo # -- Check that we allow exactly three user connections, no matter how
--echo # -- many threads are running. --echo # -- many threads are running.
--echo --echo
--echo # -- Connecting (1)... --echo # -- Connecting (1)...
let $con_name = con_1; let $con_name = con_1;
let $con_user_name = mysqltest_u1; let $con_user_name = mysqltest_u1;
...@@ -237,7 +249,7 @@ DROP USER mysqltest_u1@localhost; ...@@ -237,7 +249,7 @@ DROP USER mysqltest_u1@localhost;
########################################################################### ###########################################################################
--echo # -- Bug#35074: max_used_connections is not correct. --echo # -- Bug#35074: max_used_connections is not correct.
--echo --echo
FLUSH STATUS; FLUSH STATUS;
...@@ -250,11 +262,7 @@ SHOW STATUS LIKE 'max_used_connections'; ...@@ -250,11 +262,7 @@ SHOW STATUS LIKE 'max_used_connections';
SET GLOBAL event_scheduler = ON; SET GLOBAL event_scheduler = ON;
--echo # -- Waiting for Event Scheduler to start... --echo # -- Waiting for Event Scheduler to start...
let $wait_condition = --source include/running_event_scheduler.inc
SELECT COUNT(*) = 1
FROM information_schema.processlist
WHERE user = 'event_scheduler';
--source include/wait_condition.inc
# NOTE: We should use a new connection here instead of reconnect in order to # NOTE: We should use a new connection here instead of reconnect in order to
# avoid races (we can not for sure when the connection being disconnected is # avoid races (we can not for sure when the connection being disconnected is
...@@ -278,11 +286,7 @@ SHOW STATUS LIKE 'max_used_connections'; ...@@ -278,11 +286,7 @@ SHOW STATUS LIKE 'max_used_connections';
SET GLOBAL event_scheduler = OFF; SET GLOBAL event_scheduler = OFF;
--echo # -- Waiting for Event Scheduler to stop... --echo # -- Waiting for Event Scheduler to stop...
let $wait_condition = --source include/no_running_events.inc
SELECT COUNT(*) = 0
FROM information_schema.processlist
WHERE user = 'event_scheduler';
--source include/wait_condition.inc
--echo --echo
--echo # -- End of Bug#35074. --echo # -- End of Bug#35074.
...@@ -291,3 +295,7 @@ let $wait_condition = ...@@ -291,3 +295,7 @@ let $wait_condition =
--echo # ------------------------------------------------------------------ --echo # ------------------------------------------------------------------
--echo # -- End of 5.1 tests --echo # -- End of 5.1 tests
--echo # ------------------------------------------------------------------ --echo # ------------------------------------------------------------------
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
-- source include/have_innodb.inc --source include/have_innodb.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--disable_warnings --disable_warnings
drop table if exists t1; DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
--echo # Establish connection con1 (user=root)
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
--echo # Establish connection con2 (user=root)
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
### Test 1: ### Test 1:
### - While a consistent snapshot transaction is executed, ### - While a consistent snapshot transaction is executed,
### no external inserts should be visible to the transaction. ### no external inserts should be visible to the transaction.
--echo # Switch to connection con1
connection con1; connection con1;
create table t1 (a int) engine=innodb; CREATE TABLE t1 (a INT) ENGINE=innodb;
start transaction with consistent snapshot; START TRANSACTION WITH CONSISTENT SNAPSHOT;
--echo # Switch to connection con2
connection con2; connection con2;
insert into t1 values(1); INSERT INTO t1 VALUES(1);
--echo # Switch to connection con1
connection con1; connection con1;
select * from t1; # if consistent snapshot was set as expected, we SELECT * FROM t1; # if consistent snapshot was set as expected, we
# should see nothing. # should see nothing.
commit; COMMIT;
### Test 2: ### Test 2:
### - For any non-consistent snapshot transaction, external ### - For any non-consistent snapshot transaction, external
### committed inserts should be visible to the transaction. ### committed inserts should be visible to the transaction.
delete from t1; DELETE FROM t1;
start transaction; # Now we omit WITH CONSISTENT SNAPSHOT START TRANSACTION; # Now we omit WITH CONSISTENT SNAPSHOT
--echo # Switch to connection con2
connection con2; connection con2;
insert into t1 values(1); INSERT INTO t1 VALUES(1);
--echo # Switch to connection con1
connection con1; connection con1;
select * from t1; # if consistent snapshot was not set, as expected, we SELECT * FROM t1; # if consistent snapshot was not set, as expected, we
# should see 1. # should see 1.
commit; COMMIT;
drop table t1; --echo # Switch to connection default + close connections con1 and con2
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;
# End of 4.1 tests # End of 4.1 tests
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
connection con1; connection con1;
...@@ -5,12 +9,19 @@ dirty_close con1; ...@@ -5,12 +9,19 @@ dirty_close con1;
connection con2; connection con2;
--disable_warnings --disable_warnings
drop table if exists t1; DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
create table t1 (n int); CREATE TABLE t1 (n INT);
insert into t1 values (1),(2),(3); INSERT INTO t1 VALUES (1),(2),(3);
select * from t1; SELECT * FROM t1;
drop table t1; DROP TABLE t1;
connection default;
disconnect con2;
# End of 4.1 tests # End of 4.1 tests
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -4,74 +4,106 @@ ...@@ -4,74 +4,106 @@
# This is intended to mimick how mysqldump and innobackup work. # This is intended to mimick how mysqldump and innobackup work.
# And it requires InnoDB # And it requires InnoDB
-- source include/have_innodb.inc --source include/have_innodb.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--echo # Establish connection con1 (user=root)
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
--echo # Establish connection con2 (user=root)
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
--echo # Establish connection con3 (user=root)
connect (con3,localhost,root,,); connect (con3,localhost,root,,);
--echo # Switch to connection con1
connection con1; connection con1;
--disable_warnings --disable_warnings
drop table if exists t1; DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
create table t1 (a int) engine=innodb; CREATE TABLE t1 (a INT) ENGINE=innodb;
# blocks COMMIT ? # blocks COMMIT ?
begin; BEGIN;
insert into t1 values(1); INSERT INTO t1 VALUES(1);
--echo # Switch to connection con2
connection con2; connection con2;
flush tables with read lock; FLUSH TABLES WITH READ LOCK;
select * from t1; SELECT * FROM t1;
--echo # Switch to connection con1
connection con1; connection con1;
send commit; # blocked by con2 send COMMIT; # blocked by con2
sleep 1; sleep 1;
--echo # Switch to connection con2
connection con2; connection con2;
select * from t1; # verify con1 was blocked and data did not move SELECT * FROM t1; # verify con1 was blocked and data did not move
unlock tables; UNLOCK TABLES;
--echo # Switch to connection con1
connection con1; connection con1;
reap; reap;
# No deadlock ? # No deadlock ?
--echo # Switch to connection con1
connection con1; connection con1;
begin; BEGIN;
select * from t1 for update; SELECT * FROM t1 FOR UPDATE;
--echo # Switch to connection con2
connection con2; connection con2;
begin; BEGIN;
send select * from t1 for update; # blocked by con1 send SELECT * FROM t1 FOR UPDATE; # blocked by con1
sleep 1; sleep 1;
--echo # Switch to connection con3
connection con3; connection con3;
send flush tables with read lock; # blocked by con2 send FLUSH TABLES WITH READ LOCK; # blocked by con2
--echo # Switch to connection con1
connection con1; connection con1;
commit; # should not be blocked by con3 COMMIT; # should not be blocked by con3
--echo # Switch to connection con2
connection con2; connection con2;
reap; reap;
--echo # Switch to connection con3
connection con3; connection con3;
reap; reap;
unlock tables; UNLOCK TABLES;
# BUG#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES # Bug#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
# WITH READ LOCK # WITH READ LOCK
--echo # Switch to connection con2
connection con2; connection con2;
commit; # unlock InnoDB row locks to allow insertions COMMIT; # unlock InnoDB row locks to allow insertions
--echo # Switch to connection con1
connection con1; connection con1;
begin; BEGIN;
insert into t1 values(10); INSERT INTO t1 VALUES(10);
flush tables with read lock; FLUSH TABLES WITH READ LOCK;
commit; COMMIT;
unlock tables; UNLOCK TABLES;
--echo # Switch to connection con2
connection con2; connection con2;
flush tables with read lock; # bug caused hang here FLUSH TABLES WITH READ LOCK; # bug caused hang here
unlock tables; UNLOCK TABLES;
# Bug#7358 SHOW CREATE DATABASE fails if open transaction
BEGIN;
SELECT * FROM t1;
SHOW CREATE DATABASE test;
# BUG#7358 SHOW CREATE DATABASE fails if open transaction DROP TABLE t1;
begin;
select * from t1;
show create database test;
drop table t1; # Cleanup
--echo # Switch to connection default and close connections con1, con2, con3
connection default;
disconnect con1;
disconnect con2;
disconnect con3;
# End of 4.1 tests # End of 4.1 tests
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -3,32 +3,51 @@ ...@@ -3,32 +3,51 @@
# We verify that we did not introduce a deadlock. # We verify that we did not introduce a deadlock.
# This is intended to mimick how mysqldump and innobackup work. # This is intended to mimick how mysqldump and innobackup work.
-- source include/have_log_bin.inc --source include/have_log_bin.inc
# And it requires InnoDB # And it requires InnoDB
-- source include/have_log_bin.inc --source include/have_log_bin.inc
-- source include/have_innodb.inc --source include/have_innodb.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--echo # Establish connection con1 (user=root)
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
--echo # Establish connection con2 (user=root)
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
# FLUSH TABLES WITH READ LOCK should block writes to binlog too # FLUSH TABLES WITH READ LOCK should block writes to binlog too
--echo # Switch to connection con1
connection con1; connection con1;
create table t1 (a int) engine=innodb; CREATE TABLE t1 (a INT) ENGINE=innodb;
reset master; RESET MASTER;
set autocommit=0; SET AUTOCOMMIT=0;
insert t1 values (1); INSERT t1 VALUES (1);
--echo # Switch to connection con2
connection con2; connection con2;
flush tables with read lock; FLUSH TABLES WITH READ LOCK;
show master status; SHOW MASTER STATUS;
--echo # Switch to connection con1
connection con1; connection con1;
send commit; send COMMIT;
--echo # Switch to connection con2
connection con2; connection con2;
sleep 1; sleep 1;
show master status; SHOW MASTER STATUS;
unlock tables; UNLOCK TABLES;
--echo # Switch to connection con1
connection con1; connection con1;
reap; reap;
drop table t1; DROP TABLE t1;
set autocommit=1; SET AUTOCOMMIT=1;
--echo # Switch to connection default and close connections con1 and con2
connection default;
disconnect con1;
disconnect con2;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -8,24 +8,27 @@ ...@@ -8,24 +8,27 @@
# won't test anything interesting). # won't test anything interesting).
# This also won't work with the embedded server test # This also won't work with the embedded server test
-- source include/not_embedded.inc --source include/not_embedded.inc
-- source include/have_debug.inc --source include/have_debug.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
# Disable concurrent inserts to avoid test failures when reading the # Disable concurrent inserts to avoid test failures when reading the
# connection id which was inserted into a table by another thread. # connection id which was inserted into a table by another thread.
set @old_concurrent_insert= @@global.concurrent_insert; SET @old_concurrent_insert= @@global.concurrent_insert;
set @@global.concurrent_insert= 0; SET @@global.concurrent_insert= 0;
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
connect (con2,localhost,root,,); connect (con2,localhost,root,,);
connection con1; connection con1;
--disable_warnings --disable_warnings
drop table if exists t1; DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
create table t1 (kill_id int); CREATE TABLE t1 (kill_id INT);
insert into t1 values(connection_id()); INSERT INTO t1 VALUES(connection_id());
# Thanks to the parameter we passed to --debug, this FLUSH will # Thanks to the parameter we passed to --debug, this FLUSH will
# block on a debug build running with our --debug=make_global... It # block on a debug build running with our --debug=make_global... It
...@@ -33,11 +36,11 @@ insert into t1 values(connection_id()); ...@@ -33,11 +36,11 @@ insert into t1 values(connection_id());
# --debug) it will succeed immediately # --debug) it will succeed immediately
connection con1; connection con1;
send flush tables with read lock; send FLUSH TABLES WITH READ LOCK;
# kill con1 # kill con1
connection con2; connection con2;
select ((@id := kill_id) - kill_id) from t1; SELECT ((@id := kill_id) - kill_id) FROM t1;
# Wait for the debug sync point, test won't run on non-debug # Wait for the debug sync point, test won't run on non-debug
# builds anyway. # builds anyway.
...@@ -47,7 +50,7 @@ let $wait_condition= ...@@ -47,7 +50,7 @@ let $wait_condition=
and info = "flush tables with read lock"; and info = "flush tables with read lock";
--source include/wait_condition.inc --source include/wait_condition.inc
kill connection @id; KILL CONNECTION @id;
connection con1; connection con1;
# On debug builds it will be error 1053 (killed); on non-debug, or # On debug builds it will be error 1053 (killed); on non-debug, or
...@@ -58,8 +61,14 @@ connection con1; ...@@ -58,8 +61,14 @@ connection con1;
reap; reap;
connection con2; connection con2;
drop table t1; DROP TABLE t1;
connection default; connection default;
disconnect con2;
# Restore global concurrent_insert value # Restore global concurrent_insert value
set @@global.concurrent_insert= @old_concurrent_insert; SET @@global.concurrent_insert= @old_concurrent_insert;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
# should work with embedded server after mysqltest is fixed # should work with embedded server after mysqltest is fixed
--source include/not_embedded.inc --source include/not_embedded.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--source include/add_anonymous_users.inc --source include/add_anonymous_users.inc
connect (con0,localhost,root,,); connect (con0,localhost,root,,);
...@@ -233,7 +236,8 @@ connect (con1,localhost,mysqltest1,,); ...@@ -233,7 +236,8 @@ connect (con1,localhost,mysqltest1,,);
connection con1; connection con1;
select * from t1; select * from t1;
connection con0; connection default;
disconnect con0;
disconnect con1; disconnect con1;
drop trigger trg1; drop trigger trg1;
...@@ -244,3 +248,7 @@ set global init_connect="set @a='a\\0c'"; ...@@ -244,3 +248,7 @@ set global init_connect="set @a='a\\0c'";
revoke all privileges, grant option from mysqltest1@localhost; revoke all privileges, grant option from mysqltest1@localhost;
drop user mysqltest1@localhost; drop user mysqltest1@localhost;
drop table t1, t2; drop table t1, t2;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
This diff is collapsed.
...@@ -24,7 +24,7 @@ insert into t2 values (); ...@@ -24,7 +24,7 @@ insert into t2 values ();
# set @a:=1 # set @a:=1
# insert into t2 values (@a); # insert into t2 values (@a);
# test for load data and load data distributed among the several # test for load data and load data distributed among the several
# files (we need to fill up first binlog) # files (we need to fill up first binlog)
load data infile '../../std_data/words.dat' into table t1; load data infile '../../std_data/words.dat' into table t1;
load data infile '../../std_data/words.dat' into table t1; load data infile '../../std_data/words.dat' into table t1;
...@@ -109,7 +109,7 @@ select "--- --position --" as ""; ...@@ -109,7 +109,7 @@ select "--- --position --" as "";
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/ --replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=239 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 --exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --read-from-remote-server --position=239 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
# Bug#7853 (mysqlbinlog does not accept input from stdin) # Bug#7853 mysqlbinlog does not accept input from stdin
--disable_query_log --disable_query_log
select "--- reading stdin --" as ""; select "--- reading stdin --" as "";
--enable_query_log --enable_query_log
...@@ -123,7 +123,7 @@ select "--- reading stdin --" as ""; ...@@ -123,7 +123,7 @@ select "--- reading stdin --" as "";
drop table t1,t2; drop table t1,t2;
# #
#BUG#14157: utf8 encoding in binlog without set character_set_client # Bug#14157 utf8 encoding in binlog without set character_set_client
# #
flush logs; flush logs;
--write_file $MYSQLTEST_VARDIR/tmp/bug14157.sql --write_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
...@@ -136,8 +136,8 @@ EOF ...@@ -136,8 +136,8 @@ EOF
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug14157.sql --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug14157.sql
--remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql --remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
# resulted binlog, parly consisting of multi-byte utf8 chars, # resulted binlog, parly consisting of multi-byte utf8 chars,
# must be digestable for both client and server. In 4.1 the client # must be digestable for both client and server. In 4.1 the client
# should use default-character-set same as the server. # should use default-character-set same as the server.
flush logs; flush logs;
--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000004 | $MYSQL --exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000004 | $MYSQL
...@@ -164,7 +164,7 @@ select * from t5 order by c1; ...@@ -164,7 +164,7 @@ select * from t5 order by c1;
drop table t5; drop table t5;
# #
# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails # Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
# #
--disable_warnings --disable_warnings
drop procedure if exists p1; drop procedure if exists p1;
...@@ -180,7 +180,7 @@ delimiter ;// ...@@ -180,7 +180,7 @@ delimiter ;//
flush logs; flush logs;
call p1(); call p1();
drop procedure p1; drop procedure p1;
--error ER_SP_DOES_NOT_EXIST --error ER_SP_DOES_NOT_EXIST
call p1(); call p1();
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/ --replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000008 --exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000008
...@@ -223,14 +223,14 @@ flush logs; ...@@ -223,14 +223,14 @@ flush logs;
# #
# Bug#28293 missed '#' sign in the hex dump when the dump length # Bug#28293 missed '#' sign in the hex dump when the dump length
# is divisible by 16. # is divisible by 16.
# #
CREATE TABLE t1 (c1 CHAR(10)); CREATE TABLE t1 (c1 CHAR(10));
# we need this for getting fixed timestamps inside of this test # we need this for getting fixed timestamps inside of this test
flush logs; FLUSH LOGS;
INSERT INTO t1 VALUES ('0123456789'); INSERT INTO t1 VALUES ('0123456789');
flush logs; FLUSH LOGS;
DROP TABLE t1; DROP TABLE t1;
# We create a table, patch, and load the output into it # We create a table, patch, and load the output into it
...@@ -238,11 +238,11 @@ DROP TABLE t1; ...@@ -238,11 +238,11 @@ DROP TABLE t1;
# We can easily see if a 'Query' line is missing the '#' character # We can easily see if a 'Query' line is missing the '#' character
# as described in the original bug # as described in the original bug
--disable_query_log --disable_query_log
CREATE TABLE patch (a blob); CREATE TABLE patch (a BLOB);
--exec $MYSQL_BINLOG --hexdump --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLD_DATADIR/master-bin.000012 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat --exec $MYSQL_BINLOG --hexdump --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLD_DATADIR/master-bin.000012 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat
eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat' eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat'
INTO TABLE patch FIELDS TERMINATED by '' LINES STARTING BY '#'; INTO TABLE patch FIELDS TERMINATED BY '' LINES STARTING BY '#';
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat --remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat
--enable_query_log --enable_query_log
...@@ -254,40 +254,42 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%'; ...@@ -254,40 +254,42 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
DROP TABLE patch; DROP TABLE patch;
# #
# Bug #29928: incorrect connection_id() restoring from mysqlbinlog out # Bug#29928 incorrect connection_id() restoring from mysqlbinlog out
# #
flush logs; FLUSH LOGS;
create table t1(a int); CREATE TABLE t1(a INT);
insert into t1 values(connection_id()); INSERT INTO t1 VALUES(connection_id());
let $a= `select a from t1`; let $a= `SELECT a FROM t1`;
flush logs; FLUSH LOGS;
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000014 > $MYSQLTEST_VARDIR/tmp/bug29928.sql let $outfile= $MYSQLTEST_VARDIR/tmp/bug29928.sql;
drop table t1; --exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000014 > $outfile
connect (con1, localhost, root, , test); DROP TABLE t1;
connect (con1, localhost, root, , test);
connection con1; connection con1;
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug29928.sql --exec $MYSQL test < $outfile
--remove_file $MYSQLTEST_VARDIR/tmp/bug29928.sql --remove_file $outfile
let $b= `select a from t1`; let $b= `SELECT a FROM t1`;
disconnect con1; disconnect con1;
connection default; connection default;
let $c= `select $a=$b`; let $c= `SELECT $a=$b`;
--echo $c --echo $c
drop table t1; DROP TABLE t1;
echo shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql; echo shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql;
error 1; error 1;
exec $MYSQL_BINLOG $MYSQL_TEST_DIR/std_data/corrupt-relay-bin.000624 > $MYSQLTEST_VARDIR/tmp/bug31793.sql; exec $MYSQL_BINLOG $MYSQL_TEST_DIR/std_data/corrupt-relay-bin.000624 > $MYSQLTEST_VARDIR/tmp/bug31793.sql;
--remove_file $MYSQLTEST_VARDIR/tmp/bug31793.sql
# #
# Test --disable-force-if-open and --force-if-open # Test --disable-force-if-open and --force-if-open
# #
flush logs; FLUSH LOGS;
--error 1 --error 1
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000016 >/dev/null 2>/dev/null --exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000016 >/dev/null 2>/dev/null
--exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/master-bin.000016 >/dev/null 2>/dev/null --exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/master-bin.000016 >/dev/null 2>/dev/null
--echo BUG#31611: Security risk with BINLOG statement --echo Bug#31611 Security risk with BINLOG statement
SET BINLOG_FORMAT=ROW; SET BINLOG_FORMAT=ROW;
CREATE DATABASE mysqltest1; CREATE DATABASE mysqltest1;
...@@ -306,6 +308,7 @@ connect (unsecure,localhost,untrusted,,mysqltest1); ...@@ -306,6 +308,7 @@ connect (unsecure,localhost,untrusted,,mysqltest1);
echo mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql; echo mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql;
error 1; error 1;
exec $MYSQL mysqltest1 -uuntrusted < $MYSQLTEST_VARDIR/tmp/bug31611.sql; exec $MYSQL mysqltest1 -uuntrusted < $MYSQLTEST_VARDIR/tmp/bug31611.sql;
--remove_file $MYSQLTEST_VARDIR/tmp/bug31611.sql
connection unsecure; connection unsecure;
error ER_TABLEACCESS_DENIED_ERROR; error ER_TABLEACCESS_DENIED_ERROR;
INSERT INTO t1 VALUES (1,USER()); INSERT INTO t1 VALUES (1,USER());
...@@ -315,7 +318,7 @@ connection default; ...@@ -315,7 +318,7 @@ connection default;
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
DROP USER untrusted@localhost; DROP USER untrusted@localhost;
--echo BUG#32580: mysqlbinlog cannot read binlog event with user variables --echo Bug#32580 mysqlbinlog cannot read binlog event with user variables
# Testing that various kinds of events can be read and restored properly. # Testing that various kinds of events can be read and restored properly.
...@@ -343,24 +346,25 @@ query_vertical SELECT * FROM t1; ...@@ -343,24 +346,25 @@ query_vertical SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
# #
# Bug #37313 BINLOG Contains Incorrect server id # Bug#37313 BINLOG Contains Incorrect server id
# #
let $save_server_id= `select @@global.server_id`; let $binlog_file= $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog;
let $s_id_max=`select (1 << 32) - 1`; let $save_server_id= `SELECT @@global.server_id`;
eval set @@global.server_id= $s_id_max; let $s_id_max= `SELECT (1 << 32) - 1`;
eval SET @@global.server_id= $s_id_max;
reset master; RESET MASTER;
flush logs; FLUSH LOGS;
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog --exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $binlog_file
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select eval SELECT
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog")) (@a:=LOAD_FILE("$binlog_file"))
is not null; IS NOT NULL;
let $s_id_unsigned= `select @a like "%server id $s_id_max%" /* must return 1 */`; let $s_id_unsigned= `SELECT @a LIKE "%server id $s_id_max%" /* must return 1 */`;
echo *** Unsigned server_id $s_id_max is found: $s_id_unsigned ***; echo *** Unsigned server_id $s_id_max is found: $s_id_unsigned ***;
eval set @@global.server_id= $save_server_id; eval SET @@global.server_id= $save_server_id;
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog --remove_file $binlog_file
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
# This test uses chmod, can't be run with root permissions # This test uses chmod, can't be run with root permissions
-- source include/not_as_root.inc -- source include/not_as_root.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
# ============================================================================ # ============================================================================
# #
# Test of mysqltest itself # Test of mysqltest itself
...@@ -50,7 +53,7 @@ select otto from (select 1 as otto) as t1; ...@@ -50,7 +53,7 @@ select otto from (select 1 as otto) as t1;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Negative case(statement): # Negative case(statement):
# The derived table t1 does not contain a column named 'friedrich' . # The derived table t1 does not contain a column named 'friedrich' .
# --> ERROR 42S22: Unknown column 'friedrich' in 'field list and # --> ERROR 42S22: Unknown column 'friedrich' in 'field list and
# --> 1054: Unknown column 'friedrich' in 'field list' # --> 1054: Unknown column 'friedrich' in 'field list'
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
...@@ -121,7 +124,7 @@ select friedrich from (select 1 as otto) as t1; ...@@ -121,7 +124,7 @@ select friedrich from (select 1 as otto) as t1;
# $mysql_errno is a builtin variable of mysqltest and contains the return code # $mysql_errno is a builtin variable of mysqltest and contains the return code
# of the last command sent to the server. # of the last command sent to the server.
# #
# The following test cases often initialize $mysql_errno to 1064 by # The following test cases often initialize $mysql_errno to 1064 by
# a command with wrong syntax. # a command with wrong syntax.
# Example: --error 1064 To prevent the abort after the error. # Example: --error 1064 To prevent the abort after the error.
# garbage ; # garbage ;
...@@ -485,7 +488,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql; ...@@ -485,7 +488,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql;
# Allow trailing # comment # Allow trailing # comment
--sleep 1 # Wait for insert delayed to be executed. --sleep 1 # Wait for insert delayed to be executed.
--sleep 1 # Wait for insert delayed to be executed. --sleep 1 # Wait for insert delayed to be executed.
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Test error # Test error
...@@ -707,7 +710,7 @@ echo Not a banana: $cat; ...@@ -707,7 +710,7 @@ echo Not a banana: $cat;
--error 1 --error 1
--exec echo "let hi;" | $MYSQL_TEST 2>&1 --exec echo "let hi;" | $MYSQL_TEST 2>&1
# More advanced test for bug#17280 # More advanced test for Bug#17280
let $success= 1; let $success= 1;
--echo # Execute: --echo # <whatever> success: \$success --echo # Execute: --echo # <whatever> success: \$success
--echo # <whatever> success: $success --echo # <whatever> success: $success
...@@ -1386,12 +1389,12 @@ connection default; ...@@ -1386,12 +1389,12 @@ connection default;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# TODO Test queries, especially their errormessages... so it's easy to debug # TODO Test queries, especially their errormessages... so it's easy to debug
# new scripts and diagnose errors # new scripts and diagnose errors
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Test bug#12386 # Test Bug#12386
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
let $num= 2; let $num= 2;
while ($num) while ($num)
...@@ -1407,7 +1410,7 @@ SELECT 1 as a; ...@@ -1407,7 +1410,7 @@ SELECT 1 as a;
# #
# Bug #10251: Identifiers containing quotes not handled correctly # Bug#10251 Identifiers containing quotes not handled correctly
# #
select 1 as `a'b`, 2 as `a"b`; select 1 as `a'b`, 2 as `a"b`;
...@@ -1428,7 +1431,7 @@ let $message= `SELECT USER()`; ...@@ -1428,7 +1431,7 @@ let $message= `SELECT USER()`;
# The message contains more then 80 characters on multiple lines # The message contains more then 80 characters on multiple lines
# and is kept between double quotes. # and is kept between double quotes.
let $message= let $message=
"Here comes a very very long message that "Here comes a very very long message that
- is longer then 80 characters and - is longer then 80 characters and
- consists of several lines"; - consists of several lines";
...@@ -1465,6 +1468,8 @@ remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.result; ...@@ -1465,6 +1468,8 @@ remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.result;
--error 0,1 --error 0,1
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.reject; remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.reject;
--error 0,1 --error 0,1
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.log;
--error 0,1
remove_file $MYSQL_TEST_DIR/r/zero_length_file.reject; remove_file $MYSQL_TEST_DIR/r/zero_length_file.reject;
# #
...@@ -1487,8 +1492,8 @@ remove_file $MYSQLTEST_VARDIR/tmp/query.sql; ...@@ -1487,8 +1492,8 @@ remove_file $MYSQLTEST_VARDIR/tmp/query.sql;
#--exec $MYSQL_TEST -x $MYSQLTEST_VARDIR/tmp/query.sql -R $MYSQLTEST_VARDIR/tmp/result_file.result 2>&1 #--exec $MYSQL_TEST -x $MYSQLTEST_VARDIR/tmp/query.sql -R $MYSQLTEST_VARDIR/tmp/result_file.result 2>&1
# #
# Bug #11731 mysqltest in multi-statement queries ignores errors in # Bug#11731 mysqltest in multi-statement queries ignores errors in
# non-1st queries # non-1st queries
# #
echo Failing multi statement query; echo Failing multi statement query;
...@@ -1539,7 +1544,7 @@ remove_file $MYSQLTEST_VARDIR/log/bug11731.log; ...@@ -1539,7 +1544,7 @@ remove_file $MYSQLTEST_VARDIR/log/bug11731.log;
remove_file $MYSQLTEST_VARDIR/tmp/bug11731.sql; remove_file $MYSQLTEST_VARDIR/tmp/bug11731.sql;
# #
# Bug#19890 mysqltest: "query" command is broken # Bug#19890 mysqltest "query" command is broken
# #
# It should be possible to use the command "query" to force mysqltest to # It should be possible to use the command "query" to force mysqltest to
...@@ -1565,7 +1570,7 @@ select "at" as col1, "c" as col2; ...@@ -1565,7 +1570,7 @@ select "at" as col1, "c" as col2;
select "at" as col1, "AT" as col2, "c" as col3; select "at" as col1, "AT" as col2, "c" as col3;
--replace_regex /a/b/ /ct/d/ --replace_regex /a/b/ /ct/d/
select "a" as col1, "ct" as col2; select "a" as col1, "ct" as col2;
--replace_regex /(strawberry)/raspberry and \1/ /blueberry/blackberry/ /potato/tomato/; --replace_regex /(strawberry)/raspberry and \1/ /blueberry/blackberry/ /potato/tomato/;
select "strawberry","blueberry","potato"; select "strawberry","blueberry","potato";
...@@ -1583,7 +1588,7 @@ select "strawberry","blueberry","potato"; ...@@ -1583,7 +1588,7 @@ select "strawberry","blueberry","potato";
--error 1 --error 1
--exec echo "--replace_regex /a b c" | $MYSQL_TEST 2>&1 --exec echo "--replace_regex /a b c" | $MYSQL_TEST 2>&1
--error 1 --error 1
--exec echo "replace_regex /a /b c ;" | $MYSQL_TEST 2>&1 --exec echo "replace_regex /a /b c ;" | $MYSQL_TEST 2>&1
# REQUIREMENT # REQUIREMENT
# replace_regex should replace substitutions from left to right in output # replace_regex should replace substitutions from left to right in output
...@@ -1954,7 +1959,7 @@ SELECT '2' as "my_col1",2 as "my_col2" ...@@ -1954,7 +1959,7 @@ SELECT '2' as "my_col1",2 as "my_col2"
UNION UNION
SELECT '1',1 from t2; SELECT '1',1 from t2;
# 9. Ensure that several result formatting options including "sorted_result" # 9. Ensure that several result formatting options including "sorted_result"
# - have all an effect # - have all an effect
# - "--sorted_result" does not need to be direct before the statement # - "--sorted_result" does not need to be direct before the statement
# - Row sorting is applied after modification of the column content # - Row sorting is applied after modification of the column content
...@@ -2170,15 +2175,15 @@ remove_file $MYSQLTEST_VARDIR/tmp/testdir/file3.txt; ...@@ -2170,15 +2175,15 @@ remove_file $MYSQLTEST_VARDIR/tmp/testdir/file3.txt;
rmdir $MYSQLTEST_VARDIR/tmp/testdir; rmdir $MYSQLTEST_VARDIR/tmp/testdir;
# #
# Bug #36041: mysql-test-run doesn't seem to string match 100% effectively # Bug#36041 mysql-test-run doesn't seem to string match 100% effectively
# on Windows # on Windows
# #
--replace_result c:\\a.txt z --replace_result c:\\a.txt z
SELECT 'c:\\a.txt' AS col; SELECT 'c:\\a.txt' AS col;
# #
# Bug #32307 mysqltest - does not detect illegal if syntax # Bug#32307 mysqltest - does not detect illegal if syntax
# #
let $test= 1; let $test= 1;
...@@ -2212,12 +2217,14 @@ select 1; ...@@ -2212,12 +2217,14 @@ select 1;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# BUG#35701: please allow test language variables in connection and sync_slave_with_master # BUG#35701 please allow test language variables in connection and sync_slave_with_master
# Test that "connection $variable" works and that $CURRENT_CONNECTION has the right value. # Test that "connection $variable" works and that $CURRENT_CONNECTION has the right value.
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
--echo $CURRENT_CONNECTION --echo $CURRENT_CONNECTION
connect (con2,localhost,root,,);
--echo $CURRENT_CONNECTION
connection default; connection default;
--echo $CURRENT_CONNECTION --echo $CURRENT_CONNECTION
...@@ -2225,8 +2232,11 @@ connection default; ...@@ -2225,8 +2232,11 @@ connection default;
connection con1; connection con1;
--echo $CURRENT_CONNECTION --echo $CURRENT_CONNECTION
let $x= default; connection con2;
let $y= con1; --echo $CURRENT_CONNECTION
let $x= con1;
let $y= con2;
connection $x; connection $x;
--echo $CURRENT_CONNECTION --echo $CURRENT_CONNECTION
...@@ -2245,3 +2255,6 @@ disconnect $y; ...@@ -2245,3 +2255,6 @@ disconnect $y;
--echo End of tests --echo End of tests
connection default;
# Wait till we reached the initial number of concurrent sessions
--source include/wait_until_count_sessions.inc
...@@ -3,10 +3,12 @@ ...@@ -3,10 +3,12 @@
# should work with embedded server after mysqltest is fixed # should work with embedded server after mysqltest is fixed
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/count_sessions.inc
set @start_read_only= @@global.read_only; set @start_read_only= @@global.read_only;
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--disable_warnings --disable_warnings
DROP TABLE IF EXISTS t1,t2,t3; DROP TABLE IF EXISTS t1,t2,t3;
--enable_warnings --enable_warnings
...@@ -110,7 +112,7 @@ drop table t1; ...@@ -110,7 +112,7 @@ drop table t1;
insert into t1 values(1); insert into t1 values(1);
# #
# BUG#11733: COMMITs should not happen if read-only is set # Bug#11733 COMMITs should not happen if read-only is set
# #
# LOCK TABLE ... WRITE / READ_ONLY # LOCK TABLE ... WRITE / READ_ONLY
...@@ -238,8 +240,9 @@ set global read_only=1; ...@@ -238,8 +240,9 @@ set global read_only=1;
connection default; connection default;
select @@global.read_only; select @@global.read_only;
unlock tables; unlock tables;
disconnect root2;
# BUG #22077 "DROP TEMPORARY TABLE fails with wrong error if read_only is set" # Bug#22077 DROP TEMPORARY TABLE fails with wrong error if read_only is set
# #
# check if DROP TEMPORARY on a non-existing temporary table returns the right # check if DROP TEMPORARY on a non-existing temporary table returns the right
# error # error
...@@ -256,10 +259,12 @@ drop temporary table if exists ttt; ...@@ -256,10 +259,12 @@ drop temporary table if exists ttt;
--echo connection default; --echo connection default;
connection default; connection default;
set global read_only=0; set global read_only=0;
disconnect con1;
drop table t1,t2; drop table t1,t2;
drop user test@localhost; drop user test@localhost;
--echo # --echo #
--echo # Bug #27440 read_only allows create and drop database --echo # Bug#27440 read_only allows create and drop database
--echo # --echo #
set global read_only= 1; set global read_only= 1;
--disable_warnings --disable_warnings
...@@ -297,7 +302,7 @@ delete from mysql.columns_priv where User like 'mysqltest_%'; ...@@ -297,7 +302,7 @@ delete from mysql.columns_priv where User like 'mysqltest_%';
flush privileges; flush privileges;
drop database mysqltest_db1; drop database mysqltest_db1;
set global read_only= @start_read_only; set global read_only= @start_read_only;
disconnect con1;
disconnect root2; # Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
# depends on the presence of the log tables (which are CSV-based). # depends on the presence of the log tables (which are CSV-based).
--source include/have_csv.inc --source include/have_csv.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
# #
# Test of some show commands # Test of some show commands
# #
...@@ -195,7 +198,7 @@ show columns from t1; ...@@ -195,7 +198,7 @@ show columns from t1;
drop table t1; drop table t1;
# #
# Test for Bug #2593 "SHOW CREATE TABLE doesn't properly double quotes" # Test for Bug#2593 SHOW CREATE TABLE doesn't properly double quotes
# #
SET @old_sql_mode= @@sql_mode, sql_mode= ''; SET @old_sql_mode= @@sql_mode, sql_mode= '';
...@@ -223,7 +226,7 @@ CREATE TABLE """a" (i INT); ...@@ -223,7 +226,7 @@ CREATE TABLE """a" (i INT);
SHOW CREATE TABLE """a"; SHOW CREATE TABLE """a";
DROP TABLE """a"; DROP TABLE """a";
#Bug #4374 SHOW TABLE STATUS FROM ignores collation_connection # Bug#4374 SHOW TABLE STATUS FROM ignores collation_connection
#set names latin1; #set names latin1;
#create database ``; #create database ``;
#create table ``.`` (a int) engine=heap; #create table ``.`` (a int) engine=heap;
...@@ -248,7 +251,7 @@ SET sql_quote_show_create= @old_sql_quote_show_create; ...@@ -248,7 +251,7 @@ SET sql_quote_show_create= @old_sql_quote_show_create;
SET sql_mode= @old_sql_mode; SET sql_mode= @old_sql_mode;
# #
# Test for bug #2719 "Heap tables status shows wrong or missing data." # Test for Bug#2719 Heap tables status shows wrong or missing data.
# #
select @@max_heap_table_size; select @@max_heap_table_size;
...@@ -309,7 +312,7 @@ show table status; ...@@ -309,7 +312,7 @@ show table status;
drop table t1, t2, t3; drop table t1, t2, t3;
# #
# Test for bug #3342 SHOW CREATE DATABASE seems to require DROP privilege # Test for Bug#3342 SHOW CREATE DATABASE seems to require DROP privilege
# #
create database mysqltest; create database mysqltest;
...@@ -324,35 +327,38 @@ connect (con1,localhost,mysqltest_1,,mysqltest); ...@@ -324,35 +327,38 @@ connect (con1,localhost,mysqltest_1,,mysqltest);
connection con1; connection con1;
select * from t1; select * from t1;
show create database mysqltest; show create database mysqltest;
--error 1142 --error ER_TABLEACCESS_DENIED_ERROR
drop table t1; drop table t1;
--error 1044 --error ER_DBACCESS_DENIED_ERROR
drop database mysqltest; drop database mysqltest;
disconnect con1;
connect (con2,localhost,mysqltest_2,,test); connect (con2,localhost,mysqltest_2,,test);
connection con2; connection con2;
--error 1142 --error ER_TABLEACCESS_DENIED_ERROR
select * from mysqltest.t1; select * from mysqltest.t1;
--error 1044 --error ER_DBACCESS_DENIED_ERROR
show create database mysqltest; show create database mysqltest;
--error 1142 --error ER_TABLEACCESS_DENIED_ERROR
drop table mysqltest.t1; drop table mysqltest.t1;
--error 1044 --error ER_DBACCESS_DENIED_ERROR
drop database mysqltest; drop database mysqltest;
disconnect con2;
connect (con3,localhost,mysqltest_3,,test); connect (con3,localhost,mysqltest_3,,test);
connection con3; connection con3;
--error 1142 --error ER_TABLEACCESS_DENIED_ERROR
select * from mysqltest.t1; select * from mysqltest.t1;
show create database mysqltest; show create database mysqltest;
drop table mysqltest.t1; drop table mysqltest.t1;
drop database mysqltest; drop database mysqltest;
disconnect con3;
connection default; connection default;
set names binary; set names binary;
delete from mysql.user delete from mysql.user
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
delete from mysql.db delete from mysql.db
where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
flush privileges; flush privileges;
...@@ -366,7 +372,7 @@ flush privileges; ...@@ -366,7 +372,7 @@ flush privileges;
#drop database ``; #drop database ``;
# Test that USING <keytype> is always shown in SHOW CREATE TABLE when it was # Test that USING <keytype> is always shown in SHOW CREATE TABLE when it was
# specified during table creation, but not otherwise. (Bug #7235) # specified during table creation, but not otherwise. (Bug#7235)
CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY; CREATE TABLE t1 (i int, KEY (i)) ENGINE=MEMORY;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -397,7 +403,7 @@ ALTER TABLE t1 ENGINE=MEMORY; ...@@ -397,7 +403,7 @@ ALTER TABLE t1 ENGINE=MEMORY;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
# Test for BUG#9439 "Reporting wrong datatype for sub_part on show index" # Test for Bug#9439 Reporting wrong datatype for sub_part on show index
CREATE TABLE t1( CREATE TABLE t1(
field1 text NOT NULL, field1 text NOT NULL,
PRIMARY KEY(field1(1000)) PRIMARY KEY(field1(1000))
...@@ -407,7 +413,7 @@ show index from t1; ...@@ -407,7 +413,7 @@ show index from t1;
--disable_metadata --disable_metadata
drop table t1; drop table t1;
# Test for BUG#11635: mysqldump exports TYPE instead of USING for HASH # Test for Bug#11635 mysqldump exports TYPE instead of USING for HASH
create table t1 ( create table t1 (
c1 int NOT NULL, c1 int NOT NULL,
c2 int NOT NULL, c2 int NOT NULL,
...@@ -417,7 +423,7 @@ create table t1 ( ...@@ -417,7 +423,7 @@ create table t1 (
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
# Test for BUG#93: 4.1 protocl crash on corupted frm and SHOW TABLE STATUS # Test for Bug#93 4.1 protocl crash on corupted frm and SHOW TABLE STATUS
flush tables; flush tables;
...@@ -426,19 +432,19 @@ let $MYSQLD_DATADIR= `select @@datadir`; ...@@ -426,19 +432,19 @@ let $MYSQLD_DATADIR= `select @@datadir`;
system echo "this is a junk file for test" >> $MYSQLD_DATADIR/test/t1.frm ; system echo "this is a junk file for test" >> $MYSQLD_DATADIR/test/t1.frm ;
--replace_column 6 # 7 # 8 # 9 # --replace_column 6 # 7 # 8 # 9 #
SHOW TABLE STATUS like 't1'; SHOW TABLE STATUS like 't1';
--error 1033 --error ER_NOT_FORM_FILE
show create table t1; show create table t1;
drop table if exists t1; drop table if exists t1;
--error 1,0 --error 1,0
--remove_file $MYSQLD_DATADIR/test/t1.frm --remove_file $MYSQLD_DATADIR/test/t1.frm
# #
# BUG 12183 - SHOW OPEN TABLES behavior doesn't match grammar # Bug#12183 SHOW OPEN TABLES behavior doesn't match grammar
# First we close all open tables with FLUSH tables and then we open some. # First we close all open tables with FLUSH tables and then we open some.
# #
--echo --echo
--echo # Bug#12183: SHOW OPEN TABLES behavior doesn't match grammar. --echo # Bug#12183 SHOW OPEN TABLES behavior doesn't match grammar.
--echo --echo
# NOTE: SHOW OPEN TABLES does not sort result list by database or table names. # NOTE: SHOW OPEN TABLES does not sort result list by database or table names.
...@@ -497,15 +503,15 @@ use test; ...@@ -497,15 +503,15 @@ use test;
--echo --echo
# #
# BUG #12591 (SHOW TABLES FROM dbname produces wrong error message) # Bug#12591 SHOW TABLES FROM dbname produces wrong error message
# #
--error 1049 --error ER_BAD_DB_ERROR
SHOW TABLES FROM non_existing_database; SHOW TABLES FROM non_existing_database;
--echo End of 4.1 tests --echo End of 4.1 tests
# #
# Bug#17203: "sql_no_cache sql_cache" in views created from prepared # Bug#17203 "sql_no_cache sql_cache" in views created from prepared
# statement # statement
# #
# The problem was that initial user setting was forgotten, and current # The problem was that initial user setting was forgotten, and current
...@@ -585,7 +591,7 @@ SHOW COLUMNS FROM no_such_table; ...@@ -585,7 +591,7 @@ SHOW COLUMNS FROM no_such_table;
# #
# Bug #19764: SHOW commands end up in the slow log as table scans # Bug#19764 SHOW commands end up in the slow log as table scans
# #
flush status; flush status;
show status like 'slow_queries'; show status like 'slow_queries';
...@@ -597,7 +603,7 @@ select 1 from information_schema.tables limit 1; ...@@ -597,7 +603,7 @@ select 1 from information_schema.tables limit 1;
show status like 'slow_queries'; show status like 'slow_queries';
create table t1 (a int); create table t1 (a int);
create trigger tr1 before insert on t1 for each row create trigger tr1 before insert on t1 for each row
begin begin
end; end;
create view v1 as select a from t1; create view v1 as select a from t1;
...@@ -657,9 +663,10 @@ drop table t1; ...@@ -657,9 +663,10 @@ drop table t1;
drop procedure p1; drop procedure p1;
drop function f1; drop function f1;
drop event e1; drop event e1;
# #
# BUG#10491: Server returns data as charset binary SHOW CREATE TABLE or SELECT # Bug#10491 Server returns data as charset binary SHOW CREATE TABLE or SELECT
# FROM I_S. # FROM I_S.
# #
# #
...@@ -774,7 +781,7 @@ SHOW TRIGGERS LIKE 't1'; ...@@ -774,7 +781,7 @@ SHOW TRIGGERS LIKE 't1';
--echo ---------------------------------------------------------------- --echo ----------------------------------------------------------------
SELECT SELECT
TRIGGER_CATALOG, TRIGGER_CATALOG,
TRIGGER_SCHEMA, TRIGGER_SCHEMA,
TRIGGER_NAME, TRIGGER_NAME,
...@@ -930,7 +937,7 @@ DROP DATABASE mysqltest1; ...@@ -930,7 +937,7 @@ DROP DATABASE mysqltest1;
use test; use test;
# #
# Bug #28808: log_queries_not_using_indexes variable dynamic change is ignored # Bug#28808 log_queries_not_using_indexes variable dynamic change is ignored
# #
flush status; flush status;
show variables like "log_queries_not_using_indexes"; show variables like "log_queries_not_using_indexes";
...@@ -946,7 +953,7 @@ select 1 from information_schema.tables limit 1; ...@@ -946,7 +953,7 @@ select 1 from information_schema.tables limit 1;
show status like 'slow_queries'; show status like 'slow_queries';
# #
# Bug #30088: Can't disable myisam-recover by a value of "" # Bug#30088 Can't disable myisam-recover by a value of ""
# #
show variables like 'myisam_recover_options'; show variables like 'myisam_recover_options';
...@@ -977,7 +984,8 @@ SHOW AUTHORS; ...@@ -977,7 +984,8 @@ SHOW AUTHORS;
--enable_result_log --enable_result_log
# #
# Test for bug #9785 SELECT privilege for the whole database is needed to do SHOW CREATE DATABASE # Bug#9785 SELECT privilege for the whole database is needed to do
# SHOW CREATE DATABASE
# #
create database mysqltest; create database mysqltest;
show create database mysqltest; show create database mysqltest;
...@@ -993,6 +1001,8 @@ delete from mysql.db where user='mysqltest_4'; ...@@ -993,6 +1001,8 @@ delete from mysql.db where user='mysqltest_4';
delete from mysql.tables_priv where user='mysqltest_4'; delete from mysql.tables_priv where user='mysqltest_4';
flush privileges; flush privileges;
drop database mysqltest; drop database mysqltest;
connection default;
disconnect con4;
# #
# Ensure that show plugin code is tested # Ensure that show plugin code is tested
...@@ -1008,8 +1018,8 @@ show plugins; ...@@ -1008,8 +1018,8 @@ show plugins;
--enable_result_log --enable_result_log
# #
# Bug #19874: SHOW COLUMNS and SHOW KEYS handle identifiers containing # Bug#19874 SHOW COLUMNS and SHOW KEYS handle identifiers containing
# \ incorrectly # \ incorrectly
# #
create database `mysqlttest\1`; create database `mysqlttest\1`;
create table `mysqlttest\1`.`a\b` (a int); create table `mysqlttest\1`.`a\b` (a int);
...@@ -1021,7 +1031,7 @@ drop table `mysqlttest\1`.`a\b`; ...@@ -1021,7 +1031,7 @@ drop table `mysqlttest\1`.`a\b`;
drop database `mysqlttest\1`; drop database `mysqlttest\1`;
# #
# Bug#24392: SHOW ENGINE MUTEX STATUS is a synonym for SHOW INNODB STATUS # Bug#24392 SHOW ENGINE MUTEX STATUS is a synonym for SHOW INNODB STATUS
# #
--error ER_UNKNOWN_STORAGE_ENGINE --error ER_UNKNOWN_STORAGE_ENGINE
...@@ -1107,8 +1117,8 @@ DROP PROCEDURE p1; ...@@ -1107,8 +1117,8 @@ DROP PROCEDURE p1;
DEALLOCATE PREPARE stmt1; DEALLOCATE PREPARE stmt1;
# #
# BUG#10491: Server returns data as charset binary SHOW CREATE TABLE or SELECT # Bug#10491 Server returns data as charset binary SHOW CREATE TABLE or SELECT
# FROM INFORMATION_SCHEMA. # FROM INFORMATION_SCHEMA.
# #
# Before the change performed to fix the bug, the metadata of the output of # Before the change performed to fix the bug, the metadata of the output of
# SHOW CREATE statements would always describe the result as 'binary'. That # SHOW CREATE statements would always describe the result as 'binary'. That
...@@ -1171,17 +1181,17 @@ DROP TABLE t1; ...@@ -1171,17 +1181,17 @@ DROP TABLE t1;
DROP EVENT ev1; DROP EVENT ev1;
# #
# Bug #30036: SHOW TABLE TYPES causes the debug client to crash # Bug#30036 SHOW TABLE TYPES causes the debug client to crash
# #
--disable_result_log --disable_result_log
SHOW TABLE TYPES; SHOW TABLE TYPES;
--enable_result_log --enable_result_log
# #
# Bug #32710: SHOW INNODB STATUS requires SUPER # Bug#32710 SHOW INNODB STATUS requires SUPER
# #
CREATE USER test_u@localhost; CREATE USER test_u@localhost;
GRANT PROCESS ON *.* TO test_u@localhost; GRANT PROCESS ON *.* TO test_u@localhost;
...@@ -1198,3 +1208,7 @@ DROP USER test_u@localhost; ...@@ -1198,3 +1208,7 @@ DROP USER test_u@localhost;
--echo End of 5.1 tests --echo End of 5.1 tests
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
# Can't be tested with embedded server # Can't be tested with embedded server
-- source include/not_embedded.inc --source include/not_embedded.inc
# Bug #8471: IP address with mask fail when skip-name-resolve is on # Save the initial number of concurrent sessions
--source include/count_sessions.inc
# Bug#8471 IP address with mask fail when skip-name-resolve is on
GRANT ALL ON test.* TO mysqltest_1@'127.0.0.1/255.255.255.255'; GRANT ALL ON test.* TO mysqltest_1@'127.0.0.1/255.255.255.255';
SHOW GRANTS FOR mysqltest_1@'127.0.0.1/255.255.255.255'; SHOW GRANTS FOR mysqltest_1@'127.0.0.1/255.255.255.255';
REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255'; REVOKE ALL ON test.* FROM mysqltest_1@'127.0.0.1/255.255.255.255';
...@@ -9,15 +12,20 @@ DROP USER mysqltest_1@'127.0.0.1/255.255.255.255'; ...@@ -9,15 +12,20 @@ DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
# End of 4.1 tests # End of 4.1 tests
# Bug #13407 "Remote connecting crashes server". # Bug#13407 Remote connecting crashes server
# Server crashed when one used USER() function in connection for which # Server crashed when one used USER() function in connection for which
# was impossible to obtain peer hostname. # was impossible to obtain peer hostname.
connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, ); connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
--replace_column 1 # --replace_column 1 #
select user(); SELECT USER();
# We are only interested in the fact that statement below doesn't # We are only interested in the fact that statement below doesn't
# crash server. # crash server.
--disable_result_log --disable_result_log
show processlist; SHOW PROCESSLIST;
--enable_result_log --enable_result_log
connection default; connection default;
disconnect con1;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
# Can't test with embedded server that doesn't support grants # Can't test with embedded server that doesn't support grants
-- source include/not_embedded.inc -- source include/not_embedded.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
connect (con1root,localhost,root,,); connect (con1root,localhost,root,,);
connection con1root; connection con1root;
...@@ -156,7 +159,7 @@ call db1_secret.stamp(6); ...@@ -156,7 +159,7 @@ call db1_secret.stamp(6);
select db1_secret.db(); select db1_secret.db();
# #
# BUG#2777 # Bug#2777 Stored procedure doesn't observe definer's rights
# #
connection con1root; connection con1root;
...@@ -215,7 +218,7 @@ call q(); ...@@ -215,7 +218,7 @@ call q();
select * from t2; select * from t2;
# #
# BUG#6030: Stored procedure has no appropriate DROP privilege # Bug#6030 Stored procedure has no appropriate DROP privilege
# (or ALTER for that matter) # (or ALTER for that matter)
# still connection con2user1 in db2 # still connection con2user1 in db2
...@@ -330,7 +333,7 @@ flush privileges; ...@@ -330,7 +333,7 @@ flush privileges;
drop table t1; drop table t1;
# #
# BUG#9503: reseting correct parameters of thread after error in SP function # Bug#9503 reseting correct parameters of thread after error in SP function
# #
connect (root,localhost,root,,test); connect (root,localhost,root,,test);
connection root; connection root;
...@@ -366,10 +369,12 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost; ...@@ -366,10 +369,12 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost;
drop function bug_9503; drop function bug_9503;
use test; use test;
drop database mysqltest; drop database mysqltest;
connection default;
disconnect root;
# #
# correct value from current_user() in function run from "security definer" # correct value from current_user() in function run from "security definer"
# (BUG#7291) # (Bug#7291 Stored procedures: wrong CURRENT_USER value)
# #
connection con1root; connection con1root;
use test; use test;
...@@ -398,10 +403,10 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost; ...@@ -398,10 +403,10 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost;
drop user user1@localhost; drop user user1@localhost;
# #
# Bug #12318: Wrong error message when accessing an inaccessible stored # Bug#12318 Wrong error message when accessing an inaccessible stored
# procedure in another database when the current database is # procedure in another database when the current database is
# information_schema. # information_schema.
# #
--disable_warnings --disable_warnings
drop database if exists mysqltest_1; drop database if exists mysqltest_1;
...@@ -438,7 +443,7 @@ revoke usage on *.* from mysqltest_1@localhost; ...@@ -438,7 +443,7 @@ revoke usage on *.* from mysqltest_1@localhost;
drop user mysqltest_1@localhost; drop user mysqltest_1@localhost;
# #
# BUG#12812 create view calling a function works without execute right # Bug#12812 create view calling a function works without execute right
# on function # on function
delimiter |; delimiter |;
--disable_warnings --disable_warnings
...@@ -464,7 +469,7 @@ delimiter ;| ...@@ -464,7 +469,7 @@ delimiter ;|
# #
# BUG#14834: Server denies to execute Stored Procedure # Bug#14834 Server denies to execute Stored Procedure
# #
# The problem here was with '_' in the database name. # The problem here was with '_' in the database name.
# #
...@@ -507,7 +512,7 @@ drop database db_bug14834; ...@@ -507,7 +512,7 @@ drop database db_bug14834;
# #
# BUG#14533: 'desc tbl' in stored procedure causes error # Bug#14533 'desc tbl' in stored procedure causes error
# ER_TABLEACCESS_DENIED_ERROR # ER_TABLEACCESS_DENIED_ERROR
# #
create database db_bug14533; create database db_bug14533;
...@@ -546,7 +551,7 @@ drop database db_bug14533; ...@@ -546,7 +551,7 @@ drop database db_bug14533;
# #
# WL#2897: Complete definer support in the stored routines. # WL#2897 Complete definer support in the stored routines.
# #
# The following cases are tested: # The following cases are tested:
# 1. check that if DEFINER-clause is not explicitly specified, stored routines # 1. check that if DEFINER-clause is not explicitly specified, stored routines
...@@ -591,7 +596,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost; ...@@ -591,7 +596,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
--echo ---> connection: mysqltest_2_con --echo ---> connection: mysqltest_2_con
--connection mysqltest_2_con --connection mysqltest_2_con
use mysqltest; USE mysqltest;
CREATE PROCEDURE wl2897_p1() SELECT 1; CREATE PROCEDURE wl2897_p1() SELECT 1;
...@@ -603,7 +608,7 @@ CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1; ...@@ -603,7 +608,7 @@ CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1;
--echo ---> connection: mysqltest_1_con --echo ---> connection: mysqltest_1_con
--connection mysqltest_1_con --connection mysqltest_1_con
use mysqltest; USE mysqltest;
--error ER_SPECIFIC_ACCESS_DENIED_ERROR --error ER_SPECIFIC_ACCESS_DENIED_ERROR
CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2; CREATE DEFINER=root@localhost PROCEDURE wl2897_p2() SELECT 2;
...@@ -629,7 +634,7 @@ CREATE DEFINER='a @ b @ c'@localhost FUNCTION wl2897_f3() RETURNS INT RETURN 3; ...@@ -629,7 +634,7 @@ CREATE DEFINER='a @ b @ c'@localhost FUNCTION wl2897_f3() RETURNS INT RETURN 3;
--echo ---> connection: con1root --echo ---> connection: con1root
--connection con1root --connection con1root
use mysqltest; USE mysqltest;
SHOW CREATE PROCEDURE wl2897_p1; SHOW CREATE PROCEDURE wl2897_p1;
SHOW CREATE PROCEDURE wl2897_p3; SHOW CREATE PROCEDURE wl2897_p3;
...@@ -649,7 +654,7 @@ DROP DATABASE mysqltest; ...@@ -649,7 +654,7 @@ DROP DATABASE mysqltest;
# #
# BUG#13198: SP executes if definer does not exist # Bug#13198 SP executes if definer does not exist
# #
# Prepare environment. # Prepare environment.
...@@ -679,7 +684,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost; ...@@ -679,7 +684,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
--echo ---> connection: mysqltest_1_con --echo ---> connection: mysqltest_1_con
--connection mysqltest_1_con --connection mysqltest_1_con
use mysqltest; USE mysqltest;
CREATE PROCEDURE bug13198_p1() CREATE PROCEDURE bug13198_p1()
SELECT 1; SELECT 1;
...@@ -697,7 +702,7 @@ SELECT bug13198_f1(); ...@@ -697,7 +702,7 @@ SELECT bug13198_f1();
--echo ---> connection: mysqltest_2_con --echo ---> connection: mysqltest_2_con
--connection mysqltest_2_con --connection mysqltest_2_con
use mysqltest; USE mysqltest;
CALL bug13198_p1(); CALL bug13198_p1();
...@@ -719,7 +724,7 @@ DROP USER mysqltest_1@localhost; ...@@ -719,7 +724,7 @@ DROP USER mysqltest_1@localhost;
--echo ---> connection: mysqltest_2_con --echo ---> connection: mysqltest_2_con
--connection mysqltest_2_con --connection mysqltest_2_con
use mysqltest; USE mysqltest;
--error ER_NO_SUCH_USER --error ER_NO_SUCH_USER
CALL bug13198_p1(); CALL bug13198_p1();
...@@ -740,8 +745,8 @@ DROP USER mysqltest_2@localhost; ...@@ -740,8 +745,8 @@ DROP USER mysqltest_2@localhost;
DROP DATABASE mysqltest; DROP DATABASE mysqltest;
# #
# Bug#19857 - When a user with CREATE ROUTINE priv creates a routine, # Bug#19857 When a user with CREATE ROUTINE priv creates a routine,
# it results in NULL p/w # it results in NULL p/w
# #
# Can't test with embedded server that doesn't support grants # Can't test with embedded server that doesn't support grants
...@@ -756,7 +761,7 @@ SELECT Host,User,Password FROM mysql.user WHERE User='user19857'; ...@@ -756,7 +761,7 @@ SELECT Host,User,Password FROM mysql.user WHERE User='user19857';
--echo ---> connection: mysqltest_2_con --echo ---> connection: mysqltest_2_con
--connection mysqltest_2_con --connection mysqltest_2_con
use test; USE test;
DELIMITER //; DELIMITER //;
CREATE PROCEDURE sp19857() DETERMINISTIC CREATE PROCEDURE sp19857() DETERMINISTIC
...@@ -790,8 +795,7 @@ DROP USER user19857@localhost; ...@@ -790,8 +795,7 @@ DROP USER user19857@localhost;
use test; use test;
# #
# BUG#18630: Arguments of suid routine calculated in wrong security # Bug#18630 Arguments of suid routine calculated in wrong security context
# context
# #
# Arguments of suid routines were calculated in definer's security # Arguments of suid routines were calculated in definer's security
# context instead of caller's context thus creating security hole. # context instead of caller's context thus creating security hole.
...@@ -862,3 +866,7 @@ DROP FUNCTION f_suid; ...@@ -862,3 +866,7 @@ DROP FUNCTION f_suid;
DROP TABLE t1; DROP TABLE t1;
--echo End of 5.0 tests. --echo End of 5.0 tests.
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -4,13 +4,17 @@ ...@@ -4,13 +4,17 @@
set @old_concurrent_insert= @@global.concurrent_insert; set @old_concurrent_insert= @@global.concurrent_insert;
set @@global.concurrent_insert= 0; set @@global.concurrent_insert= 0;
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--disable_warnings --disable_warnings
drop table if exists t1,t3; drop table if exists t1,t3;
--enable_warnings --enable_warnings
delimiter |; delimiter |;
# #
# BUG#4902: Stored procedure with SHOW WARNINGS leads to packet error # Bug#4902 Stored procedure with SHOW WARNINGS leads to packet error
# #
# Added tests for show grants command # Added tests for show grants command
--disable_warnings --disable_warnings
...@@ -52,15 +56,14 @@ show warnings| ...@@ -52,15 +56,14 @@ show warnings|
drop procedure bug4902_2| drop procedure bug4902_2|
# #
# BUG#3583: query cache doesn't work for stored procedures # Bug#3583 query cache doesn't work for stored procedures
# #
--disable_warnings --disable_warnings
drop table if exists t1| drop table if exists t1|
--enable_warnings --enable_warnings
create table t1 ( create table t1 (
id char(16) not null default '', id char(16) not null default '',
data int not null data int not null
)| )|
--disable_warnings --disable_warnings
drop procedure if exists bug3583| drop procedure if exists bug3583|
...@@ -97,8 +100,9 @@ delete from t1| ...@@ -97,8 +100,9 @@ delete from t1|
drop procedure bug3583| drop procedure bug3583|
drop table t1| drop table t1|
# #
# BUG#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY # Bug#6807 Stored procedure crash if CREATE PROCEDURE ... KILL QUERY
# #
--disable_warnings --disable_warnings
drop procedure if exists bug6807| drop procedure if exists bug6807|
...@@ -112,16 +116,16 @@ begin ...@@ -112,16 +116,16 @@ begin
select 'Not reached'; select 'Not reached';
end| end|
--error 1317 --error ER_QUERY_INTERRUPTED
call bug6807()| call bug6807()|
--error 1317 --error ER_QUERY_INTERRUPTED
call bug6807()| call bug6807()|
drop procedure bug6807| drop procedure bug6807|
# #
# BUG#10100: function (and stored procedure?) recursivity problem # Bug#10100 function (and stored procedure?) recursivity problem
# #
--disable_warnings --disable_warnings
drop function if exists bug10100f| drop function if exists bug10100f|
...@@ -220,11 +224,11 @@ begin ...@@ -220,11 +224,11 @@ begin
close c; close c;
end| end|
#end of the stack checking # end of the stack checking
set @@max_sp_recursion_depth=255| set @@max_sp_recursion_depth=255|
set @var=1| set @var=1|
#disable log because error about stack overrun contains numbers which # disable log because error about stack overrun contains numbers which
#depend on a system # depend on a system
-- disable_result_log -- disable_result_log
-- error ER_STACK_OVERRUN_NEED_MORE -- error ER_STACK_OVERRUN_NEED_MORE
call bug10100p(255, @var)| call bug10100p(255, @var)|
...@@ -253,6 +257,7 @@ drop table t3| ...@@ -253,6 +257,7 @@ drop table t3|
delimiter ;| delimiter ;|
# #
# Bug#15298 SHOW GRANTS FOR CURRENT_USER: Incorrect output in DEFINER context # Bug#15298 SHOW GRANTS FOR CURRENT_USER: Incorrect output in DEFINER context
# #
...@@ -269,6 +274,7 @@ call 15298_1(); ...@@ -269,6 +274,7 @@ call 15298_1();
call 15298_2(); call 15298_2();
connection default; connection default;
disconnect con1;
drop user mysqltest_1@localhost; drop user mysqltest_1@localhost;
drop procedure 15298_1; drop procedure 15298_1;
drop procedure 15298_2; drop procedure 15298_2;
...@@ -334,6 +340,7 @@ connection default; ...@@ -334,6 +340,7 @@ connection default;
disconnect rl_holder; disconnect rl_holder;
disconnect rl_acquirer; disconnect rl_acquirer;
disconnect rl_wait; disconnect rl_wait;
disconnect rl_contender;
drop procedure p1; drop procedure p1;
drop table t1; drop table t1;
set session low_priority_updates=default; set session low_priority_updates=default;
...@@ -343,3 +350,7 @@ set session low_priority_updates=default; ...@@ -343,3 +350,7 @@ set session low_priority_updates=default;
# #
set @@global.concurrent_insert= @old_concurrent_insert; set @@global.concurrent_insert= @old_concurrent_insert;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -4,12 +4,15 @@ ...@@ -4,12 +4,15 @@
-- source include/have_ssl.inc -- source include/have_ssl.inc
-- source include/big_test.inc -- source include/big_test.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--disable_warnings --disable_warnings
DROP TABLE IF EXISTS t1, t2; DROP TABLE IF EXISTS t1, t2;
--enable_warnings --enable_warnings
# #
# Bug #29579 Clients using SSL can hang the server # Bug#29579 Clients using SSL can hang the server
# #
connect (ssl_con,localhost,root,,,,,SSL); connect (ssl_con,localhost,root,,,,,SSL);
...@@ -18,7 +21,7 @@ create table t1 (a int); ...@@ -18,7 +21,7 @@ create table t1 (a int);
disconnect ssl_con; disconnect ssl_con;
--disable_query_log --disable_query_log
--disable_result_log --disable_result_log
...@@ -26,31 +29,36 @@ let $count= 2000; ...@@ -26,31 +29,36 @@ let $count= 2000;
while ($count) while ($count)
{ {
connect (ssl_con,localhost,root,,,,,SSL); connect (ssl_con,localhost,root,,,,,SSL);
eval insert into t1 values ($count); eval insert into t1 values ($count);
dec $count; dec $count;
# This select causes the net buffer to fill as the server sends the results # This select causes the net buffer to fill as the server sends the results
# but the client doesn't reap the results. The results are larger each time # but the client doesn't reap the results. The results are larger each time
# through the loop, so that eventually the buffer is completely full # through the loop, so that eventually the buffer is completely full
# at the exact moment the server attempts to the close the connection with # at the exact moment the server attempts to the close the connection with
# the lock held. # the lock held.
send select * from t1; send select * from t1;
# now send the quit the command so the server will initiate the shutdown. # now send the quit the command so the server will initiate the shutdown.
send_quit ssl_con; send_quit ssl_con;
# if the server is hung, this will hang too: # if the server is hung, this will hang too:
connect (ssl_con2,localhost,root,,,,,SSL); connect (ssl_con2,localhost,root,,,,,SSL);
# no hang if we get here, close and retry # no hang if we get here, close and retry
disconnect ssl_con2; disconnect ssl_con2;
disconnect ssl_con; disconnect ssl_con;
} }
--enable_query_log --enable_query_log
--enable_result_log --enable_result_log
connect (ssl_con,localhost,root,,,,,SSL); connect (ssl_con,localhost,root,,,,,SSL);
drop table t1; drop table t1;
connection default;
disconnect ssl_con;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
-- source include/have_ssl.inc -- source include/have_ssl.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
connect (ssl_con,localhost,root,,,,,SSL); connect (ssl_con,localhost,root,,,,,SSL);
# Check ssl turned on # Check ssl turned on
...@@ -14,4 +17,9 @@ SHOW STATUS LIKE 'Ssl_cipher'; ...@@ -14,4 +17,9 @@ SHOW STATUS LIKE 'Ssl_cipher';
# Check ssl turned on # Check ssl turned on
SHOW STATUS LIKE 'Ssl_cipher'; SHOW STATUS LIKE 'Ssl_cipher';
connection default;
disconnect ssl_con;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
-- source include/have_ssl.inc -- source include/have_ssl.inc
-- source include/have_compress.inc -- source include/have_compress.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS); connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS);
# Check ssl turned on # Check ssl turned on
...@@ -20,3 +23,10 @@ SHOW STATUS LIKE 'Ssl_cipher'; ...@@ -20,3 +23,10 @@ SHOW STATUS LIKE 'Ssl_cipher';
# Check compression turned on # Check compression turned on
SHOW STATUS LIKE 'Compression'; SHOW STATUS LIKE 'Compression';
connection default;
disconnect ssl_compress_con;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -268,6 +268,7 @@ show status like 'Com%function'; ...@@ -268,6 +268,7 @@ show status like 'Com%function';
# #
connect (root, localhost, root,,test); connect (root, localhost, root,,test);
connection root; connection root;
let $root_connection_id= `select connection_id()`;
--disable_warnings --disable_warnings
create database db37908; create database db37908;
--enable_warnings --enable_warnings
...@@ -282,6 +283,7 @@ delimiter ;| ...@@ -282,6 +283,7 @@ delimiter ;|
connect (user1,localhost,mysqltest_1,,test); connect (user1,localhost,mysqltest_1,,test);
connection user1; connection user1;
let $user1_connection_id= `select connection_id()`;
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
select * from db37908.t1; select * from db37908.t1;
...@@ -300,8 +302,12 @@ drop procedure proc37908; ...@@ -300,8 +302,12 @@ drop procedure proc37908;
drop function func37908; drop function func37908;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
DROP USER mysqltest_1@localhost; DROP USER mysqltest_1@localhost;
# Wait till we reached the initial number of concurrent sessions # Wait till the sessions user1 and root are disconnected
--source include/wait_until_count_sessions.inc let $wait_condition =
SELECT COUNT(*) = 0
FROM information_schema.processlist
WHERE id in ('$root_connection_id','$user1_connection_id');
--source include/wait_condition.inc
# #
# Bug#41131 "Questions" fails to increment - ignores statements instead stored procs # Bug#41131 "Questions" fails to increment - ignores statements instead stored procs
......
...@@ -3,9 +3,12 @@ ...@@ -3,9 +3,12 @@
# #
# Requires privileges to be enabled # Requires privileges to be enabled
-- source include/not_embedded.inc --source include/not_embedded.inc
# Prepare play-ground # Save the initial number of concurrent sessions
--source include/count_sessions.inc
# Prepare play-ground
--disable_warnings --disable_warnings
drop table if exists t1; drop table if exists t1;
--enable_warnings --enable_warnings
...@@ -28,11 +31,11 @@ connect (mqph, localhost, mysqltest_1,,); ...@@ -28,11 +31,11 @@ connect (mqph, localhost, mysqltest_1,,);
connection mqph; connection mqph;
select * from t1; select * from t1;
select * from t1; select * from t1;
--error 1226 --error ER_USER_LIMIT_REACHED
select * from t1; select * from t1;
connect (mqph2, localhost, mysqltest_1,,); connect (mqph2, localhost, mysqltest_1,,);
connection mqph2; connection mqph2;
--error 1226 --error ER_USER_LIMIT_REACHED
select * from t1; select * from t1;
# cleanup # cleanup
connection default; connection default;
...@@ -50,12 +53,12 @@ select * from t1; ...@@ -50,12 +53,12 @@ select * from t1;
select * from t1; select * from t1;
delete from t1; delete from t1;
delete from t1; delete from t1;
--error 1226 --error ER_USER_LIMIT_REACHED
delete from t1; delete from t1;
select * from t1; select * from t1;
connect (muph2, localhost, mysqltest_1,,); connect (muph2, localhost, mysqltest_1,,);
connection muph2; connection muph2;
--error 1226 --error ER_USER_LIMIT_REACHED
delete from t1; delete from t1;
select * from t1; select * from t1;
# Cleanup # Cleanup
...@@ -74,7 +77,7 @@ connect (mcph2, localhost, mysqltest_1,,); ...@@ -74,7 +77,7 @@ connect (mcph2, localhost, mysqltest_1,,);
connection mcph2; connection mcph2;
select * from t1; select * from t1;
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error 1226 --error ER_USER_LIMIT_REACHED
connect (mcph3, localhost, mysqltest_1,,); connect (mcph3, localhost, mysqltest_1,,);
# Old connection is still ok # Old connection is still ok
select * from t1; select * from t1;
...@@ -83,7 +86,7 @@ select * from t1; ...@@ -83,7 +86,7 @@ select * from t1;
disconnect mcph1; disconnect mcph1;
disconnect mcph2; disconnect mcph2;
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error 1226 --error ER_USER_LIMIT_REACHED
connect (mcph3, localhost, mysqltest_1,,); connect (mcph3, localhost, mysqltest_1,,);
# Cleanup # Cleanup
connection default; connection default;
...@@ -101,13 +104,13 @@ connect (muc2, localhost, mysqltest_1,,); ...@@ -101,13 +104,13 @@ connect (muc2, localhost, mysqltest_1,,);
connection muc2; connection muc2;
select * from t1; select * from t1;
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error 1226 --error ER_USER_LIMIT_REACHED
connect (muc3, localhost, mysqltest_1,,); connect (muc3, localhost, mysqltest_1,,);
# Closing of one of connections should help # Closing of one of connections should help
disconnect muc1; disconnect muc1;
connect (muc3, localhost, mysqltest_1,,); connect (muc3, localhost, mysqltest_1,,);
select * from t1; select * from t1;
# Changing of limit should also help (and immediately) # Changing of limit should also help (and immediately)
connection default; connection default;
grant usage on *.* to mysqltest_1@localhost with max_user_connections 3; grant usage on *.* to mysqltest_1@localhost with max_user_connections 3;
flush user_resources; flush user_resources;
...@@ -115,7 +118,7 @@ connect (muc4, localhost, mysqltest_1,,); ...@@ -115,7 +118,7 @@ connect (muc4, localhost, mysqltest_1,,);
connection muc4; connection muc4;
select * from t1; select * from t1;
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error 1226 --error ER_USER_LIMIT_REACHED
connect (muc5, localhost, mysqltest_1,,); connect (muc5, localhost, mysqltest_1,,);
# Clean up # Clean up
connection default; connection default;
...@@ -129,10 +132,10 @@ drop user mysqltest_1@localhost; ...@@ -129,10 +132,10 @@ drop user mysqltest_1@localhost;
select @@session.max_user_connections, @@global.max_user_connections; select @@session.max_user_connections, @@global.max_user_connections;
# Local max_user_connections variable can't be set directly # Local max_user_connections variable can't be set directly
# since this limit is per-account # since this limit is per-account
--error 1229 --error ER_GLOBAL_VARIABLE
set session max_user_connections= 2; set session max_user_connections= 2;
# But it is ok to set global max_user_connections # But it is ok to set global max_user_connections
set global max_user_connections= 2; set global max_user_connections= 2;
select @@session.max_user_connections, @@global.max_user_connections; select @@session.max_user_connections, @@global.max_user_connections;
# Let us check that global limit works # Let us check that global limit works
grant usage on *.* to mysqltest_1@localhost; grant usage on *.* to mysqltest_1@localhost;
...@@ -144,7 +147,7 @@ connect (muca2, localhost, mysqltest_1,,); ...@@ -144,7 +147,7 @@ connect (muca2, localhost, mysqltest_1,,);
connection muca2; connection muca2;
select * from t1; select * from t1;
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error 1203 --error ER_TOO_MANY_USER_CONNECTIONS
connect (muca3, localhost, mysqltest_1,,); connect (muca3, localhost, mysqltest_1,,);
# Now we are testing that per-account limit prevails over gloabl limit # Now we are testing that per-account limit prevails over gloabl limit
connection default; connection default;
...@@ -154,16 +157,20 @@ connect (muca3, localhost, mysqltest_1,,); ...@@ -154,16 +157,20 @@ connect (muca3, localhost, mysqltest_1,,);
connection muca3; connection muca3;
select @@session.max_user_connections, @@global.max_user_connections; select @@session.max_user_connections, @@global.max_user_connections;
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error 1226 --error ER_USER_LIMIT_REACHED
connect (muca4, localhost, mysqltest_1,,); connect (muca4, localhost, mysqltest_1,,);
# Cleanup # Cleanup
connection default; connection default;
disconnect muca1; disconnect muca1;
disconnect muca2; disconnect muca2;
disconnect muca3; disconnect muca3;
set global max_user_connections= 0; set global max_user_connections= 0;
drop user mysqltest_1@localhost; drop user mysqltest_1@localhost;
--enable_ps_protocol --enable_ps_protocol
# Final cleanup # Final cleanup
drop table t1; drop table t1;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
This diff is collapsed.
This diff is collapsed.
...@@ -10,8 +10,11 @@ ...@@ -10,8 +10,11 @@
-- source include/not_embedded.inc -- source include/not_embedded.inc
-- source include/one_thread_per_connection.inc -- source include/one_thread_per_connection.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
# #
# Bug#8731: wait_timeout does not work on Mac OS X # Bug#8731 wait_timeout does not work on Mac OS X
# #
let $start_value= `SELECT @@global.wait_timeout`; let $start_value= `SELECT @@global.wait_timeout`;
...@@ -113,6 +116,7 @@ while (!`select @aborted_clients`) ...@@ -113,6 +116,7 @@ while (!`select @aborted_clients`)
# the disconnect has reached client # the disconnect has reached client
let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist; let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist;
--source include/wait_condition.inc --source include/wait_condition.inc
disconnect wait_con;
--echo connection con1; --echo connection con1;
connection con1; connection con1;
...@@ -126,8 +130,13 @@ SELECT 2; ...@@ -126,8 +130,13 @@ SELECT 2;
SELECT 3; SELECT 3;
--replace_result $start_value <start_value> --replace_result $start_value <start_value>
eval SET @@global.wait_timeout= $start_value; eval SET @@global.wait_timeout= $start_value;
# ML: The start value might be changed in future ...
--echo disconnection con1; --echo disconnection con1;
disconnect con1; disconnect con1;
# The last connect is to keep tools checking the current test happy.
connect (default,localhost,root,,test,,);
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
# WL#1756 # WL#1756
# #
-- source include/have_innodb.inc -- source include/have_innodb.inc
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
--disable_warnings --disable_warnings
drop table if exists t1, t2; drop table if exists t1, t2;
--enable_warnings --enable_warnings
...@@ -14,10 +18,10 @@ xa rollback 'test1'; ...@@ -14,10 +18,10 @@ xa rollback 'test1';
select * from t1; select * from t1;
xa start 'test2'; xa start 'test2';
--error 1399 --error ER_XAER_RMFAIL
xa start 'test-bad'; xa start 'test-bad';
insert t1 values (20); insert t1 values (20);
--error 1399 --error ER_XAER_RMFAIL
xa prepare 'test2'; xa prepare 'test2';
xa end 'test2'; xa end 'test2';
xa prepare 'test2'; xa prepare 'test2';
...@@ -27,22 +31,22 @@ select * from t1; ...@@ -27,22 +31,22 @@ select * from t1;
xa start 'testa','testb'; xa start 'testa','testb';
insert t1 values (30); insert t1 values (30);
--error 1399 --error ER_XAER_RMFAIL
commit; commit;
xa end 'testa','testb'; xa end 'testa','testb';
--error 1399 --error ER_XAER_RMFAIL
begin; begin;
--error 1399 --error ER_XAER_RMFAIL
create table t2 (a int); create table t2 (a int);
connect (con1,localhost,root,,); connect (con1,localhost,root,,);
connection con1; connection con1;
--error 1440 --error ER_XAER_DUPID
xa start 'testa','testb'; xa start 'testa','testb';
--error 1440 --error ER_XAER_DUPID
xa start 'testa','testb', 123; xa start 'testa','testb', 123;
# gtrid [ , bqual [ , formatID ] ] # gtrid [ , bqual [ , formatID ] ]
...@@ -51,7 +55,7 @@ insert t1 values (40); ...@@ -51,7 +55,7 @@ insert t1 values (40);
xa end 'testb',' 0@P`',11; xa end 'testb',' 0@P`',11;
xa prepare 'testb',0x2030405060,11; xa prepare 'testb',0x2030405060,11;
--error 1399 --error ER_XAER_RMFAIL
start transaction; start transaction;
xa recover; xa recover;
...@@ -64,11 +68,11 @@ xa prepare 'testa','testb'; ...@@ -64,11 +68,11 @@ xa prepare 'testa','testb';
xa recover; xa recover;
--error 1397 --error ER_XAER_NOTA
xa commit 'testb',0x2030405060,11; xa commit 'testb',0x2030405060,11;
xa rollback 'testa','testb'; xa rollback 'testa','testb';
--error 1064 --error ER_PARSE_ERROR
xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'; xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
select * from t1; select * from t1;
...@@ -119,3 +123,7 @@ xa start 'a','c'; ...@@ -119,3 +123,7 @@ xa start 'a','c';
drop table t1; drop table t1;
--echo End of 5.0 tests --echo End of 5.0 tests
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
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