mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
merge to 5.1-bugteam branch
This commit is contained in:
@ -9,10 +9,9 @@
|
||||
# in proper order.
|
||||
--source include/have_binlog_format_mixed_or_statement.inc
|
||||
|
||||
|
||||
#
|
||||
# Test for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global
|
||||
# 'opening tables' lock".
|
||||
# Test for Bug#25044 ALTER TABLE ... ENABLE KEYS acquires global
|
||||
# 'opening tables' lock
|
||||
#
|
||||
# ALTER TABLE ... ENABLE KEYS should not acquire LOCK_open mutex for
|
||||
# the whole its duration as it prevents other queries from execution.
|
||||
@ -56,6 +55,7 @@ show binlog events in 'master-bin.000001' from 106;
|
||||
|
||||
# Clean up
|
||||
drop tables t1, t2;
|
||||
disconnect addconroot;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
@ -76,6 +76,7 @@ create table t1 (i int);
|
||||
reset master;
|
||||
set session debug="+d,sleep_alter_before_main_binlog";
|
||||
--send alter table t1 change i c char(10) default 'Test1';
|
||||
connect (addconroot, localhost, root,,);
|
||||
connection addconroot;
|
||||
--sleep 2
|
||||
insert into t1 values ();
|
||||
@ -105,6 +106,7 @@ connection addconroot;
|
||||
rename table t1 to t3;
|
||||
connection default;
|
||||
--reap
|
||||
disconnect addconroot;
|
||||
drop table t3;
|
||||
set session debug="-d,sleep_alter_before_main_binlog";
|
||||
|
||||
@ -114,3 +116,4 @@ show binlog events in 'master-bin.000001' from 106;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
@ -9,11 +9,14 @@
|
||||
# of the log tables (which are CSV-based). By connect mysql; show tables;
|
||||
--source include/have_csv.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
|
||||
#connect (con1,localhost,root,,"");
|
||||
#show tables;
|
||||
connect (con1,localhost,root,,mysql);
|
||||
@ -22,12 +25,16 @@ connect (con2,localhost,root,,test);
|
||||
show tables;
|
||||
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,root,z,test2);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
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@127.0.0.1 identified by "gambling";
|
||||
|
||||
@ -39,20 +46,23 @@ show tables;
|
||||
connect (con4,localhost,test,gambling,test);
|
||||
show tables;
|
||||
|
||||
connection default;
|
||||
disconnect con3;
|
||||
disconnect con4;
|
||||
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,,test2);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,,"");
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,zorro,test2);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,zorro,);
|
||||
|
||||
|
||||
# check if old password version also works
|
||||
update mysql.user set password=old_password("gambling2") where user=_binary"test";
|
||||
flush privileges;
|
||||
@ -61,55 +71,57 @@ connect (con10,localhost,test,gambling2,);
|
||||
connect (con5,localhost,test,gambling2,mysql);
|
||||
connection con5;
|
||||
set password="";
|
||||
--error 1372
|
||||
--error ER_PASSWD_LENGTH
|
||||
set password='gambling3';
|
||||
set password=old_password('gambling3');
|
||||
show tables;
|
||||
connect (con6,localhost,test,gambling3,test);
|
||||
show tables;
|
||||
|
||||
connection default;
|
||||
disconnect con10;
|
||||
disconnect con5;
|
||||
disconnect con6;
|
||||
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,,test2);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,,);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,zorro,test2);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error 1045
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect (fail_con,localhost,test,zorro,);
|
||||
|
||||
|
||||
# remove user 'test' so that other tests which may use 'test'
|
||||
# do not depend on this test.
|
||||
|
||||
delete from mysql.user where user=_binary"test";
|
||||
flush privileges;
|
||||
|
||||
#
|
||||
# Bug#12517: Clear user variables and replication events before
|
||||
# closing temp tables in thread cleanup.
|
||||
# Bug#12517 Clear user variables and replication events before
|
||||
# closing temp tables in thread cleanup.
|
||||
connect (con7,localhost,root,,test);
|
||||
connection con7;
|
||||
let $connection_id= `select connection_id()`;
|
||||
create table t1 (id integer not null auto_increment primary key);
|
||||
create temporary table t2(id integer not null auto_increment primary key);
|
||||
set @id := 1;
|
||||
delete from t1 where id like @id;
|
||||
disconnect con7;
|
||||
--sleep 5
|
||||
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;
|
||||
|
||||
--disconnect con1
|
||||
--disconnect con2
|
||||
--disconnect con3
|
||||
--disconnect con4
|
||||
--disconnect con5
|
||||
--disconnect con6
|
||||
--disconnect con10
|
||||
|
||||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 4.1 tests
|
||||
--echo # ------------------------------------------------------------------
|
||||
@ -147,7 +159,7 @@ let $wait_condition =
|
||||
--echo # -- Check that we allow exactly three user connections, no matter how
|
||||
--echo # -- many threads are running.
|
||||
|
||||
--echo
|
||||
--echo
|
||||
--echo # -- Connecting (1)...
|
||||
let $con_name = con_1;
|
||||
let $con_user_name = mysqltest_u1;
|
||||
@ -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
|
||||
|
||||
FLUSH STATUS;
|
||||
@ -250,11 +262,7 @@ SHOW STATUS LIKE 'max_used_connections';
|
||||
SET GLOBAL event_scheduler = ON;
|
||||
|
||||
--echo # -- Waiting for Event Scheduler to start...
|
||||
let $wait_condition =
|
||||
SELECT COUNT(*) = 1
|
||||
FROM information_schema.processlist
|
||||
WHERE user = 'event_scheduler';
|
||||
--source include/wait_condition.inc
|
||||
--source include/running_event_scheduler.inc
|
||||
|
||||
# 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
|
||||
@ -278,11 +286,7 @@ SHOW STATUS LIKE 'max_used_connections';
|
||||
SET GLOBAL event_scheduler = OFF;
|
||||
|
||||
--echo # -- Waiting for Event Scheduler to stop...
|
||||
let $wait_condition =
|
||||
SELECT COUNT(*) = 0
|
||||
FROM information_schema.processlist
|
||||
WHERE user = 'event_scheduler';
|
||||
--source include/wait_condition.inc
|
||||
--source include/no_running_events.inc
|
||||
|
||||
--echo
|
||||
--echo # -- End of Bug#35074.
|
||||
@ -291,3 +295,7 @@ let $wait_condition =
|
||||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 5.1 tests
|
||||
--echo # ------------------------------------------------------------------
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -1,43 +1,61 @@
|
||||
-- source include/have_innodb.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # Establish connection con1 (user=root)
|
||||
connect (con1,localhost,root,,);
|
||||
--echo # Establish connection con2 (user=root)
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
### Test 1:
|
||||
### - While a consistent snapshot transaction is executed,
|
||||
### no external inserts should be visible to the transaction.
|
||||
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
create table t1 (a int) engine=innodb;
|
||||
start transaction with consistent snapshot;
|
||||
CREATE TABLE t1 (a INT) ENGINE=innodb;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
insert into t1 values(1);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
--echo # Switch to 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.
|
||||
commit;
|
||||
COMMIT;
|
||||
|
||||
### Test 2:
|
||||
### - For any non-consistent snapshot transaction, external
|
||||
### committed inserts should be visible to the transaction.
|
||||
|
||||
delete from t1;
|
||||
start transaction; # Now we omit WITH CONSISTENT SNAPSHOT
|
||||
DELETE FROM t1;
|
||||
START TRANSACTION; # Now we omit WITH CONSISTENT SNAPSHOT
|
||||
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
insert into t1 values(1);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
--echo # Switch to 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.
|
||||
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
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -143,10 +143,12 @@ set names koi8r|
|
||||
|
||||
# - Dump mysqltest1;
|
||||
|
||||
--let $views_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.views.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
|
||||
|
||||
# - Clean mysqltest1;
|
||||
|
||||
@ -161,7 +163,9 @@ DROP DATABASE mysqltest1|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
|
||||
--exec $MYSQL test < $views_dump1
|
||||
|
||||
--remove_file $views_dump1
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
@ -398,6 +402,9 @@ set names koi8r|
|
||||
|
||||
# - Dump mysqltest1, mysqltest2;
|
||||
|
||||
--let $sp_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
|
||||
--let $sp_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest1
|
||||
|
||||
@ -406,7 +413,7 @@ set names koi8r|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest2
|
||||
@ -416,7 +423,7 @@ set names koi8r|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
|
||||
|
||||
# - Clean mysqltest1, mysqltest2;
|
||||
|
||||
@ -432,10 +439,13 @@ DROP DATABASE mysqltest2|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
|
||||
--exec $MYSQL test < $sp_dump1
|
||||
|
||||
--echo ---> Restoring mysqltest2...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
|
||||
--exec $MYSQL test < $sp_dump2
|
||||
|
||||
--remove_file $sp_dump1
|
||||
--remove_file $sp_dump2
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
@ -669,6 +679,9 @@ use mysqltest1|
|
||||
|
||||
# - Dump mysqltest1, mysqltest2;
|
||||
|
||||
--let $triggers_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
|
||||
--let $triggers_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest1
|
||||
|
||||
@ -677,7 +690,7 @@ use mysqltest1|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest2
|
||||
@ -687,7 +700,7 @@ use mysqltest1|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
|
||||
|
||||
# - Clean mysqltest1, mysqltest2;
|
||||
|
||||
@ -703,10 +716,13 @@ DROP DATABASE mysqltest2|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
|
||||
--exec $MYSQL test < $triggers_dump1
|
||||
|
||||
--echo ---> Restoring mysqltest2...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
|
||||
--exec $MYSQL test < $triggers_dump2
|
||||
|
||||
--remove_file $triggers_dump1
|
||||
--remove_file $triggers_dump2
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
@ -924,6 +940,9 @@ set names koi8r|
|
||||
|
||||
# - Dump mysqltest1, mysqltest2;
|
||||
|
||||
--let $events_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
|
||||
--let $events_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest1
|
||||
|
||||
@ -932,7 +951,7 @@ set names koi8r|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.events.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest2
|
||||
@ -942,7 +961,7 @@ set names koi8r|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.events.mysqltest2.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
|
||||
|
||||
# - Clean mysqltest1, mysqltest2;
|
||||
|
||||
@ -958,10 +977,13 @@ DROP DATABASE mysqltest2|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
|
||||
--exec $MYSQL test < $events_dump1
|
||||
|
||||
--echo ---> Restoring mysqltest2...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
|
||||
--exec $MYSQL test < $events_dump2
|
||||
|
||||
--remove_file $events_dump1
|
||||
--remove_file $events_dump2
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
|
@ -143,10 +143,12 @@ set names utf8|
|
||||
|
||||
# - Dump mysqltest1;
|
||||
|
||||
--let $views_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8views.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
|
||||
|
||||
# - Clean mysqltest1;
|
||||
|
||||
@ -161,7 +163,9 @@ DROP DATABASE mysqltest1|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
|
||||
--exec $MYSQL test < $views_dump1
|
||||
|
||||
--remove_file $views_dump1
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
@ -398,6 +402,9 @@ set names utf8|
|
||||
|
||||
# - Dump mysqltest1, mysqltest2;
|
||||
|
||||
--let $sp_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
|
||||
--let $sp_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest1
|
||||
|
||||
@ -406,7 +413,7 @@ set names utf8|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest2
|
||||
@ -416,7 +423,7 @@ set names utf8|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
|
||||
|
||||
# - Clean mysqltest1, mysqltest2;
|
||||
|
||||
@ -432,10 +439,13 @@ DROP DATABASE mysqltest2|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
|
||||
--exec $MYSQL test < $sp_dump1
|
||||
|
||||
--echo ---> Restoring mysqltest2...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
|
||||
--exec $MYSQL test < $sp_dump2
|
||||
|
||||
--remove_file $sp_dump1
|
||||
--remove_file $sp_dump2
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
@ -669,6 +679,9 @@ use mysqltest1|
|
||||
|
||||
# - Dump mysqltest1, mysqltest2;
|
||||
|
||||
--let $triggers_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
|
||||
--let $triggers_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest1
|
||||
|
||||
@ -677,7 +690,7 @@ use mysqltest1|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest2
|
||||
@ -687,7 +700,7 @@ use mysqltest1|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
|
||||
|
||||
# - Clean mysqltest1, mysqltest2;
|
||||
|
||||
@ -703,10 +716,13 @@ DROP DATABASE mysqltest2|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
|
||||
--exec $MYSQL test < $triggers_dump1
|
||||
|
||||
--echo ---> Restoring mysqltest2...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
|
||||
--exec $MYSQL test < $triggers_dump2
|
||||
|
||||
--remove_file $triggers_dump1
|
||||
--remove_file $triggers_dump2
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
@ -924,6 +940,9 @@ set names utf8|
|
||||
|
||||
# - Dump mysqltest1, mysqltest2;
|
||||
|
||||
--let $events_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
|
||||
--let $events_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest1
|
||||
|
||||
@ -932,7 +951,7 @@ set names utf8|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8events.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
|
||||
|
||||
--echo
|
||||
--echo ---> Dump of mysqltest2
|
||||
@ -942,7 +961,7 @@ set names utf8|
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8events.mysqltest2.sql
|
||||
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
|
||||
|
||||
# - Clean mysqltest1, mysqltest2;
|
||||
|
||||
@ -958,10 +977,13 @@ DROP DATABASE mysqltest2|
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
|
||||
--exec $MYSQL test < $events_dump1
|
||||
|
||||
--echo ---> Restoring mysqltest2...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
|
||||
--exec $MYSQL test < $events_dump2
|
||||
|
||||
--remove_file $events_dump1
|
||||
--remove_file $events_dump2
|
||||
|
||||
#
|
||||
# Third-round checks.
|
||||
|
@ -1,3 +1,7 @@
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
connection con1;
|
||||
@ -5,12 +9,19 @@ dirty_close con1;
|
||||
connection con2;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (n int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (n INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
connection default;
|
||||
disconnect con2;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -150,17 +150,30 @@ DROP DATABASE IF EXISTS mysql_test;
|
||||
CREATE DATABASE mysql_test;
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/bug29958.proc.frm
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.MYD $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYD
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.MYI $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYI
|
||||
|
||||
--let $proc_frm = $MYSQLD_DATADIR/mysql/proc.frm
|
||||
--let $proc_MYD = $MYSQLD_DATADIR/mysql/proc.MYD
|
||||
--let $proc_MYI = $MYSQLD_DATADIR/mysql/proc.MYI
|
||||
|
||||
--let $copy_of_proc_frm = $MYSQLTEST_VARDIR/tmp/bug29958.copy.frm
|
||||
--let $copy_of_proc_MYD = $MYSQLTEST_VARDIR/tmp/bug29958.copy.MYD
|
||||
--let $copy_of_proc_MYI = $MYSQLTEST_VARDIR/tmp/bug29958.copy.MYI
|
||||
|
||||
--copy_file $proc_frm $copy_of_proc_frm
|
||||
--copy_file $proc_MYD $copy_of_proc_MYD
|
||||
--copy_file $proc_MYI $copy_of_proc_MYI
|
||||
|
||||
DROP TABLE mysql.proc;
|
||||
|
||||
DROP DATABASE mysql_test;
|
||||
|
||||
--copy_file $MYSQLTEST_VARDIR/tmp/bug29958.proc.frm $MYSQLD_DATADIR/mysql/proc.frm
|
||||
--copy_file $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYD $MYSQLD_DATADIR/mysql/proc.MYD
|
||||
--copy_file $MYSQLTEST_VARDIR/tmp/bug29958.proc.MYI $MYSQLD_DATADIR/mysql/proc.MYI
|
||||
--copy_file $copy_of_proc_frm $proc_frm
|
||||
--copy_file $copy_of_proc_MYD $proc_MYD
|
||||
--copy_file $copy_of_proc_MYI $proc_MYI
|
||||
|
||||
--remove_file $copy_of_proc_frm
|
||||
--remove_file $copy_of_proc_MYD
|
||||
--remove_file $copy_of_proc_MYI
|
||||
|
||||
--echo
|
||||
--echo # --
|
||||
|
@ -1209,6 +1209,18 @@ select replace(@full_mode, 'ALLOW_INVALID_DATES', 'INVALID_DATES') into @full_mo
|
||||
select name from mysql.event where name = 'p' and sql_mode = @full_mode;
|
||||
drop event e1;
|
||||
|
||||
#
|
||||
# Bug#36540: CREATE EVENT and ALTER EVENT statements fail with large server_id
|
||||
#
|
||||
|
||||
SET @old_server_id = @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = (1 << 32) - 1;
|
||||
SELECT @@GLOBAL.server_id;
|
||||
CREATE EVENT ev1 ON SCHEDULE EVERY 1 DAY DO SELECT 1;
|
||||
SELECT event_name, originator FROM INFORMATION_SCHEMA.EVENTS;
|
||||
DROP EVENT ev1;
|
||||
SET GLOBAL server_id = @old_server_id;
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# End of tests
|
||||
|
@ -123,6 +123,21 @@ execute s1;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug #43354: Use key hint can crash server in explain extended query
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY);
|
||||
|
||||
--error ER_KEY_DOES_NOT_EXITS
|
||||
EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
# End of 5.0 tests.
|
||||
|
||||
--echo #
|
||||
--echo # Bug#37870: Usage of uninitialized value caused failed assertion.
|
||||
--echo #
|
||||
@ -141,4 +156,4 @@ flush tables;
|
||||
SELECT OUTR.dt FROM t1 AS OUTR WHERE OUTR.dt IN ( SELECT INNR.dt FROM t2 AS INNR WHERE OUTR.t < '2005-11-13 7:41:31' );
|
||||
drop tables t1, t2;
|
||||
|
||||
# End of 5.0 tests.
|
||||
--echo End of 5.1 tests.
|
||||
|
@ -4,74 +4,106 @@
|
||||
# This is intended to mimick how mysqldump and innobackup work.
|
||||
|
||||
# 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,,);
|
||||
--echo # Establish connection con2 (user=root)
|
||||
connect (con2,localhost,root,,);
|
||||
--echo # Establish connection con3 (user=root)
|
||||
connect (con3,localhost,root,,);
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
create table t1 (a int) engine=innodb;
|
||||
CREATE TABLE t1 (a INT) ENGINE=innodb;
|
||||
|
||||
# blocks COMMIT ?
|
||||
|
||||
begin;
|
||||
insert into t1 values(1);
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
flush tables with read lock;
|
||||
select * from t1;
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
SELECT * FROM t1;
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
send commit; # blocked by con2
|
||||
send COMMIT; # blocked by con2
|
||||
sleep 1;
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
select * from t1; # verify con1 was blocked and data did not move
|
||||
unlock tables;
|
||||
SELECT * FROM t1; # verify con1 was blocked and data did not move
|
||||
UNLOCK TABLES;
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
reap;
|
||||
|
||||
# No deadlock ?
|
||||
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
begin;
|
||||
select * from t1 for update;
|
||||
BEGIN;
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
begin;
|
||||
send select * from t1 for update; # blocked by con1
|
||||
BEGIN;
|
||||
send SELECT * FROM t1 FOR UPDATE; # blocked by con1
|
||||
sleep 1;
|
||||
--echo # Switch to 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;
|
||||
commit; # should not be blocked by con3
|
||||
COMMIT; # should not be blocked by con3
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
reap;
|
||||
--echo # Switch to connection con3
|
||||
connection con3;
|
||||
reap;
|
||||
unlock tables;
|
||||
UNLOCK TABLES;
|
||||
|
||||
# BUG#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
|
||||
# WITH READ LOCK
|
||||
# Bug#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
|
||||
# WITH READ LOCK
|
||||
|
||||
--echo # Switch to 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;
|
||||
begin;
|
||||
insert into t1 values(10);
|
||||
flush tables with read lock;
|
||||
commit;
|
||||
unlock tables;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES(10);
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
COMMIT;
|
||||
UNLOCK TABLES;
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
flush tables with read lock; # bug caused hang here
|
||||
unlock tables;
|
||||
FLUSH TABLES WITH READ LOCK; # bug caused hang here
|
||||
UNLOCK TABLES;
|
||||
|
||||
# BUG#7358 SHOW CREATE DATABASE fails if open transaction
|
||||
# Bug#7358 SHOW CREATE DATABASE fails if open transaction
|
||||
|
||||
begin;
|
||||
select * from t1;
|
||||
show create database test;
|
||||
BEGIN;
|
||||
SELECT * FROM t1;
|
||||
SHOW CREATE DATABASE test;
|
||||
|
||||
drop table t1;
|
||||
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
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -3,32 +3,51 @@
|
||||
# We verify that we did not introduce a deadlock.
|
||||
# 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
|
||||
-- source include/have_log_bin.inc
|
||||
-- source include/have_innodb.inc
|
||||
--source include/have_log_bin.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,,);
|
||||
--echo # Establish connection con2 (user=root)
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
# FLUSH TABLES WITH READ LOCK should block writes to binlog too
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
create table t1 (a int) engine=innodb;
|
||||
reset master;
|
||||
set autocommit=0;
|
||||
insert t1 values (1);
|
||||
CREATE TABLE t1 (a INT) ENGINE=innodb;
|
||||
RESET MASTER;
|
||||
SET AUTOCOMMIT=0;
|
||||
INSERT t1 VALUES (1);
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
flush tables with read lock;
|
||||
show master status;
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
SHOW MASTER STATUS;
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
send commit;
|
||||
send COMMIT;
|
||||
--echo # Switch to connection con2
|
||||
connection con2;
|
||||
sleep 1;
|
||||
show master status;
|
||||
unlock tables;
|
||||
SHOW MASTER STATUS;
|
||||
UNLOCK TABLES;
|
||||
--echo # Switch to connection con1
|
||||
connection con1;
|
||||
reap;
|
||||
drop table t1;
|
||||
set autocommit=1;
|
||||
DROP TABLE t1;
|
||||
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 @@
|
||||
# won't test anything interesting).
|
||||
|
||||
# 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
|
||||
# connection id which was inserted into a table by another thread.
|
||||
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||
set @@global.concurrent_insert= 0;
|
||||
SET @old_concurrent_insert= @@global.concurrent_insert;
|
||||
SET @@global.concurrent_insert= 0;
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
connection con1;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
create table t1 (kill_id int);
|
||||
insert into t1 values(connection_id());
|
||||
CREATE TABLE t1 (kill_id INT);
|
||||
INSERT INTO t1 VALUES(connection_id());
|
||||
|
||||
# Thanks to the parameter we passed to --debug, this FLUSH will
|
||||
# block on a debug build running with our --debug=make_global... It
|
||||
@ -33,11 +36,11 @@ insert into t1 values(connection_id());
|
||||
# --debug) it will succeed immediately
|
||||
|
||||
connection con1;
|
||||
send flush tables with read lock;
|
||||
send FLUSH TABLES WITH READ LOCK;
|
||||
|
||||
# kill con1
|
||||
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
|
||||
# builds anyway.
|
||||
@ -47,7 +50,7 @@ let $wait_condition=
|
||||
and info = "flush tables with read lock";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
kill connection @id;
|
||||
KILL CONNECTION @id;
|
||||
|
||||
connection con1;
|
||||
# On debug builds it will be error 1053 (killed); on non-debug, or
|
||||
@ -58,8 +61,14 @@ connection con1;
|
||||
reap;
|
||||
|
||||
connection con2;
|
||||
drop table t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
connection default;
|
||||
disconnect con2;
|
||||
|
||||
# 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
|
||||
|
||||
|
@ -18,6 +18,8 @@ insert into t1 values (3,5,"C");
|
||||
insert into t1 values (3,6,"D");
|
||||
|
||||
# Test of MySQL field extension with and without matching records.
|
||||
#### Note: The two following statements may fail if the execution plan
|
||||
#### or optimizer is changed. The result for column c is undefined.
|
||||
select a,c,sum(a) from t1 group by a;
|
||||
select a,c,sum(a) from t1 where a > 10 group by a;
|
||||
select sum(a) from t1 where a > 10;
|
||||
|
@ -1139,4 +1139,22 @@ DROP TABLE t1;
|
||||
SET @@sql_mode = @old_sql_mode;
|
||||
|
||||
|
||||
#
|
||||
# Bug#42567 Invalid GROUP BY error
|
||||
#
|
||||
|
||||
# Setup of the subtest
|
||||
SET @old_sql_mode = @@sql_mode;
|
||||
SET @@sql_mode='ONLY_FULL_GROUP_BY';
|
||||
|
||||
CREATE TABLE t1(i INT);
|
||||
INSERT INTO t1 VALUES (1), (10);
|
||||
|
||||
# The actual test
|
||||
SELECT COUNT(i) FROM t1;
|
||||
SELECT COUNT(i) FROM t1 WHERE i > 1;
|
||||
|
||||
# Cleanup of subtest
|
||||
DROP TABLE t1;
|
||||
SET @@sql_mode = @old_sql_mode;
|
||||
|
||||
|
@ -961,3 +961,25 @@ insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a;
|
||||
select * from t1;
|
||||
explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #41610: key_infix_len can be overwritten causing some group by queries
|
||||
# to return no rows
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int, b int, c int, d int,
|
||||
KEY foo (c,d,a,b), KEY bar (c,a,b,d));
|
||||
|
||||
INSERT INTO t1 VALUES (1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), (1, 1, 1, 4);
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT a,b,c+1,d FROM t1;
|
||||
|
||||
#Should be non-empty
|
||||
EXPLAIN SELECT DISTINCT c FROM t1 WHERE d=4;
|
||||
SELECT DISTINCT c FROM t1 WHERE d=4;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1410,6 +1410,15 @@ CREATE TABLE t1(a INT) KEY_BLOCK_SIZE=1;
|
||||
SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #22047: Time in SHOW PROCESSLIST for SQL thread in replication seems
|
||||
# to become negative
|
||||
#
|
||||
|
||||
SET TIMESTAMP=@@TIMESTAMP + 10000000;
|
||||
SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
|
||||
SET TIMESTAMP=DEFAULT;
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
|
@ -5,6 +5,9 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--source include/add_anonymous_users.inc
|
||||
|
||||
connect (con0,localhost,root,,);
|
||||
@ -233,7 +236,8 @@ connect (con1,localhost,mysqltest1,,);
|
||||
connection con1;
|
||||
select * from t1;
|
||||
|
||||
connection con0;
|
||||
connection default;
|
||||
disconnect con0;
|
||||
disconnect con1;
|
||||
|
||||
drop trigger trg1;
|
||||
@ -244,3 +248,7 @@ set global init_connect="set @a='a\\0c'";
|
||||
revoke all privileges, grant option from mysqltest1@localhost;
|
||||
drop user mysqltest1@localhost;
|
||||
drop table t1, t2;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -390,3 +390,91 @@ INSERT INTO t1 VALUES (NULL);
|
||||
#endif
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Check for floating point autoinc column handling
|
||||
#
|
||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||
SET @@INSERT_ID=1;
|
||||
SHOW VARIABLES LIKE "%auto_inc%";
|
||||
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(NULL, 1);
|
||||
INSERT INTO t1 VALUES(NULL, 2);
|
||||
SELECT * FROM t1;
|
||||
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
|
||||
SELECT * FROM t1;
|
||||
INSERT INTO t1 VALUES(NULL, 3);
|
||||
INSERT INTO t1 VALUES(NULL, 4);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (c1 FLOAT NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(NULL, 1);
|
||||
INSERT INTO t1 VALUES(NULL, 2);
|
||||
SELECT * FROM t1;
|
||||
ALTER TABLE t1 CHANGE c1 c1 SERIAL;
|
||||
SELECT * FROM t1;
|
||||
INSERT INTO t1 VALUES(NULL, 3);
|
||||
INSERT INTO t1 VALUES(NULL, 4);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug# 42714: AUTOINC column calculated next value not greater than highest
|
||||
# value stored in table.
|
||||
#
|
||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=5;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1 (
|
||||
a INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
b INT(10) UNSIGNED NOT NULL,
|
||||
c ENUM('FALSE','TRUE') DEFAULT NULL,
|
||||
PRIMARY KEY (a)) ENGINE = InnoDB;
|
||||
CREATE TABLE t2 (
|
||||
m INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
n INT(10) UNSIGNED NOT NULL,
|
||||
o enum('FALSE','TRUE') DEFAULT NULL,
|
||||
PRIMARY KEY (m)) ENGINE = InnoDB;
|
||||
INSERT INTO t2 (n,o) VALUES
|
||||
(1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'),
|
||||
(3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false');
|
||||
SHOW CREATE TABLE t2;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 ;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 ;
|
||||
SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
|
||||
SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
|
||||
SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 (b,c) SELECT n,o FROM t2 WHERE o = 'false';
|
||||
SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# 43203: Overflow from auto incrementing causes server segv
|
||||
#
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t2;
|
||||
CREATE TABLE t1(
|
||||
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
|
||||
PRIMARY KEY) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||
CREATE TABLE t2(
|
||||
c1 TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT
|
||||
PRIMARY KEY) ENGINE=InnoDB;
|
||||
-- error ER_DUP_ENTRY,1062
|
||||
INSERT INTO t2 SELECT c1 FROM t1;
|
||||
-- error ER_DUP_ENTRY,1467
|
||||
INSERT INTO t2 SELECT NULL FROM t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
@ -214,4 +214,34 @@ create view v_bug5719 as select * from t2;
|
||||
--echo
|
||||
drop table t2, t3;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#39843 DELETE requires write access to table in subquery in where clause
|
||||
--echo #
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
--enable_warnings
|
||||
CREATE TABLE t1 (
|
||||
table1_rowid SMALLINT NOT NULL
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
table2_rowid SMALLINT NOT NULL
|
||||
);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
LOCK TABLES t1 WRITE, t2 READ;
|
||||
--echo # Sub-select should not try to aquire a write lock.
|
||||
DELETE FROM t1
|
||||
WHERE EXISTS
|
||||
(
|
||||
SELECT 'x'
|
||||
FROM t2
|
||||
WHERE t1.table1_rowid = t2.table2_rowid
|
||||
) ;
|
||||
--echo # While implementing the patch we didn't break old behavior;
|
||||
--echo # The following sub-select should still requires a write lock:
|
||||
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
|
||||
SELECT * FROM t1 WHERE 1 IN (SELECT * FROM t2 FOR UPDATE);
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
@ -1,4 +1,8 @@
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
@ -14,14 +18,18 @@ create table t1(n int);
|
||||
insert into t1 values (1);
|
||||
lock tables t1 write;
|
||||
connection writer;
|
||||
send update low_priority t1 set n = 4;
|
||||
send
|
||||
update low_priority t1 set n = 4;
|
||||
connection reader;
|
||||
# Sleep a bit till the update of connection writer is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update low_priority t1 set n = 4";
|
||||
--source include/wait_condition.inc
|
||||
send select n from t1;
|
||||
send
|
||||
select n from t1;
|
||||
connection locker;
|
||||
# Sleep a bit till the select of connection reader is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "select n from t1";
|
||||
@ -38,8 +46,10 @@ create table t1(n int);
|
||||
insert into t1 values (1);
|
||||
lock tables t1 read;
|
||||
connection writer;
|
||||
send update low_priority t1 set n = 4;
|
||||
send
|
||||
update low_priority t1 set n = 4;
|
||||
connection reader;
|
||||
# Sleep a bit till the update of connection writer is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update low_priority t1 set n = 4";
|
||||
@ -72,7 +82,7 @@ drop table t1;
|
||||
drop table t2;
|
||||
|
||||
#
|
||||
# Test problem when using locks on many tables and droping a table that
|
||||
# Test problem when using locks on many tables and dropping a table that
|
||||
# is to-be-locked by another thread
|
||||
#
|
||||
#
|
||||
@ -81,7 +91,8 @@ create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
lock table t1 write, t2 write;
|
||||
connection reader;
|
||||
send insert t1 select * from t2;
|
||||
send
|
||||
insert t1 select * from t2;
|
||||
connection locker;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
@ -89,7 +100,7 @@ let $wait_condition=
|
||||
--source include/wait_condition.inc
|
||||
drop table t2;
|
||||
connection reader;
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
reap;
|
||||
connection locker;
|
||||
drop table t1;
|
||||
@ -103,15 +114,17 @@ create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
lock table t1 write, t2 write, t1 as t1_2 write, t2 as t2_2 write;
|
||||
connection reader;
|
||||
send insert t1 select * from t2;
|
||||
send
|
||||
insert t1 select * from t2;
|
||||
connection locker;
|
||||
# Sleep a bit till the insert of connection reader is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert t1 select * from t2";
|
||||
--source include/wait_condition.inc
|
||||
drop table t2;
|
||||
connection reader;
|
||||
--error 1146
|
||||
--error ER_NO_SUCH_TABLE
|
||||
reap;
|
||||
connection locker;
|
||||
drop table t1;
|
||||
@ -120,7 +133,7 @@ drop table t1;
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# BUG#9998 - MySQL client hangs on USE "database"
|
||||
# Bug#9998 MySQL client hangs on USE "database"
|
||||
#
|
||||
create table t1(a int);
|
||||
lock tables t1 write;
|
||||
@ -131,26 +144,28 @@ unlock tables;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#16986 - Deadlock condition with MyISAM tables
|
||||
# Bug#16986 Deadlock condition with MyISAM tables
|
||||
#
|
||||
|
||||
# Need a matching user in mysql.user for multi-table select
|
||||
--source include/add_anonymous_users.inc
|
||||
|
||||
connection locker;
|
||||
use mysql;
|
||||
USE mysql;
|
||||
LOCK TABLES columns_priv WRITE, db WRITE, host WRITE, user WRITE;
|
||||
FLUSH TABLES;
|
||||
#
|
||||
connection reader;
|
||||
use mysql;
|
||||
#NOTE: This must be a multi-table select, otherwise the deadlock will not occur
|
||||
send SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
|
||||
USE mysql;
|
||||
# Note: This must be a multi-table select, otherwise the deadlock will not occur
|
||||
send
|
||||
SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1;
|
||||
#
|
||||
connection locker;
|
||||
# Sleep a bit till the select of connection reader is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Waiting for table" and info =
|
||||
where state = "Waiting for table" and info =
|
||||
"SELECT user.Select_priv FROM user, db WHERE user.user = db.user LIMIT 1";
|
||||
--source include/wait_condition.inc
|
||||
# Make test case independent from earlier grants.
|
||||
@ -160,7 +175,7 @@ UNLOCK TABLES;
|
||||
#
|
||||
connection reader;
|
||||
reap;
|
||||
use test;
|
||||
USE test;
|
||||
#
|
||||
connection locker;
|
||||
use test;
|
||||
@ -175,9 +190,11 @@ LOCK TABLE t1 WRITE;
|
||||
#
|
||||
# This waits until t1 is unlocked.
|
||||
connection locker;
|
||||
send FLUSH TABLES WITH READ LOCK;
|
||||
send
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
#
|
||||
connection writer;
|
||||
# Sleep a bit till the flush of connection locker is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Flushing tables" and info = "FLUSH TABLES WITH READ LOCK";
|
||||
@ -202,15 +219,17 @@ LOCK TABLE t1 WRITE;
|
||||
#
|
||||
# This waits until t1 is unlocked.
|
||||
connection locker;
|
||||
send FLUSH TABLES WITH READ LOCK;
|
||||
send
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
#
|
||||
# This must not block.
|
||||
connection writer;
|
||||
# Sleep a bit till the flush of connection locker is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Flushing tables" and info = "FLUSH TABLES WITH READ LOCK";
|
||||
--source include/wait_condition.inc
|
||||
--error 1100
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
CREATE TABLE t2 AS SELECT * FROM t1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
@ -225,7 +244,7 @@ DROP TABLE t1;
|
||||
--source include/delete_anonymous_users.inc
|
||||
|
||||
#
|
||||
# Bug#19815 - CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
|
||||
# Bug#19815 CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
|
||||
#
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
@ -237,7 +256,8 @@ FLUSH TABLES WITH READ LOCK;
|
||||
# With bug in place: acquire LOCK_mysql_create_table and
|
||||
# wait in wait_if_global_read_lock().
|
||||
connection con2;
|
||||
send DROP DATABASE mysqltest_1;
|
||||
send
|
||||
DROP DATABASE mysqltest_1;
|
||||
#
|
||||
# With bug in place: try to acquire LOCK_mysql_create_table...
|
||||
# When fixed: Reject dropping db because of the read lock.
|
||||
@ -263,7 +283,7 @@ disconnect con2;
|
||||
DROP DATABASE mysqltest_1;
|
||||
|
||||
#
|
||||
# Bug #17264: MySQL Server freeze
|
||||
# Bug#17264 MySQL Server freeze
|
||||
#
|
||||
connection locker;
|
||||
# Disable warnings to allow test to run also without InnoDB
|
||||
@ -272,14 +292,18 @@ create table t1 (f1 int(12) unsigned not null auto_increment, primary key(f1)) e
|
||||
--enable_warnings
|
||||
lock tables t1 write;
|
||||
connection writer;
|
||||
send alter table t1 auto_increment=0;
|
||||
send
|
||||
alter table t1 auto_increment=0;
|
||||
connection reader;
|
||||
# Wait till connection writer is blocked
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "alter table t1 auto_increment=0";
|
||||
--source include/wait_condition.inc
|
||||
send alter table t1 auto_increment=0;
|
||||
send
|
||||
alter table t1 auto_increment=0;
|
||||
connection locker;
|
||||
# Wait till connection reader is blocked
|
||||
let $wait_condition=
|
||||
select count(*) = 2 from information_schema.processlist
|
||||
where state = "Locked" and info = "alter table t1 auto_increment=0";
|
||||
@ -293,8 +317,8 @@ connection locker;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
|
||||
# ``FLUSH TABLES WITH READ LOCK''
|
||||
# Bug#38691 segfault/abort in ``UPDATE ...JOIN'' while
|
||||
# ``FLUSH TABLES WITH READ LOCK''
|
||||
#
|
||||
|
||||
--connection default
|
||||
@ -365,7 +389,7 @@ while ($i) {
|
||||
dec $i;
|
||||
|
||||
--connection locker
|
||||
--error 0,1060
|
||||
--error 0,ER_DUP_FIELDNAME
|
||||
ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
|
||||
UPDATE t2 SET a=b;
|
||||
|
||||
@ -373,11 +397,11 @@ while ($i) {
|
||||
--send UPDATE t2 INNER JOIN (t1 JOIN t3 USING(a)) USING(a) SET a = NULL WHERE t1.b <> t2.b
|
||||
|
||||
--connection locker
|
||||
--error 0,1091
|
||||
--error 0,ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t2 DROP COLUMN a;
|
||||
|
||||
--connection writer
|
||||
--error 0,1054
|
||||
--error 0,ER_BAD_FIELD_ERROR
|
||||
--reap
|
||||
}
|
||||
--enable_query_log
|
||||
@ -390,7 +414,7 @@ while ($i) {
|
||||
dec $i;
|
||||
|
||||
--connection locker
|
||||
--error 0,1060
|
||||
--error 0,ER_DUP_FIELDNAME
|
||||
ALTER TABLE t2 ADD COLUMN a int(11) unsigned default NULL;
|
||||
UPDATE t2 SET a=b;
|
||||
|
||||
@ -399,11 +423,11 @@ while ($i) {
|
||||
--send EXECUTE stmt
|
||||
|
||||
--connection locker
|
||||
--error 0,1091
|
||||
--error 0,ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t2 DROP COLUMN a;
|
||||
|
||||
--connection writer
|
||||
--error 0,1054
|
||||
--error 0,ER_BAD_FIELD_ERROR
|
||||
--reap
|
||||
|
||||
}
|
||||
@ -411,9 +435,10 @@ while ($i) {
|
||||
--connection default
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
|
||||
#
|
||||
# Bug#38499: flush tables and multitable table update with derived table cause
|
||||
# crash
|
||||
# Bug#38499 flush tables and multitable table update with derived table cause
|
||||
# crash
|
||||
#
|
||||
|
||||
CREATE TABLE t1( a INT, b INT );
|
||||
@ -471,7 +496,7 @@ while ($i) {
|
||||
dec $i;
|
||||
|
||||
--connection locker
|
||||
--error 0,1060
|
||||
--error 0,ER_DUP_FIELDNAME
|
||||
ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
|
||||
UPDATE t1 SET a=b;
|
||||
|
||||
@ -479,11 +504,11 @@ while ($i) {
|
||||
--send UPDATE t1, (SELECT 1 FROM t1 t1i) d SET a = 0 WHERE 1=0;
|
||||
|
||||
--connection locker
|
||||
--error 0,1091
|
||||
--error 0,ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t1 DROP COLUMN a;
|
||||
|
||||
--connection writer
|
||||
--error 0,1054 # unknown column error
|
||||
--error 0,ER_BAD_FIELD_ERROR # unknown column error
|
||||
--reap
|
||||
}
|
||||
--enable_query_log
|
||||
@ -496,7 +521,7 @@ while ($i) {
|
||||
dec $i;
|
||||
|
||||
--connection locker
|
||||
--error 0,1060
|
||||
--error 0,ER_DUP_FIELDNAME
|
||||
ALTER TABLE t1 ADD COLUMN a INT;
|
||||
UPDATE t1 SET a=b;
|
||||
|
||||
@ -505,11 +530,11 @@ while ($i) {
|
||||
--send EXECUTE stmt
|
||||
|
||||
--connection locker
|
||||
--error 0,1091
|
||||
--error 0,ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t1 DROP COLUMN a;
|
||||
|
||||
--connection writer
|
||||
--error 0,1054 # Unknown column 'a' in 'field list'
|
||||
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
|
||||
--reap
|
||||
}
|
||||
--enable_query_log
|
||||
@ -568,7 +593,7 @@ while ($i) {
|
||||
dec $i;
|
||||
|
||||
--connection locker
|
||||
--error 0,1060
|
||||
--error 0,ER_DUP_FIELDNAME
|
||||
ALTER TABLE t1 ADD COLUMN a int(11) unsigned default NULL;
|
||||
UPDATE t1 SET a=b;
|
||||
|
||||
@ -576,11 +601,11 @@ while ($i) {
|
||||
--send UPDATE t1, ((SELECT 1 FROM t1 t1i) UNION (SELECT 2 FROM t1 t1ii)) e SET a = 0 WHERE 1=0;
|
||||
|
||||
--connection locker
|
||||
--error 0,1091
|
||||
--error 0,ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t1 DROP COLUMN a;
|
||||
|
||||
--connection writer
|
||||
--error 0,1054 # Unknown column 'a' in 'field list'
|
||||
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
|
||||
--reap
|
||||
}
|
||||
--enable_query_log
|
||||
@ -593,7 +618,7 @@ while ($i) {
|
||||
dec $i;
|
||||
|
||||
--connection locker
|
||||
--error 0,1060
|
||||
--error 0,ER_DUP_FIELDNAME
|
||||
ALTER TABLE t1 ADD COLUMN a INT;
|
||||
UPDATE t1 SET a=b;
|
||||
|
||||
@ -602,11 +627,11 @@ while ($i) {
|
||||
--send EXECUTE stmt
|
||||
|
||||
--connection locker
|
||||
--error 0,1091
|
||||
--error 0,ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t1 DROP COLUMN a;
|
||||
|
||||
--connection writer
|
||||
--error 0,1054 # Unknown column 'a' in 'field list'
|
||||
--error 0,ER_BAD_FIELD_ERROR # Unknown column 'a' in 'field list'
|
||||
--reap
|
||||
}
|
||||
--enable_query_log
|
||||
@ -617,20 +642,22 @@ DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #21281 "Pending write lock is incorrectly removed when its
|
||||
# statement being KILLed"
|
||||
# Bug#21281 Pending write lock is incorrectly removed when its
|
||||
# statement being KILLed
|
||||
#
|
||||
create table t1 (i int);
|
||||
connection locker;
|
||||
lock table t1 read;
|
||||
connection writer;
|
||||
--send update t1 set i= 10;
|
||||
send
|
||||
update t1 set i= 10;
|
||||
connection reader;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update t1 set i= 10";
|
||||
--source include/wait_condition.inc
|
||||
--send select * from t1;
|
||||
send
|
||||
select * from t1;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
@ -642,7 +669,7 @@ eval kill query $ID;
|
||||
connection reader;
|
||||
--reap
|
||||
connection writer;
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
--reap
|
||||
connection locker;
|
||||
unlock tables;
|
||||
@ -650,7 +677,7 @@ connection default;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#25856 - HANDLER table OPEN in one connection lock DROP TABLE in another one
|
||||
# Bug#25856 HANDLER table OPEN in one connection lock DROP TABLE in another one
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
@ -658,12 +685,19 @@ drop table if exists t1;
|
||||
create table t1 (a int) ENGINE=MEMORY;
|
||||
--echo --> client 2
|
||||
connection locker;
|
||||
--error 1031
|
||||
--error ER_ILLEGAL_HA
|
||||
handler t1 open;
|
||||
--echo --> client 1
|
||||
connection default;
|
||||
drop table t1;
|
||||
|
||||
|
||||
# Disconnect sessions used in many subtests above
|
||||
disconnect locker;
|
||||
disconnect reader;
|
||||
disconnect writer;
|
||||
|
||||
|
||||
#
|
||||
# Bug#32395 Alter table under a impending global read lock causes a server crash
|
||||
#
|
||||
@ -764,7 +798,7 @@ disconnect flush;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#30331: Table_locks_waited shows inaccurate values
|
||||
# Bug#30331 Table_locks_waited shows inaccurate values
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
@ -794,3 +828,7 @@ eval SET @tlwb= SUBSTRING_INDEX('$tlwb', ' ', -1);
|
||||
select @tlwa < @tlwb;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -287,7 +287,7 @@ CREATE TABLE `general_log` (
|
||||
ON UPDATE CURRENT_TIMESTAMP,
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`command_type` varchar(64) NOT NULL,
|
||||
`argument` mediumtext NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
|
||||
@ -303,7 +303,7 @@ CREATE TABLE `slow_log` (
|
||||
`db` varchar(512) NOT NULL,
|
||||
`last_insert_id` int(11) NOT NULL,
|
||||
`insert_id` int(11) NOT NULL,
|
||||
`server_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`sql_text` mediumtext NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
|
||||
|
||||
|
@ -1496,4 +1496,22 @@ UNLOCK TABLES;
|
||||
--echo # drop the created tables
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
#
|
||||
# Bug #41305 server crashes when inserting duplicate row into a merge table
|
||||
#
|
||||
--echo # insert duplicate value in child table while merge table doesn't have key
|
||||
create table t1 (
|
||||
col1 int(10),
|
||||
primary key (col1)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
CREATE TABLE m1 (
|
||||
col1 int(10) NOT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(t1);
|
||||
|
||||
insert into m1 (col1) values (1);
|
||||
--error ER_DUP_ENTRY
|
||||
insert into m1 (col1) values (1);
|
||||
|
||||
drop table m1, t1;
|
||||
--echo End of 5.1 tests
|
||||
|
@ -98,35 +98,43 @@ drop table t1;
|
||||
# Bug #20432: mysql client interprets commands in comments
|
||||
#
|
||||
|
||||
--let $file = $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
|
||||
# if the client sees the 'use' within the comment, we haven't fixed
|
||||
--exec echo "/*" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "use" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "*/" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
||||
--exec echo "/*" > $file
|
||||
--exec echo "use" >> $file
|
||||
--exec echo "*/" >> $file
|
||||
--exec $MYSQL < $file 2>&1
|
||||
|
||||
# SQL can have embedded comments => workie
|
||||
--exec echo "select /*" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "use" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "*/ 1" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
||||
--exec echo "select /*" > $file
|
||||
--exec echo "use" >> $file
|
||||
--exec echo "*/ 1" >> $file
|
||||
--exec $MYSQL < $file 2>&1
|
||||
|
||||
# client commands on the other hand must be at BOL => error
|
||||
--exec echo "/*" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "xxx" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "*/ use" >> $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec echo "/*" > $file
|
||||
--exec echo "xxx" >> $file
|
||||
--exec echo "*/ use" >> $file
|
||||
--error 1
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
||||
--exec $MYSQL < $file 2>&1
|
||||
|
||||
# client comment recognized, but parameter missing => error
|
||||
--exec echo "use" > $MYSQLTEST_VARDIR/tmp/bug20432.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20432.sql 2>&1
|
||||
--exec echo "use" > $file
|
||||
--exec $MYSQL < $file 2>&1
|
||||
|
||||
--remove_file $file
|
||||
|
||||
#
|
||||
# Bug #20328: mysql client interprets commands in comments
|
||||
#
|
||||
--exec $MYSQL -e "help" > $MYSQLTEST_VARDIR/tmp/bug20328_1.result
|
||||
--exec $MYSQL -e "help " > $MYSQLTEST_VARDIR/tmp/bug20328_2.result
|
||||
--diff_files $MYSQLTEST_VARDIR/tmp/bug20328_1.result $MYSQLTEST_VARDIR/tmp/bug20328_2.result
|
||||
--let $file1 = $MYSQLTEST_VARDIR/tmp/bug20328_1.result
|
||||
--let $file2 = $MYSQLTEST_VARDIR/tmp/bug20328_2.result
|
||||
--exec $MYSQL -e "help" > $file1
|
||||
--exec $MYSQL -e "help " > $file2
|
||||
--diff_files $file1 $file2
|
||||
--remove_file $file1
|
||||
--remove_file $file2
|
||||
|
||||
#
|
||||
# Bug #19216: Client crashes on long SELECT
|
||||
@ -152,13 +160,15 @@ EOF
|
||||
#
|
||||
# Bug #20103: Escaping with backslash does not work
|
||||
#
|
||||
--exec echo "SET SQL_MODE = 'NO_BACKSLASH_ESCAPES';" > $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec echo "SELECT '\';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
||||
--let $file = $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec echo "SET SQL_MODE = 'NO_BACKSLASH_ESCAPES';" > $file
|
||||
--exec echo "SELECT '\';" >> $file
|
||||
--exec $MYSQL < $file 2>&1
|
||||
|
||||
--exec echo "SET SQL_MODE = '';" > $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec echo "SELECT '\';';" >> $MYSQLTEST_VARDIR/tmp/bug20103.sql
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug20103.sql 2>&1
|
||||
--exec echo "SET SQL_MODE = '';" > $file
|
||||
--exec echo "SELECT '\';';" >> $file
|
||||
--exec $MYSQL < $file 2>&1
|
||||
--remove_file $file
|
||||
|
||||
#
|
||||
# Bug#17583: mysql drops connection when stdout is not writable
|
||||
|
@ -24,7 +24,7 @@ insert into t2 values ();
|
||||
# set @a:=1
|
||||
# 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)
|
||||
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 "";
|
||||
--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
|
||||
|
||||
# Bug#7853 (mysqlbinlog does not accept input from stdin)
|
||||
# Bug#7853 mysqlbinlog does not accept input from stdin
|
||||
--disable_query_log
|
||||
select "--- reading stdin --" as "";
|
||||
--enable_query_log
|
||||
@ -123,7 +123,7 @@ select "--- reading stdin --" as "";
|
||||
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;
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
||||
@ -136,8 +136,8 @@ EOF
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
||||
|
||||
# resulted binlog, parly consisting of multi-byte utf8 chars,
|
||||
# must be digestable for both client and server. In 4.1 the client
|
||||
# resulted binlog, parly consisting of multi-byte utf8 chars,
|
||||
# must be digestable for both client and server. In 4.1 the client
|
||||
# should use default-character-set same as the server.
|
||||
flush logs;
|
||||
--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000004 | $MYSQL
|
||||
@ -164,7 +164,7 @@ select * from t5 order by c1;
|
||||
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
|
||||
drop procedure if exists p1;
|
||||
@ -180,7 +180,7 @@ delimiter ;//
|
||||
flush logs;
|
||||
call p1();
|
||||
drop procedure p1;
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
call p1();
|
||||
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
|
||||
--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000008
|
||||
@ -223,14 +223,14 @@ flush logs;
|
||||
|
||||
#
|
||||
# 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));
|
||||
# we need this for getting fixed timestamps inside of this test
|
||||
flush logs;
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t1 VALUES ('0123456789');
|
||||
flush logs;
|
||||
FLUSH LOGS;
|
||||
DROP TABLE t1;
|
||||
|
||||
# We create a table, patch, and load the output into it
|
||||
@ -238,11 +238,11 @@ DROP TABLE t1;
|
||||
# We can easily see if a 'Query' line is missing the '#' character
|
||||
# as described in the original bug
|
||||
|
||||
--disable_query_log
|
||||
CREATE TABLE patch (a blob);
|
||||
--disable_query_log
|
||||
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
|
||||
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
|
||||
--enable_query_log
|
||||
|
||||
@ -254,40 +254,42 @@ SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
|
||||
DROP TABLE patch;
|
||||
|
||||
#
|
||||
# Bug #29928: incorrect connection_id() restoring from mysqlbinlog out
|
||||
# Bug#29928 incorrect connection_id() restoring from mysqlbinlog out
|
||||
#
|
||||
flush logs;
|
||||
create table t1(a int);
|
||||
insert into t1 values(connection_id());
|
||||
let $a= `select a from t1`;
|
||||
flush logs;
|
||||
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000014 > $MYSQLTEST_VARDIR/tmp/bug29928.sql
|
||||
drop table t1;
|
||||
connect (con1, localhost, root, , test);
|
||||
FLUSH LOGS;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES(connection_id());
|
||||
let $a= `SELECT a FROM t1`;
|
||||
FLUSH LOGS;
|
||||
let $outfile= $MYSQLTEST_VARDIR/tmp/bug29928.sql;
|
||||
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000014 > $outfile
|
||||
DROP TABLE t1;
|
||||
connect (con1, localhost, root, , test);
|
||||
connection con1;
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/bug29928.sql
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bug29928.sql
|
||||
let $b= `select a from t1`;
|
||||
--exec $MYSQL test < $outfile
|
||||
--remove_file $outfile
|
||||
let $b= `SELECT a FROM t1`;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
let $c= `select $a=$b`;
|
||||
let $c= `SELECT $a=$b`;
|
||||
--echo $c
|
||||
drop table t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
echo shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql;
|
||||
error 1;
|
||||
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
|
||||
#
|
||||
flush logs;
|
||||
FLUSH LOGS;
|
||||
--error 1
|
||||
--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
|
||||
|
||||
--echo BUG#31611: Security risk with BINLOG statement
|
||||
--echo Bug#31611 Security risk with BINLOG statement
|
||||
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
CREATE DATABASE mysqltest1;
|
||||
@ -306,6 +308,7 @@ connect (unsecure,localhost,untrusted,,mysqltest1);
|
||||
echo mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql;
|
||||
error 1;
|
||||
exec $MYSQL mysqltest1 -uuntrusted < $MYSQLTEST_VARDIR/tmp/bug31611.sql;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bug31611.sql
|
||||
connection unsecure;
|
||||
error ER_TABLEACCESS_DENIED_ERROR;
|
||||
INSERT INTO t1 VALUES (1,USER());
|
||||
@ -315,7 +318,7 @@ connection default;
|
||||
DROP DATABASE mysqltest1;
|
||||
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.
|
||||
|
||||
@ -343,24 +346,25 @@ query_vertical SELECT * FROM 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 $s_id_max=`select (1 << 32) - 1`;
|
||||
eval set @@global.server_id= $s_id_max;
|
||||
let $binlog_file= $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog;
|
||||
let $save_server_id= `SELECT @@global.server_id`;
|
||||
let $s_id_max= `SELECT (1 << 32) - 1`;
|
||||
eval SET @@global.server_id= $s_id_max;
|
||||
|
||||
reset master;
|
||||
flush logs;
|
||||
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog
|
||||
RESET MASTER;
|
||||
FLUSH LOGS;
|
||||
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $binlog_file
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval select
|
||||
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
|
||||
is not null;
|
||||
let $s_id_unsigned= `select @a like "%server id $s_id_max%" /* must return 1 */`;
|
||||
eval SELECT
|
||||
(@a:=LOAD_FILE("$binlog_file"))
|
||||
IS NOT NULL;
|
||||
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 ***;
|
||||
|
||||
eval set @@global.server_id= $save_server_id;
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog
|
||||
eval SET @@global.server_id= $save_server_id;
|
||||
--remove_file $binlog_file
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -5,9 +5,13 @@
|
||||
# Bug #30126: semicolon before closing */ in /*!... CREATE DATABASE ;*/
|
||||
#
|
||||
|
||||
--let $file = $MYSQLTEST_VARDIR/tmp/bug30126.sql
|
||||
|
||||
CREATE DATABASE mysqldump_30126;
|
||||
USE mysqldump_30126;
|
||||
CREATE TABLE t1 (c1 int);
|
||||
--exec $MYSQL_DUMP --add-drop-database mysqldump_30126 > $MYSQLTEST_VARDIR/tmp/bug30126.sql
|
||||
--exec $MYSQL mysqldump_30126 < $MYSQLTEST_VARDIR/tmp/bug30126.sql
|
||||
--exec $MYSQL_DUMP --add-drop-database mysqldump_30126 > $file
|
||||
--exec $MYSQL mysqldump_30126 < $file
|
||||
DROP DATABASE mysqldump_30126;
|
||||
|
||||
--remove_file $file
|
||||
|
@ -1647,6 +1647,22 @@ DROP TABLE t1,t2;
|
||||
--replace_regex /-- [^D][^u][^m][^p].*// /\/\*!.*// / on [0-9 :-]+/ on DATE/
|
||||
--exec $MYSQL_DUMP test
|
||||
|
||||
# We reset concurrent_inserts value to whatever it was at the start of the test
|
||||
SET @@GLOBAL.CONCURRENT_INSERT = @OLD_CONCURRENT_INSERT;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #42635: mysqldump includes views that were excluded using
|
||||
--echo # the --ignore-table option
|
||||
--echo #
|
||||
|
||||
create database db42635;
|
||||
use db42635;
|
||||
create table t1 (id int);
|
||||
create view db42635.v1 (c) as select * from db42635.t1;
|
||||
create view db42635.v2 (c) as select * from db42635.t1;
|
||||
--exec $MYSQL_DUMP --skip-comments --ignore-table=db42635.v1 db42635
|
||||
use test;
|
||||
drop database db42635;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#33550 mysqldump 4.0 compatibility broken
|
||||
|
@ -6,6 +6,9 @@
|
||||
# This test uses chmod, can't be run with root permissions
|
||||
-- source include/not_as_root.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
# ============================================================================
|
||||
#
|
||||
# Test of mysqltest itself
|
||||
@ -50,7 +53,7 @@ select otto from (select 1 as otto) as t1;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 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
|
||||
# --> 1054: Unknown column 'friedrich' in 'field list'
|
||||
# ----------------------------------------------------------------------------
|
||||
@ -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
|
||||
# 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.
|
||||
# Example: --error 1064 To prevent the abort after the error.
|
||||
# garbage ;
|
||||
@ -485,7 +488,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql;
|
||||
|
||||
# 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.
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Test error
|
||||
@ -707,7 +710,7 @@ echo Not a banana: $cat;
|
||||
--error 1
|
||||
--exec echo "let hi;" | $MYSQL_TEST 2>&1
|
||||
|
||||
# More advanced test for bug#17280
|
||||
# More advanced test for Bug#17280
|
||||
let $success= 1;
|
||||
--echo # Execute: --echo # <whatever> success: \$success
|
||||
--echo # <whatever> success: $success
|
||||
@ -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
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Test bug#12386
|
||||
# Test Bug#12386
|
||||
# ----------------------------------------------------------------------------
|
||||
let $num= 2;
|
||||
while ($num)
|
||||
@ -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`;
|
||||
|
||||
@ -1428,7 +1431,7 @@ let $message= `SELECT USER()`;
|
||||
|
||||
# The message contains more then 80 characters on multiple lines
|
||||
# and is kept between double quotes.
|
||||
let $message=
|
||||
let $message=
|
||||
"Here comes a very very long message that
|
||||
- is longer then 80 characters and
|
||||
- consists of several lines";
|
||||
@ -1463,7 +1466,9 @@ select "this will be executed";
|
||||
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.result;
|
||||
--error 0,1
|
||||
remove_file $MYSQLTEST_VARDIR/log/zero_length_file.reject;
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.reject;
|
||||
--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;
|
||||
|
||||
@ -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
|
||||
|
||||
#
|
||||
# Bug #11731 mysqltest in multi-statement queries ignores errors in
|
||||
# non-1st queries
|
||||
# Bug#11731 mysqltest in multi-statement queries ignores errors in
|
||||
# non-1st queries
|
||||
#
|
||||
|
||||
echo Failing multi statement query;
|
||||
@ -1539,7 +1544,7 @@ remove_file $MYSQLTEST_VARDIR/log/bug11731.log;
|
||||
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
|
||||
@ -1565,7 +1570,7 @@ select "at" as col1, "c" as col2;
|
||||
select "at" as col1, "AT" as col2, "c" as col3;
|
||||
|
||||
--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/;
|
||||
select "strawberry","blueberry","potato";
|
||||
@ -1583,7 +1588,7 @@ select "strawberry","blueberry","potato";
|
||||
--error 1
|
||||
--exec echo "--replace_regex /a b c" | $MYSQL_TEST 2>&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
|
||||
# replace_regex should replace substitutions from left to right in output
|
||||
@ -1954,7 +1959,7 @@ SELECT '2' as "my_col1",2 as "my_col2"
|
||||
UNION
|
||||
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
|
||||
# - "--sorted_result" does not need to be direct before the statement
|
||||
# - Row sorting is applied after modification of the column content
|
||||
@ -2170,15 +2175,15 @@ remove_file $MYSQLTEST_VARDIR/tmp/testdir/file3.txt;
|
||||
rmdir $MYSQLTEST_VARDIR/tmp/testdir;
|
||||
|
||||
#
|
||||
# Bug #36041: mysql-test-run doesn't seem to string match 100% effectively
|
||||
# on Windows
|
||||
# Bug#36041 mysql-test-run doesn't seem to string match 100% effectively
|
||||
# on Windows
|
||||
#
|
||||
|
||||
--replace_result c:\\a.txt z
|
||||
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;
|
||||
@ -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.
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
--echo $CURRENT_CONNECTION
|
||||
connect (con2,localhost,root,,);
|
||||
--echo $CURRENT_CONNECTION
|
||||
|
||||
connection default;
|
||||
--echo $CURRENT_CONNECTION
|
||||
@ -2225,8 +2232,11 @@ connection default;
|
||||
connection con1;
|
||||
--echo $CURRENT_CONNECTION
|
||||
|
||||
let $x= default;
|
||||
let $y= con1;
|
||||
connection con2;
|
||||
--echo $CURRENT_CONNECTION
|
||||
|
||||
let $x= con1;
|
||||
let $y= con2;
|
||||
|
||||
connection $x;
|
||||
--echo $CURRENT_CONNECTION
|
||||
@ -2245,3 +2255,6 @@ disconnect $y;
|
||||
|
||||
--echo End of tests
|
||||
|
||||
connection default;
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
@ -230,6 +230,10 @@ drop table t1;
|
||||
# statements or are correctly created and deleted on each execute
|
||||
#
|
||||
|
||||
--let $outfile=$MYSQLTEST_VARDIR/tmp/f1.txt
|
||||
--error 0,1
|
||||
--remove_file $outfile
|
||||
|
||||
prepare stmt1 from "select 1 into @var";
|
||||
execute stmt1;
|
||||
execute stmt1;
|
||||
@ -240,11 +244,14 @@ execute stmt1;
|
||||
prepare stmt1 from "insert into t1 select i from t1";
|
||||
execute stmt1;
|
||||
execute stmt1;
|
||||
prepare stmt1 from "select * from t1 into outfile 'f1.txt'";
|
||||
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
|
||||
eval prepare stmt1 from "select * from t1 into outfile '$outfile'";
|
||||
execute stmt1;
|
||||
deallocate prepare stmt1;
|
||||
drop table t1;
|
||||
|
||||
--remove_file $outfile
|
||||
|
||||
#
|
||||
# BUG#5242 "Prepared statement names are case sensitive"
|
||||
#
|
||||
@ -939,8 +946,13 @@ set global max_prepared_stmt_count=3;
|
||||
select @@max_prepared_stmt_count;
|
||||
show status like 'prepared_stmt_count';
|
||||
prepare stmt from "select 1";
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
|
||||
# Switch to connection con1
|
||||
connection con1;
|
||||
let $con1_id=`SELECT CONNECTION_ID()`;
|
||||
|
||||
prepare stmt from "select 2";
|
||||
prepare stmt1 from "select 3";
|
||||
--error ER_MAX_PREPARED_STMT_COUNT_REACHED
|
||||
@ -950,18 +962,17 @@ connection default;
|
||||
prepare stmt2 from "select 4";
|
||||
select @@max_prepared_stmt_count;
|
||||
show status like 'prepared_stmt_count';
|
||||
|
||||
# Disconnect connection con1 and switch to default connection
|
||||
disconnect con1;
|
||||
connection default;
|
||||
# Wait for the connection to die: deal with a possible race
|
||||
|
||||
# Wait for the connection con1 to die
|
||||
let $wait_condition=SELECT COUNT(*)=0 FROM information_schema.processlist WHERE id=$con1_id;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
deallocate prepare stmt;
|
||||
let $query= select variable_value from information_schema.global_status
|
||||
where variable_name = 'prepared_stmt_count';
|
||||
let $count= `$query`;
|
||||
if ($count)
|
||||
{
|
||||
--sleep 1
|
||||
let $count= `$query`;
|
||||
}
|
||||
|
||||
select @@max_prepared_stmt_count;
|
||||
show status like 'prepared_stmt_count';
|
||||
#
|
||||
|
@ -3,10 +3,12 @@
|
||||
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
--source include/not_embedded.inc
|
||||
--source include/count_sessions.inc
|
||||
|
||||
set @start_read_only= @@global.read_only;
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
--enable_warnings
|
||||
@ -110,7 +112,7 @@ drop table t1;
|
||||
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
|
||||
@ -238,8 +240,9 @@ set global read_only=1;
|
||||
connection default;
|
||||
select @@global.read_only;
|
||||
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
|
||||
# error
|
||||
@ -256,10 +259,12 @@ drop temporary table if exists ttt;
|
||||
--echo connection default;
|
||||
connection default;
|
||||
set global read_only=0;
|
||||
disconnect con1;
|
||||
drop table t1,t2;
|
||||
drop user test@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #27440 read_only allows create and drop database
|
||||
--echo # Bug#27440 read_only allows create and drop database
|
||||
--echo #
|
||||
set global read_only= 1;
|
||||
--disable_warnings
|
||||
@ -297,7 +302,7 @@ delete from mysql.columns_priv where User like 'mysqltest_%';
|
||||
flush privileges;
|
||||
drop database mysqltest_db1;
|
||||
set global read_only= @start_read_only;
|
||||
disconnect con1;
|
||||
disconnect root2;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -3769,4 +3769,20 @@ SELECT date_nokey FROM C
|
||||
|
||||
DROP TABLE A,C;
|
||||
|
||||
#
|
||||
# Bug #42957: no results from
|
||||
# select where .. (col=col and col=col) or ... (false expression)
|
||||
#
|
||||
CREATE TABLE t1 (a INT NOT NULL, b INT);
|
||||
INSERT INTO t1 VALUES (1, 1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
|
||||
SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -5,6 +5,9 @@
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
#
|
||||
# Test of some show commands
|
||||
#
|
||||
@ -195,7 +198,7 @@ show columns from 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= '';
|
||||
@ -223,7 +226,7 @@ CREATE TABLE """a" (i INT);
|
||||
SHOW CREATE 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;
|
||||
#create database `<60>`;
|
||||
#create table `<60>`.`<60>` (a int) engine=heap;
|
||||
@ -248,7 +251,7 @@ SET sql_quote_show_create= @old_sql_quote_show_create;
|
||||
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;
|
||||
@ -309,7 +312,7 @@ show table status;
|
||||
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;
|
||||
@ -324,35 +327,38 @@ connect (con1,localhost,mysqltest_1,,mysqltest);
|
||||
connection con1;
|
||||
select * from t1;
|
||||
show create database mysqltest;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
drop table t1;
|
||||
--error 1044
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
drop database mysqltest;
|
||||
disconnect con1;
|
||||
|
||||
connect (con2,localhost,mysqltest_2,,test);
|
||||
connection con2;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
select * from mysqltest.t1;
|
||||
--error 1044
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
show create database mysqltest;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
drop table mysqltest.t1;
|
||||
--error 1044
|
||||
--error ER_DBACCESS_DENIED_ERROR
|
||||
drop database mysqltest;
|
||||
disconnect con2;
|
||||
|
||||
connect (con3,localhost,mysqltest_3,,test);
|
||||
connection con3;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
select * from mysqltest.t1;
|
||||
show create database mysqltest;
|
||||
drop table mysqltest.t1;
|
||||
drop database mysqltest;
|
||||
disconnect con3;
|
||||
|
||||
connection default;
|
||||
set names binary;
|
||||
delete from mysql.user
|
||||
delete from mysql.user
|
||||
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';
|
||||
flush privileges;
|
||||
|
||||
@ -366,7 +372,7 @@ flush privileges;
|
||||
#drop database `<60>`;
|
||||
|
||||
# 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;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
@ -397,7 +403,7 @@ ALTER TABLE t1 ENGINE=MEMORY;
|
||||
SHOW CREATE 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(
|
||||
field1 text NOT NULL,
|
||||
PRIMARY KEY(field1(1000))
|
||||
@ -407,7 +413,7 @@ show index from t1;
|
||||
--disable_metadata
|
||||
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 (
|
||||
c1 int NOT NULL,
|
||||
c2 int NOT NULL,
|
||||
@ -417,7 +423,7 @@ create table t1 (
|
||||
SHOW CREATE 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;
|
||||
|
||||
@ -426,19 +432,19 @@ let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
system echo "this is a junk file for test" >> $MYSQLD_DATADIR/test/t1.frm ;
|
||||
--replace_column 6 # 7 # 8 # 9 #
|
||||
SHOW TABLE STATUS like 't1';
|
||||
--error 1033
|
||||
--error ER_NOT_FORM_FILE
|
||||
show create table t1;
|
||||
drop table if exists t1;
|
||||
--error 1,0
|
||||
--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.
|
||||
#
|
||||
|
||||
--echo
|
||||
--echo # Bug#12183: SHOW OPEN TABLES behavior doesn't match grammar.
|
||||
--echo # Bug#12183 SHOW OPEN TABLES behavior doesn't match grammar.
|
||||
--echo
|
||||
|
||||
# NOTE: SHOW OPEN TABLES does not sort result list by database or table names.
|
||||
@ -497,15 +503,15 @@ use test;
|
||||
--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;
|
||||
|
||||
--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
|
||||
#
|
||||
# The problem was that initial user setting was forgotten, and current
|
||||
@ -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;
|
||||
show status like 'slow_queries';
|
||||
@ -597,7 +603,7 @@ select 1 from information_schema.tables limit 1;
|
||||
show status like 'slow_queries';
|
||||
|
||||
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
|
||||
end;
|
||||
create view v1 as select a from t1;
|
||||
@ -657,9 +663,10 @@ drop table t1;
|
||||
drop procedure p1;
|
||||
drop function f1;
|
||||
drop event e1;
|
||||
|
||||
#
|
||||
# BUG#10491: Server returns data as charset binary SHOW CREATE TABLE or SELECT
|
||||
# FROM I_S.
|
||||
# Bug#10491 Server returns data as charset binary SHOW CREATE TABLE or SELECT
|
||||
# FROM I_S.
|
||||
#
|
||||
|
||||
#
|
||||
@ -774,7 +781,7 @@ SHOW TRIGGERS LIKE 't1';
|
||||
|
||||
--echo ----------------------------------------------------------------
|
||||
|
||||
SELECT
|
||||
SELECT
|
||||
TRIGGER_CATALOG,
|
||||
TRIGGER_SCHEMA,
|
||||
TRIGGER_NAME,
|
||||
@ -897,10 +904,12 @@ CREATE TABLE t1(
|
||||
# Check:
|
||||
# - Dump mysqltest1;
|
||||
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to show_check.mysqltest1.sql
|
||||
--let $outfile1=$MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
|
||||
|
||||
--exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
|
||||
--echo
|
||||
--echo ---> Dumping mysqltest1 to outfile1
|
||||
|
||||
--exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $outfile1
|
||||
|
||||
# - Clean mysqltest1;
|
||||
|
||||
@ -915,7 +924,8 @@ DROP DATABASE mysqltest1;
|
||||
--echo
|
||||
|
||||
--echo ---> Restoring mysqltest1...
|
||||
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
|
||||
--exec $MYSQL test < $outfile1
|
||||
--remove_file $outfile1
|
||||
|
||||
# - Check definition of the table.
|
||||
|
||||
@ -927,7 +937,7 @@ DROP DATABASE mysqltest1;
|
||||
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;
|
||||
show variables like "log_queries_not_using_indexes";
|
||||
@ -943,7 +953,7 @@ select 1 from information_schema.tables limit 1;
|
||||
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';
|
||||
|
||||
@ -974,7 +984,8 @@ SHOW AUTHORS;
|
||||
--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;
|
||||
show create database mysqltest;
|
||||
@ -990,6 +1001,8 @@ delete from mysql.db where user='mysqltest_4';
|
||||
delete from mysql.tables_priv where user='mysqltest_4';
|
||||
flush privileges;
|
||||
drop database mysqltest;
|
||||
connection default;
|
||||
disconnect con4;
|
||||
|
||||
#
|
||||
# Ensure that show plugin code is tested
|
||||
@ -1005,8 +1018,8 @@ show plugins;
|
||||
--enable_result_log
|
||||
|
||||
#
|
||||
# Bug #19874: SHOW COLUMNS and SHOW KEYS handle identifiers containing
|
||||
# \ incorrectly
|
||||
# Bug#19874 SHOW COLUMNS and SHOW KEYS handle identifiers containing
|
||||
# \ incorrectly
|
||||
#
|
||||
create database `mysqlttest\1`;
|
||||
create table `mysqlttest\1`.`a\b` (a int);
|
||||
@ -1018,7 +1031,7 @@ drop table `mysqlttest\1`.`a\b`;
|
||||
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
|
||||
@ -1104,8 +1117,8 @@ DROP PROCEDURE p1;
|
||||
DEALLOCATE PREPARE stmt1;
|
||||
|
||||
#
|
||||
# BUG#10491: Server returns data as charset binary SHOW CREATE TABLE or SELECT
|
||||
# FROM INFORMATION_SCHEMA.
|
||||
# Bug#10491 Server returns data as charset binary SHOW CREATE TABLE or SELECT
|
||||
# FROM INFORMATION_SCHEMA.
|
||||
#
|
||||
# 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
|
||||
@ -1168,16 +1181,16 @@ DROP TABLE t1;
|
||||
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
|
||||
SHOW TABLE TYPES;
|
||||
--enable_result_log
|
||||
|
||||
#
|
||||
# Bug #32710: SHOW INNODB STATUS requires SUPER
|
||||
#
|
||||
|
||||
#
|
||||
# Bug#32710 SHOW INNODB STATUS requires SUPER
|
||||
#
|
||||
|
||||
CREATE USER test_u@localhost;
|
||||
GRANT PROCESS ON *.* TO test_u@localhost;
|
||||
@ -1195,3 +1208,7 @@ DROP USER test_u@localhost;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -1,7 +1,10 @@
|
||||
# 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';
|
||||
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';
|
||||
@ -9,12 +12,20 @@ DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
|
||||
|
||||
# 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
|
||||
# was impossible to obtain peer hostname.
|
||||
connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
|
||||
--replace_column 1 #
|
||||
select user();
|
||||
--replace_column 1 <id> 3 <host> 5 <command> 6 <time> 7 <state> 8 <info>
|
||||
show processlist;
|
||||
SELECT USER();
|
||||
# We are only interested in the fact that statement below doesn't
|
||||
# crash server.
|
||||
--disable_result_log
|
||||
SHOW PROCESSLIST;
|
||||
--enable_result_log
|
||||
connection default;
|
||||
disconnect con1;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -5,6 +5,9 @@
|
||||
# Can't test with embedded server that doesn't support grants
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
connect (con1root,localhost,root,,);
|
||||
|
||||
connection con1root;
|
||||
@ -156,7 +159,7 @@ call db1_secret.stamp(6);
|
||||
select db1_secret.db();
|
||||
|
||||
#
|
||||
# BUG#2777
|
||||
# Bug#2777 Stored procedure doesn't observe definer's rights
|
||||
#
|
||||
|
||||
connection con1root;
|
||||
@ -215,7 +218,7 @@ call q();
|
||||
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)
|
||||
|
||||
# still connection con2user1 in db2
|
||||
@ -330,7 +333,7 @@ flush privileges;
|
||||
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);
|
||||
connection root;
|
||||
@ -366,10 +369,12 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost;
|
||||
drop function bug_9503;
|
||||
use test;
|
||||
drop database mysqltest;
|
||||
connection default;
|
||||
disconnect root;
|
||||
|
||||
#
|
||||
# correct value from current_user() in function run from "security definer"
|
||||
# (BUG#7291)
|
||||
# (Bug#7291 Stored procedures: wrong CURRENT_USER value)
|
||||
#
|
||||
connection con1root;
|
||||
use test;
|
||||
@ -398,10 +403,10 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM 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
|
||||
# information_schema.
|
||||
#
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists mysqltest_1;
|
||||
@ -438,7 +443,7 @@ revoke usage on *.* from 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
|
||||
delimiter |;
|
||||
--disable_warnings
|
||||
@ -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.
|
||||
#
|
||||
@ -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
|
||||
#
|
||||
create 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:
|
||||
# 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;
|
||||
--echo ---> connection: mysqltest_2_con
|
||||
--connection mysqltest_2_con
|
||||
|
||||
use mysqltest;
|
||||
USE mysqltest;
|
||||
|
||||
CREATE PROCEDURE wl2897_p1() SELECT 1;
|
||||
|
||||
@ -603,7 +608,7 @@ CREATE FUNCTION wl2897_f1() RETURNS INT RETURN 1;
|
||||
--echo ---> connection: mysqltest_1_con
|
||||
--connection mysqltest_1_con
|
||||
|
||||
use mysqltest;
|
||||
USE mysqltest;
|
||||
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
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;
|
||||
--echo ---> connection: con1root
|
||||
--connection con1root
|
||||
|
||||
use mysqltest;
|
||||
USE mysqltest;
|
||||
|
||||
SHOW CREATE PROCEDURE wl2897_p1;
|
||||
SHOW CREATE PROCEDURE wl2897_p3;
|
||||
@ -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.
|
||||
@ -679,7 +684,7 @@ GRANT ALL PRIVILEGES ON mysqltest.* TO mysqltest_2@localhost;
|
||||
--echo ---> connection: mysqltest_1_con
|
||||
--connection mysqltest_1_con
|
||||
|
||||
use mysqltest;
|
||||
USE mysqltest;
|
||||
|
||||
CREATE PROCEDURE bug13198_p1()
|
||||
SELECT 1;
|
||||
@ -697,7 +702,7 @@ SELECT bug13198_f1();
|
||||
--echo ---> connection: mysqltest_2_con
|
||||
--connection mysqltest_2_con
|
||||
|
||||
use mysqltest;
|
||||
USE mysqltest;
|
||||
|
||||
CALL bug13198_p1();
|
||||
|
||||
@ -719,7 +724,7 @@ DROP USER mysqltest_1@localhost;
|
||||
--echo ---> connection: mysqltest_2_con
|
||||
--connection mysqltest_2_con
|
||||
|
||||
use mysqltest;
|
||||
USE mysqltest;
|
||||
|
||||
--error ER_NO_SUCH_USER
|
||||
CALL bug13198_p1();
|
||||
@ -740,8 +745,8 @@ DROP USER mysqltest_2@localhost;
|
||||
DROP DATABASE mysqltest;
|
||||
|
||||
#
|
||||
# Bug#19857 - When a user with CREATE ROUTINE priv creates a routine,
|
||||
# it results in NULL p/w
|
||||
# Bug#19857 When a user with CREATE ROUTINE priv creates a routine,
|
||||
# it results in NULL p/w
|
||||
#
|
||||
|
||||
# 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';
|
||||
--echo ---> connection: mysqltest_2_con
|
||||
--connection mysqltest_2_con
|
||||
|
||||
use test;
|
||||
USE test;
|
||||
|
||||
DELIMITER //;
|
||||
CREATE PROCEDURE sp19857() DETERMINISTIC
|
||||
@ -790,8 +795,7 @@ DROP USER user19857@localhost;
|
||||
use test;
|
||||
|
||||
#
|
||||
# BUG#18630: Arguments of suid routine calculated in wrong security
|
||||
# context
|
||||
# Bug#18630 Arguments of suid routine calculated in wrong security context
|
||||
#
|
||||
# Arguments of suid routines were calculated in definer's security
|
||||
# context instead of caller's context thus creating security hole.
|
||||
@ -862,3 +866,7 @@ DROP FUNCTION f_suid;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -4,13 +4,17 @@
|
||||
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||
set @@global.concurrent_insert= 0;
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t3;
|
||||
--enable_warnings
|
||||
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
|
||||
--disable_warnings
|
||||
@ -52,15 +56,14 @@ show warnings|
|
||||
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
|
||||
drop table if exists t1|
|
||||
--enable_warnings
|
||||
create table t1 (
|
||||
id char(16) not null default '',
|
||||
data int not null
|
||||
id char(16) not null default '',
|
||||
data int not null
|
||||
)|
|
||||
--disable_warnings
|
||||
drop procedure if exists bug3583|
|
||||
@ -97,8 +100,9 @@ delete from t1|
|
||||
drop procedure bug3583|
|
||||
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
|
||||
drop procedure if exists bug6807|
|
||||
@ -112,16 +116,16 @@ begin
|
||||
select 'Not reached';
|
||||
end|
|
||||
|
||||
--error 1317
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
call bug6807()|
|
||||
--error 1317
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
call bug6807()|
|
||||
|
||||
drop procedure bug6807|
|
||||
|
||||
|
||||
#
|
||||
# BUG#10100: function (and stored procedure?) recursivity problem
|
||||
# Bug#10100 function (and stored procedure?) recursivity problem
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug10100f|
|
||||
@ -220,11 +224,11 @@ begin
|
||||
close c;
|
||||
end|
|
||||
|
||||
#end of the stack checking
|
||||
# end of the stack checking
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
#disable log because error about stack overrun contains numbers which
|
||||
#depend on a system
|
||||
# disable log because error about stack overrun contains numbers which
|
||||
# depend on a system
|
||||
-- disable_result_log
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100p(255, @var)|
|
||||
@ -253,6 +257,7 @@ drop table t3|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
|
||||
#
|
||||
# Bug#15298 SHOW GRANTS FOR CURRENT_USER: Incorrect output in DEFINER context
|
||||
#
|
||||
@ -269,6 +274,7 @@ call 15298_1();
|
||||
call 15298_2();
|
||||
|
||||
connection default;
|
||||
disconnect con1;
|
||||
drop user mysqltest_1@localhost;
|
||||
drop procedure 15298_1;
|
||||
drop procedure 15298_2;
|
||||
@ -334,6 +340,7 @@ connection default;
|
||||
disconnect rl_holder;
|
||||
disconnect rl_acquirer;
|
||||
disconnect rl_wait;
|
||||
disconnect rl_contender;
|
||||
drop procedure p1;
|
||||
drop table t1;
|
||||
set session low_priority_updates=default;
|
||||
@ -343,3 +350,7 @@ set session low_priority_updates=default;
|
||||
#
|
||||
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -4,12 +4,15 @@
|
||||
-- source include/have_ssl.inc
|
||||
-- source include/big_test.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
--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);
|
||||
@ -18,7 +21,7 @@ create table t1 (a int);
|
||||
|
||||
disconnect ssl_con;
|
||||
|
||||
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
|
||||
@ -26,31 +29,36 @@ let $count= 2000;
|
||||
while ($count)
|
||||
{
|
||||
connect (ssl_con,localhost,root,,,,,SSL);
|
||||
|
||||
|
||||
eval insert into t1 values ($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
|
||||
# through the loop, so that eventually the buffer is completely full
|
||||
# at the exact moment the server attempts to the close the connection with
|
||||
# the lock held.
|
||||
send select * from t1;
|
||||
|
||||
|
||||
# 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:
|
||||
connect (ssl_con2,localhost,root,,,,,SSL);
|
||||
|
||||
|
||||
# no hang if we get here, close and retry
|
||||
disconnect ssl_con2;
|
||||
disconnect ssl_con;
|
||||
}
|
||||
}
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
connect (ssl_con,localhost,root,,,,,SSL);
|
||||
|
||||
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 @@
|
||||
|
||||
-- source include/have_ssl.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
connect (ssl_con,localhost,root,,,,,SSL);
|
||||
|
||||
# Check ssl turned on
|
||||
@ -14,4 +17,9 @@ SHOW STATUS LIKE 'Ssl_cipher';
|
||||
# Check ssl turned on
|
||||
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 @@
|
||||
-- source include/have_ssl.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);
|
||||
|
||||
# Check ssl turned on
|
||||
@ -20,3 +23,10 @@ SHOW STATUS LIKE 'Ssl_cipher';
|
||||
|
||||
# Check compression turned on
|
||||
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';
|
||||
#
|
||||
connect (root, localhost, root,,test);
|
||||
connection root;
|
||||
let $root_connection_id= `select connection_id()`;
|
||||
--disable_warnings
|
||||
create database db37908;
|
||||
--enable_warnings
|
||||
@ -282,6 +283,7 @@ delimiter ;|
|
||||
|
||||
connect (user1,localhost,mysqltest_1,,test);
|
||||
connection user1;
|
||||
let $user1_connection_id= `select connection_id()`;
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
select * from db37908.t1;
|
||||
@ -300,8 +302,12 @@ drop procedure proc37908;
|
||||
drop function func37908;
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
||||
DROP USER mysqltest_1@localhost;
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
# Wait till the sessions user1 and root are disconnected
|
||||
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
|
||||
|
@ -1163,11 +1163,11 @@ set @@sql_mode= @org_mode;
|
||||
# Bug #13934 Silent truncation of table comments
|
||||
#
|
||||
set @@sql_mode='traditional';
|
||||
--error 1105
|
||||
--error ER_TOO_LONG_TABLE_COMMENT
|
||||
create table t1 (i int)
|
||||
comment '123456789*123456789*123456789*123456789*123456789*
|
||||
123456789*123456789*123456789*123456789*123456789*';
|
||||
--error 1105
|
||||
--error ER_TOO_LONG_FIELD_COMMENT
|
||||
create table t1 (
|
||||
i int comment
|
||||
'123456789*123456789*123456789*123456789*
|
||||
|
@ -40,6 +40,8 @@ drop table t1;
|
||||
create table t1 (a bit) engine=innodb;
|
||||
insert into t1 values (b'0'), (b'1'), (b'000'), (b'100'), (b'001');
|
||||
select hex(a) from t1;
|
||||
# It is not deterministic which duplicate will be seen first
|
||||
--replace_regex /(.*Duplicate entry )'.*'( for key.*)/\1''\2/
|
||||
--error ER_DUP_ENTRY
|
||||
alter table t1 add unique (a);
|
||||
drop table t1;
|
||||
|
@ -3,9 +3,12 @@
|
||||
#
|
||||
|
||||
# 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
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
@ -28,11 +31,11 @@ connect (mqph, localhost, mysqltest_1,,);
|
||||
connection mqph;
|
||||
select * from t1;
|
||||
select * from t1;
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
select * from t1;
|
||||
connect (mqph2, localhost, mysqltest_1,,);
|
||||
connection mqph2;
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
select * from t1;
|
||||
# cleanup
|
||||
connection default;
|
||||
@ -50,12 +53,12 @@ select * from t1;
|
||||
select * from t1;
|
||||
delete from t1;
|
||||
delete from t1;
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
delete from t1;
|
||||
select * from t1;
|
||||
connect (muph2, localhost, mysqltest_1,,);
|
||||
connection muph2;
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
delete from t1;
|
||||
select * from t1;
|
||||
# Cleanup
|
||||
@ -74,7 +77,7 @@ connect (mcph2, localhost, mysqltest_1,,);
|
||||
connection mcph2;
|
||||
select * from t1;
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
connect (mcph3, localhost, mysqltest_1,,);
|
||||
# Old connection is still ok
|
||||
select * from t1;
|
||||
@ -83,7 +86,7 @@ select * from t1;
|
||||
disconnect mcph1;
|
||||
disconnect mcph2;
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
connect (mcph3, localhost, mysqltest_1,,);
|
||||
# Cleanup
|
||||
connection default;
|
||||
@ -101,13 +104,13 @@ connect (muc2, localhost, mysqltest_1,,);
|
||||
connection muc2;
|
||||
select * from t1;
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
connect (muc3, localhost, mysqltest_1,,);
|
||||
# Closing of one of connections should help
|
||||
disconnect muc1;
|
||||
connect (muc3, localhost, mysqltest_1,,);
|
||||
select * from t1;
|
||||
# Changing of limit should also help (and immediately)
|
||||
# Changing of limit should also help (and immediately)
|
||||
connection default;
|
||||
grant usage on *.* to mysqltest_1@localhost with max_user_connections 3;
|
||||
flush user_resources;
|
||||
@ -115,7 +118,7 @@ connect (muc4, localhost, mysqltest_1,,);
|
||||
connection muc4;
|
||||
select * from t1;
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
connect (muc5, localhost, mysqltest_1,,);
|
||||
# Clean up
|
||||
connection default;
|
||||
@ -129,10 +132,10 @@ drop user mysqltest_1@localhost;
|
||||
select @@session.max_user_connections, @@global.max_user_connections;
|
||||
# Local max_user_connections variable can't be set directly
|
||||
# since this limit is per-account
|
||||
--error 1229
|
||||
set session max_user_connections= 2;
|
||||
--error ER_GLOBAL_VARIABLE
|
||||
set session max_user_connections= 2;
|
||||
# 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;
|
||||
# Let us check that global limit works
|
||||
grant usage on *.* to mysqltest_1@localhost;
|
||||
@ -144,7 +147,7 @@ connect (muca2, localhost, mysqltest_1,,);
|
||||
connection muca2;
|
||||
select * from t1;
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
--error 1203
|
||||
--error ER_TOO_MANY_USER_CONNECTIONS
|
||||
connect (muca3, localhost, mysqltest_1,,);
|
||||
# Now we are testing that per-account limit prevails over gloabl limit
|
||||
connection default;
|
||||
@ -154,16 +157,20 @@ connect (muca3, localhost, mysqltest_1,,);
|
||||
connection muca3;
|
||||
select @@session.max_user_connections, @@global.max_user_connections;
|
||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
||||
--error 1226
|
||||
--error ER_USER_LIMIT_REACHED
|
||||
connect (muca4, localhost, mysqltest_1,,);
|
||||
# Cleanup
|
||||
connection default;
|
||||
disconnect muca1;
|
||||
disconnect muca2;
|
||||
disconnect muca3;
|
||||
set global max_user_connections= 0;
|
||||
set global max_user_connections= 0;
|
||||
drop user mysqltest_1@localhost;
|
||||
--enable_ps_protocol
|
||||
|
||||
# Final cleanup
|
||||
drop table t1;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -36,6 +36,7 @@ set @my_slow_launch_time =@@global.slow_launch_time;
|
||||
set @my_storage_engine =@@global.storage_engine;
|
||||
set @my_thread_cache_size =@@global.thread_cache_size;
|
||||
set @my_max_allowed_packet =@@global.max_allowed_packet;
|
||||
set @my_join_buffer_size =@@global.join_buffer_size;
|
||||
# case insensitivity tests (new in 5.0)
|
||||
set @`test`=1;
|
||||
select @test, @`test`, @TEST, @`TEST`, @"teSt";
|
||||
@ -173,21 +174,63 @@ select @@timestamp>0;
|
||||
set @@rand_seed1=10000000,@@rand_seed2=1000000;
|
||||
select ROUND(RAND(),5);
|
||||
|
||||
show variables like '%alloc%';
|
||||
select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
|
||||
set @@range_alloc_block_size=1024*16;
|
||||
|
||||
--echo
|
||||
--echo ==+ Testing %alloc% system variables +==
|
||||
--echo ==+ NOTE: These values *must* be a multiple of 1024 +==
|
||||
--echo ==+ Other values will be rounded down to nearest multiple +==
|
||||
--echo
|
||||
--echo ==+ Show initial values +==
|
||||
SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size');
|
||||
|
||||
--echo ==+ information_schema data +==
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
|
||||
--echo Testing values that are multiples of 1024
|
||||
set @@range_alloc_block_size=1024*15+1024;
|
||||
set @@query_alloc_block_size=1024*15+1024*2;
|
||||
set @@query_prealloc_size=1024*18-1024;
|
||||
set @@transaction_alloc_block_size=1024*21-1024*1;
|
||||
set @@transaction_prealloc_size=1024*21-2048;
|
||||
--echo ==+ Check manipulated values ==+
|
||||
select @@query_alloc_block_size;
|
||||
SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size');
|
||||
--echo ==+ information_schema data +==
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
|
||||
--echo ==+ Manipulate variable values +==
|
||||
--echo Testing values that are not 1024 multiples
|
||||
set @@range_alloc_block_size=1024*16+1023;
|
||||
set @@query_alloc_block_size=1024*17+2;
|
||||
set @@query_prealloc_size=1024*18;
|
||||
set @@query_prealloc_size=1024*18-1023;
|
||||
set @@transaction_alloc_block_size=1024*20-1;
|
||||
set @@transaction_prealloc_size=1024*21-1;
|
||||
select @@query_alloc_block_size;
|
||||
show variables like '%alloc%';
|
||||
select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
|
||||
--echo ==+ Check manipulated values ==+
|
||||
SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size');
|
||||
--echo ==+ information_schema data +==
|
||||
SELECT * FROM information_schema.session_variables
|
||||
WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size') ORDER BY 1;
|
||||
--echo ==+ Set values back to the default values +==
|
||||
set @@range_alloc_block_size=default;
|
||||
set @@query_alloc_block_size=default, @@query_prealloc_size=default;
|
||||
set transaction_alloc_block_size=default, @@transaction_prealloc_size=default;
|
||||
show variables like '%alloc%';
|
||||
select * from information_schema.session_variables where variable_name like '%alloc%' order by 1;
|
||||
--echo ==+ Check the values now that they are reset +==
|
||||
SHOW VARIABLES WHERE variable_name IN ('range_alloc_block_size',
|
||||
'query_alloc_block_size', 'query_prealloc_size',
|
||||
'transaction_alloc_block_size', 'transaction_prealloc_size');
|
||||
|
||||
#
|
||||
# Bug #10904 Illegal mix of collations between
|
||||
@ -605,12 +648,14 @@ set @@global.error_count=1;
|
||||
# Bug #10351: Setting ulong variable to > MAX_ULONG fails on 32-bit platform
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
set @@max_heap_table_size= 4294967296;
|
||||
select @@max_heap_table_size > 0;
|
||||
set global max_heap_table_size= 4294967296;
|
||||
select @@max_heap_table_size > 0;
|
||||
set @@max_heap_table_size= 4294967296;
|
||||
select @@max_heap_table_size > 0;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Bug #11775 Variable character_set_system does not exist (sometimes)
|
||||
@ -736,6 +781,18 @@ show variables like 'hostname';
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
# Bug#36446: Attempt to set @@join_buffer_size to its minimum value
|
||||
# produces spurious warning
|
||||
#
|
||||
|
||||
# set to 1 so mysqld will correct to minimum (+ warn)
|
||||
set join_buffer_size=1;
|
||||
# save minimum
|
||||
set @save_join_buffer_size=@@join_buffer_size;
|
||||
# set minimum
|
||||
set join_buffer_size=@save_join_buffer_size;
|
||||
|
||||
# This is at the very after the versioned tests, since it involves doing
|
||||
# cleanup
|
||||
#
|
||||
@ -772,6 +829,8 @@ set global slow_launch_time =@my_slow_launch_time;
|
||||
set global storage_engine =@my_storage_engine;
|
||||
set global thread_cache_size =@my_thread_cache_size;
|
||||
set global max_allowed_packet =@my_max_allowed_packet;
|
||||
set global join_buffer_size =@my_join_buffer_size;
|
||||
|
||||
#
|
||||
# Bug#28580 Repeatation of status variables
|
||||
#
|
||||
@ -1079,3 +1138,67 @@ SET @@session.thread_stack= 7;
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SET @@global.thread_stack= 7;
|
||||
#
|
||||
|
||||
#
|
||||
# Bug #40657 - assertion with out of range variables and traditional sql_mode
|
||||
#
|
||||
|
||||
SELECT @@global.expire_logs_days INTO @old_eld;
|
||||
|
||||
SET GLOBAL expire_logs_days = -1;
|
||||
--echo needs to've been adjusted (0)
|
||||
SELECT @@global.expire_logs_days;
|
||||
|
||||
SET GLOBAL expire_logs_days = 11;
|
||||
SET @old_mode=@@sql_mode;
|
||||
SET SESSION sql_mode = 'TRADITIONAL';
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET GLOBAL expire_logs_days = 100;
|
||||
--echo needs to be unchanged (11)
|
||||
SELECT @@global.expire_logs_days;
|
||||
SET SESSION sql_mode = @old_mode;
|
||||
|
||||
SET GLOBAL expire_logs_days = 100;
|
||||
--echo needs to've been adjusted (99)
|
||||
SELECT @@global.expire_logs_days;
|
||||
|
||||
SET GLOBAL expire_logs_days = 11;
|
||||
SET GLOBAL expire_logs_days = 99;
|
||||
--echo needs to pass with no warnings (99)
|
||||
SELECT @@global.expire_logs_days;
|
||||
|
||||
# cleanup
|
||||
SET GLOBAL expire_logs_days = @old_eld;
|
||||
|
||||
# show that warning uses underscore (sysvar-name), not hyphens (option-name)
|
||||
SET GLOBAL auto_increment_offset=-1;
|
||||
SET GLOBAL auto_increment_offset=0;
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Bug#41030 Wrong meta data (incorrect fieldlen)
|
||||
#
|
||||
|
||||
--enable_metadata
|
||||
select @@storage_engine;
|
||||
--disable_metadata
|
||||
|
||||
#
|
||||
# Bug#36540: CREATE EVENT and ALTER EVENT statements fail with large server_id
|
||||
#
|
||||
|
||||
SET @old_server_id = @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = (1 << 32) - 1;
|
||||
SELECT @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = (1 << 32);
|
||||
SELECT @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = (1 << 60);
|
||||
SELECT @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = 0;
|
||||
SELECT @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = -1;
|
||||
SELECT @@GLOBAL.server_id;
|
||||
SET GLOBAL server_id = @old_server_id;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,9 @@
|
||||
# Can't test with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists mysqltest;
|
||||
drop view if exists v1,v2,v3;
|
||||
@ -32,19 +35,19 @@ grant create view,select on test.* to mysqltest_1@localhost;
|
||||
connect (user1,localhost,mysqltest_1,,test);
|
||||
connection user1;
|
||||
|
||||
-- error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
||||
create definer=root@localhost view v1 as select * from mysqltest.t1;
|
||||
create view v1 as select * from mysqltest.t1;
|
||||
# try to modify view without DROP privilege on it
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
alter view v1 as select * from mysqltest.t1;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
create or replace view v1 as select * from mysqltest.t1;
|
||||
# no CRETE VIEW privilege
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
create view mysqltest.v2 as select * from mysqltest.t1;
|
||||
# no SELECT privilege
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
create view v2 as select * from mysqltest.t2;
|
||||
|
||||
connection root;
|
||||
@ -54,7 +57,7 @@ show create view v1;
|
||||
grant create view,drop,select on test.* to mysqltest_1@localhost;
|
||||
|
||||
connection user1;
|
||||
# following 'use' command is workaround of bug #9582 and should be removed
|
||||
# following 'use' command is workaround of Bug#9582 and should be removed
|
||||
# when that bug will be fixed
|
||||
use test;
|
||||
alter view v1 as select * from mysqltest.t1;
|
||||
@ -82,7 +85,7 @@ grant select (c) on mysqltest.v1 to mysqltest_1@localhost;
|
||||
connection user1;
|
||||
select c from mysqltest.v1;
|
||||
# there are no privileges on column 'd'
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
select d from mysqltest.v1;
|
||||
|
||||
connection root;
|
||||
@ -102,7 +105,7 @@ grant select (c) on mysqltest.v1 to mysqltest_1@localhost;
|
||||
connection user1;
|
||||
select c from mysqltest.v1;
|
||||
# there are no privileges on column 'd'
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
select d from mysqltest.v1;
|
||||
|
||||
connection root;
|
||||
@ -117,7 +120,7 @@ connection root;
|
||||
--disable_warnings
|
||||
create database mysqltest;
|
||||
--enable_warnings
|
||||
#prepare views and tables
|
||||
# prepare views and tables
|
||||
create table mysqltest.t1 (a int, b int);
|
||||
create table mysqltest.t2 (a int, b int);
|
||||
create view mysqltest.v1 (c,d) as select a+1,b+1 from mysqltest.t1;
|
||||
@ -139,21 +142,21 @@ select c from mysqltest.v4;
|
||||
show columns from mysqltest.v1;
|
||||
show columns from mysqltest.v2;
|
||||
# but explain/show do not
|
||||
-- error 1345
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select c from mysqltest.v1;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v1;
|
||||
-- error 1345
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select c from mysqltest.v2;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v2;
|
||||
-- error 1345
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select c from mysqltest.v3;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v3;
|
||||
-- error 1345
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select c from mysqltest.v4;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v4;
|
||||
|
||||
# allow to see one of underlying table
|
||||
@ -162,19 +165,19 @@ grant select on mysqltest.t1 to mysqltest_1@localhost;
|
||||
connection user1;
|
||||
# EXPLAIN of view on above table works
|
||||
explain select c from mysqltest.v1;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v1;
|
||||
explain select c from mysqltest.v2;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v2;
|
||||
# but other EXPLAINs do not
|
||||
-- error 1345
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select c from mysqltest.v3;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v3;
|
||||
-- error 1345
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select c from mysqltest.v4;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
show create view mysqltest.v4;
|
||||
|
||||
# allow to see any view in mysqltest database
|
||||
@ -228,14 +231,14 @@ select * from t1;
|
||||
update v2 set a=a+c;
|
||||
select * from t1;
|
||||
# no rights on column
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
update t2,v2 set v2.c=v2.a+v2.c where t2.x=v2.c;
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
update v2 set c=a+c;
|
||||
# no rights for view
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
update t2,v3 set v3.a=v3.a+v3.c where t2.x=v3.c;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
update v3 set a=a+c;
|
||||
|
||||
use test;
|
||||
@ -269,9 +272,9 @@ select * from t1;
|
||||
delete v1 from t2,v1 where t2.x=v1.c;
|
||||
select * from t1;
|
||||
# no rights for view
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
delete v2 from t2,v2 where t2.x=v2.c;
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
delete from v2 where c < 4;
|
||||
|
||||
use test;
|
||||
@ -305,9 +308,9 @@ select * from t1;
|
||||
insert into v1 select x,y from t2;
|
||||
select * from t1;
|
||||
# no rights for view
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
insert into v2 values (5,6);
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
insert into v2 select x,y from t2;
|
||||
|
||||
use test;
|
||||
@ -335,10 +338,10 @@ connection user1;
|
||||
create view v1 as select * from mysqltest.t1;
|
||||
create view v2 as select b from mysqltest.t2;
|
||||
# There are not rights on mysqltest.v1
|
||||
-- error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
create view mysqltest.v1 as select * from mysqltest.t1;
|
||||
# There are not any rights on mysqltest.t2.a
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
create view v3 as select a from mysqltest.t2;
|
||||
|
||||
# give CREATE VIEW privileges (without any privileges for result column)
|
||||
@ -358,13 +361,13 @@ create view mysqltest.v3 as select b from mysqltest.t2;
|
||||
|
||||
|
||||
# Expression need select privileges
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
create view v4 as select b+1 from mysqltest.t2;
|
||||
|
||||
connection root;
|
||||
grant create view,update,select on test.* to mysqltest_1@localhost;
|
||||
connection user1;
|
||||
-- error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
create view v4 as select b+1 from mysqltest.t2;
|
||||
|
||||
connection root;
|
||||
@ -417,7 +420,7 @@ connection root;
|
||||
# check view definer information
|
||||
show create view v1;
|
||||
revoke select on mysqltest.t1 from mysqltest_1@localhost;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v1;
|
||||
grant select on mysqltest.t1 to mysqltest_1@localhost;
|
||||
select * from v1;
|
||||
@ -426,7 +429,7 @@ drop view v1;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# rights on execution of view underlying functiond (BUG#9505)
|
||||
# rights on execution of view underlying functiond (Bug#9505)
|
||||
#
|
||||
connection root;
|
||||
--disable_warnings
|
||||
@ -459,11 +462,11 @@ connection user1;
|
||||
use mysqltest;
|
||||
select * from v1;
|
||||
select * from v2;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v3;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v4;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v5;
|
||||
use test;
|
||||
|
||||
@ -511,13 +514,13 @@ use test;
|
||||
connection root;
|
||||
create view v5 as select * from v1;
|
||||
revoke execute on function f2 from mysqltest_1@localhost;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v1;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v2;
|
||||
select * from v3;
|
||||
select * from v4;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v5;
|
||||
|
||||
drop view v1, v2, v3, v4, v5;
|
||||
@ -555,13 +558,13 @@ use test;
|
||||
|
||||
connection root;
|
||||
revoke select on t1 from mysqltest_1@localhost;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v1;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v2;
|
||||
select * from v3;
|
||||
select * from v4;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v5;
|
||||
|
||||
#drop view v1, v2, v3, v4, v5;
|
||||
@ -594,11 +597,11 @@ connection user1;
|
||||
use mysqltest;
|
||||
select * from v1;
|
||||
select * from v2;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v3;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v4;
|
||||
-- error ER_VIEW_INVALID
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v5;
|
||||
use test;
|
||||
|
||||
@ -610,7 +613,7 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# BUG#14256: definer in view definition is not fully qualified
|
||||
# Bug#14256 definer in view definition is not fully qualified
|
||||
#
|
||||
--disable_warnings
|
||||
drop view if exists v1;
|
||||
@ -647,6 +650,7 @@ drop view v1;
|
||||
select @v1def1, @v1def2, @v1def1=@v1def2;
|
||||
|
||||
connection root;
|
||||
disconnect test14256;
|
||||
drop user test14256;
|
||||
|
||||
# Restore the anonymous users.
|
||||
@ -656,8 +660,8 @@ flush privileges;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#14726: freeing stack variable in case of an error of opening
|
||||
# a view when we have locked tables with LOCK TABLES statement.
|
||||
# Bug#14726 freeing stack variable in case of an error of opening a view when
|
||||
# we have locked tables with LOCK TABLES statement.
|
||||
#
|
||||
connection root;
|
||||
--disable_warnings
|
||||
@ -674,7 +678,7 @@ connection user1;
|
||||
|
||||
use mysqltest;
|
||||
LOCK TABLES v1 READ;
|
||||
-- error ER_TABLEACCESS_DENIED_ERROR
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SHOW CREATE TABLE v1;
|
||||
UNLOCK TABLES;
|
||||
use test;
|
||||
@ -685,7 +689,7 @@ drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# switch to default connaction
|
||||
# switch to default connection
|
||||
#
|
||||
disconnect user1;
|
||||
disconnect root;
|
||||
@ -702,7 +706,7 @@ drop view v1;
|
||||
drop view v2;
|
||||
|
||||
#
|
||||
# Bug#18681: View privileges are broken
|
||||
# Bug#18681 View privileges are broken
|
||||
#
|
||||
CREATE DATABASE mysqltest1;
|
||||
CREATE USER readonly@localhost;
|
||||
@ -723,54 +727,55 @@ GRANT UPDATE,SELECT ON mysqltest1.v_tus TO readonly@localhost;
|
||||
GRANT DELETE ON mysqltest1.v_td TO readonly@localhost;
|
||||
GRANT DELETE,SELECT ON mysqltest1.v_tds TO readonly@localhost;
|
||||
|
||||
CONNECT (n1,localhost,readonly,,);
|
||||
CONNECTION n1;
|
||||
connect (n1,localhost,readonly,,);
|
||||
connection n1;
|
||||
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM mysqltest1.v_t1;
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
INSERT INTO mysqltest1.v_t1 VALUES(4);
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
DELETE FROM mysqltest1.v_t1 WHERE x = 1;
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
UPDATE mysqltest1.v_t1 SET x = 3 WHERE x = 2;
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
UPDATE mysqltest1.v_t1 SET x = 3;
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
DELETE FROM mysqltest1.v_t1;
|
||||
--error 1356
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT 1 FROM mysqltest1.v_t1;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM mysqltest1.t1;
|
||||
|
||||
SELECT * FROM mysqltest1.v_ts;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM mysqltest1.v_ts, mysqltest1.t1 WHERE mysqltest1.t1.x = mysqltest1.v_ts.x;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM mysqltest1.v_ti;
|
||||
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
INSERT INTO mysqltest1.v_ts VALUES (100);
|
||||
INSERT INTO mysqltest1.v_ti VALUES (100);
|
||||
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
UPDATE mysqltest1.v_ts SET x= 200 WHERE x = 100;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
UPDATE mysqltest1.v_ts SET x= 200;
|
||||
UPDATE mysqltest1.v_tu SET x= 200 WHERE x = 100;
|
||||
UPDATE mysqltest1.v_tus SET x= 200 WHERE x = 100;
|
||||
UPDATE mysqltest1.v_tu SET x= 200;
|
||||
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
DELETE FROM mysqltest1.v_ts WHERE x= 200;
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
DELETE FROM mysqltest1.v_ts;
|
||||
--error 1143
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
DELETE FROM mysqltest1.v_td WHERE x= 200;
|
||||
DELETE FROM mysqltest1.v_tds WHERE x= 200;
|
||||
DELETE FROM mysqltest1.v_td;
|
||||
|
||||
CONNECTION default;
|
||||
connection default;
|
||||
disconnect n1;
|
||||
DROP VIEW mysqltest1.v_tds;
|
||||
DROP VIEW mysqltest1.v_td;
|
||||
DROP VIEW mysqltest1.v_tus;
|
||||
@ -783,21 +788,21 @@ DROP USER readonly@localhost;
|
||||
DROP DATABASE mysqltest1;
|
||||
|
||||
#
|
||||
# BUG#14875: Bad view DEFINER makes SHOW CREATE VIEW fail
|
||||
# Bug#14875 Bad view DEFINER makes SHOW CREATE VIEW fail
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE DEFINER = 'no-such-user'@localhost VIEW v AS SELECT a from t1;
|
||||
#--warning 1448
|
||||
#--warning ER_VIEW_OTHER_USER
|
||||
SHOW CREATE VIEW v;
|
||||
--error 1449
|
||||
--error ER_NO_SUCH_USER
|
||||
SELECT * FROM v;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1;
|
||||
USE test;
|
||||
|
||||
#
|
||||
# Bug#20363: Create view on just created view is now denied
|
||||
# Bug#20363 Create view on just created view is now denied
|
||||
#
|
||||
eval CREATE USER mysqltest_db1@localhost identified by 'PWD';
|
||||
eval GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION;
|
||||
@ -828,6 +833,7 @@ SELECT * FROM view2;
|
||||
SELECT * from view3;
|
||||
|
||||
connection default;
|
||||
disconnect session1;
|
||||
DROP VIEW mysqltest_db1.view3;
|
||||
DROP VIEW mysqltest_db1.view2;
|
||||
DROP VIEW mysqltest_db1.view1;
|
||||
@ -835,8 +841,8 @@ DROP TABLE mysqltest_db1.t1;
|
||||
DROP SCHEMA mysqltest_db1;
|
||||
DROP USER mysqltest_db1@localhost;
|
||||
#
|
||||
# BUG#20482: failure on Create join view with sources views/tables
|
||||
# in different schemas
|
||||
# Bug#20482 failure on Create join view with sources views/tables
|
||||
# in different schemas
|
||||
#
|
||||
--disable_warnings
|
||||
CREATE DATABASE test1;
|
||||
@ -846,7 +852,7 @@ CREATE DATABASE test2;
|
||||
CREATE TABLE test1.t0 (a VARCHAR(20));
|
||||
CREATE TABLE test2.t1 (a VARCHAR(20));
|
||||
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;
|
||||
|
||||
DROP VIEW test.v1;
|
||||
@ -857,8 +863,8 @@ DROP DATABASE test1;
|
||||
|
||||
|
||||
#
|
||||
# BUG#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER
|
||||
# returns invoker name
|
||||
# Bug#20570 CURRENT_USER() in a VIEW with SQL SECURITY DEFINER returns
|
||||
# invoker name
|
||||
#
|
||||
--disable_warnings
|
||||
DROP VIEW IF EXISTS v1;
|
||||
@ -917,7 +923,7 @@ DROP USER mysqltest_u1@localhost;
|
||||
|
||||
|
||||
#
|
||||
# Bug#17254: Error for DEFINER security on VIEW provides too much info
|
||||
# Bug#17254 Error for DEFINER security on VIEW provides too much info
|
||||
#
|
||||
connect (root,localhost,root,,);
|
||||
connection root;
|
||||
@ -941,12 +947,12 @@ DROP USER def_17254@localhost;
|
||||
connect (inv,localhost,inv_17254,,db17254);
|
||||
connection inv;
|
||||
--echo for a user
|
||||
--error 1142
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM v1;
|
||||
|
||||
connection root;
|
||||
--echo for a superuser
|
||||
--error 1449
|
||||
--error ER_NO_SUCH_USER
|
||||
SELECT * FROM v1;
|
||||
DROP USER inv_17254@localhost;
|
||||
DROP DATABASE db17254;
|
||||
@ -955,7 +961,7 @@ disconnect inv;
|
||||
|
||||
|
||||
#
|
||||
# BUG#24404: strange bug with view+permission+prepared statement
|
||||
# Bug#24404 strange bug with view+permission+prepared statement
|
||||
#
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest_db1;
|
||||
@ -1023,8 +1029,8 @@ DROP USER mysqltest_u1@localhost;
|
||||
DROP USER mysqltest_u2@localhost;
|
||||
|
||||
#
|
||||
# Bug#26813: The SUPER privilege is wrongly required to alter a view created
|
||||
# by another user.
|
||||
# Bug#26813 The SUPER privilege is wrongly required to alter a view created
|
||||
# by another user.
|
||||
#
|
||||
connection root;
|
||||
CREATE DATABASE db26813;
|
||||
@ -1056,7 +1062,7 @@ DROP DATABASE db26813;
|
||||
disconnect u1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#29908: A user can gain additional access through the ALTER VIEW.
|
||||
--echo # Bug#29908 A user can gain additional access through the ALTER VIEW.
|
||||
--echo #
|
||||
connection root;
|
||||
CREATE DATABASE mysqltest_29908;
|
||||
@ -1101,7 +1107,7 @@ disconnect u2;
|
||||
--echo #######################################################################
|
||||
|
||||
#
|
||||
# BUG#24040: Create View don't succed with "all privileges" on a database.
|
||||
# Bug#24040 Create View don't succed with "all privileges" on a database.
|
||||
#
|
||||
|
||||
# Prepare.
|
||||
@ -1185,12 +1191,52 @@ SELECT * FROM mysqltest1.t4;
|
||||
|
||||
# Cleanup.
|
||||
|
||||
-- disconnect bug24040_con
|
||||
disconnect bug24040_con;
|
||||
|
||||
DROP DATABASE mysqltest1;
|
||||
DROP DATABASE mysqltest2;
|
||||
DROP USER mysqltest_u1@localhost;
|
||||
|
||||
|
||||
#
|
||||
# Bug#41354 Access control is bypassed when all columns of a view are
|
||||
# selected by * wildcard
|
||||
|
||||
CREATE DATABASE db1;
|
||||
USE db1;
|
||||
CREATE TABLE t1(f1 INT, f2 INT);
|
||||
CREATE VIEW v1 AS SELECT f1, f2 FROM t1;
|
||||
|
||||
GRANT SELECT (f1) ON t1 TO foo;
|
||||
GRANT SELECT (f1) ON v1 TO foo;
|
||||
|
||||
connect (addconfoo, localhost, foo,,);
|
||||
connection addconfoo;
|
||||
USE db1;
|
||||
|
||||
SELECT f1 FROM t1;
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
SELECT f2 FROM t1;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM t1;
|
||||
|
||||
SELECT f1 FROM v1;
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
SELECT f2 FROM v1;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM v1;
|
||||
|
||||
connection default;
|
||||
disconnect root;
|
||||
disconnect addconfoo;
|
||||
USE test;
|
||||
REVOKE SELECT (f1) ON db1.t1 FROM foo;
|
||||
REVOKE SELECT (f1) ON db1.v1 FROM foo;
|
||||
DROP USER foo;
|
||||
DROP VIEW db1.v1;
|
||||
DROP TABLE db1.t1;
|
||||
DROP DATABASE db1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
|
||||
@ -1292,8 +1338,8 @@ DROP DATABASE mysqltest1;
|
||||
DROP USER mysqluser1@localhost;
|
||||
|
||||
#
|
||||
# Bug#35600: Security breach via view, I_S table and prepared
|
||||
# statement/stored procedure
|
||||
# Bug#35600 Security breach via view, I_S table and prepared
|
||||
# statement/stored procedure
|
||||
#
|
||||
CREATE USER mysqluser1@localhost;
|
||||
CREATE DATABASE mysqltest1;
|
||||
@ -1334,3 +1380,8 @@ DROP VIEW v1, v2;
|
||||
DROP DATABASE mysqltest1;
|
||||
DROP VIEW test.v3;
|
||||
DROP USER mysqluser1@localhost;
|
||||
USE test;
|
||||
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
@ -10,8 +10,11 @@
|
||||
-- source include/not_embedded.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`;
|
||||
@ -113,6 +116,7 @@ while (!`select @aborted_clients`)
|
||||
# the disconnect has reached client
|
||||
let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist;
|
||||
--source include/wait_condition.inc
|
||||
disconnect wait_con;
|
||||
|
||||
--echo connection con1;
|
||||
connection con1;
|
||||
@ -126,8 +130,13 @@ SELECT 2;
|
||||
SELECT 3;
|
||||
--replace_result $start_value <start_value>
|
||||
eval SET @@global.wait_timeout= $start_value;
|
||||
# ML: The start value might be changed in future ...
|
||||
--echo disconnection 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 @@
|
||||
# WL#1756
|
||||
#
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
@ -14,10 +18,10 @@ xa rollback 'test1';
|
||||
select * from t1;
|
||||
|
||||
xa start 'test2';
|
||||
--error 1399
|
||||
--error ER_XAER_RMFAIL
|
||||
xa start 'test-bad';
|
||||
insert t1 values (20);
|
||||
--error 1399
|
||||
--error ER_XAER_RMFAIL
|
||||
xa prepare 'test2';
|
||||
xa end 'test2';
|
||||
xa prepare 'test2';
|
||||
@ -27,22 +31,22 @@ select * from t1;
|
||||
xa start 'testa','testb';
|
||||
insert t1 values (30);
|
||||
|
||||
--error 1399
|
||||
--error ER_XAER_RMFAIL
|
||||
commit;
|
||||
|
||||
xa end 'testa','testb';
|
||||
|
||||
--error 1399
|
||||
--error ER_XAER_RMFAIL
|
||||
begin;
|
||||
--error 1399
|
||||
--error ER_XAER_RMFAIL
|
||||
create table t2 (a int);
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connection con1;
|
||||
|
||||
--error 1440
|
||||
--error ER_XAER_DUPID
|
||||
xa start 'testa','testb';
|
||||
--error 1440
|
||||
--error ER_XAER_DUPID
|
||||
xa start 'testa','testb', 123;
|
||||
|
||||
# gtrid [ , bqual [ , formatID ] ]
|
||||
@ -51,7 +55,7 @@ insert t1 values (40);
|
||||
xa end 'testb',' 0@P`',11;
|
||||
xa prepare 'testb',0x2030405060,11;
|
||||
|
||||
--error 1399
|
||||
--error ER_XAER_RMFAIL
|
||||
start transaction;
|
||||
|
||||
xa recover;
|
||||
@ -64,11 +68,11 @@ xa prepare 'testa','testb';
|
||||
|
||||
xa recover;
|
||||
|
||||
--error 1397
|
||||
--error ER_XAER_NOTA
|
||||
xa commit 'testb',0x2030405060,11;
|
||||
xa rollback 'testa','testb';
|
||||
|
||||
--error 1064
|
||||
--error ER_PARSE_ERROR
|
||||
xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
|
||||
|
||||
select * from t1;
|
||||
@ -119,3 +123,7 @@ xa start 'a','c';
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
Reference in New Issue
Block a user