mirror of
https://github.com/MariaDB/server.git
synced 2025-02-26 23:33:12 +01:00

This allows one to run the test suite even if any of the following options are changed: - character-set-server - collation-server - join-cache-level - log-basename - max-allowed-packet - optimizer-switch - query-cache-size and query-cache-type - skip-name-resolve - table-definition-cache - table-open-cache - Some innodb options etc Changes: - Don't print out the value of system variables as one can't depend on them to being constants. - Don't set global variables to 'default' as the default may not be the same as the test was started with if there was an additional option file. Instead save original value and reset it at end of test. - Test that depends on the latin1 character set should include default_charset.inc or set the character set to latin1 - Test that depends on the original optimizer switch, should include default_optimizer_switch.inc - Test that depends on the value of a specific system variable should set it in the test (like optimizer_use_condition_selectivity) - Split subselect3.test into subselect3.test and subselect3.inc to make it easier to set and reset system variables. - Added .opt files for test that required specfic options that could be changed by external configuration files. - Fixed result files in rockdsb & tokudb that had not been updated for a while.
180 lines
4.2 KiB
Text
180 lines
4.2 KiB
Text
#
|
|
# Just a couple of tests to make sure that schema works.
|
|
#
|
|
# Drop mysqltest1 database, as it can left from the previous tests.
|
|
#
|
|
|
|
# Save the initial number of concurrent sessions.
|
|
--source include/count_sessions.inc
|
|
--source include/default_charset.inc
|
|
|
|
--disable_warnings
|
|
drop database if exists mysqltest1;
|
|
--enable_warnings
|
|
|
|
create schema foo;
|
|
show create schema foo;
|
|
show schemas;
|
|
drop schema foo;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug #48940 MDL deadlocks against mysql_rm_db
|
|
--echo #
|
|
|
|
--disable_warnings
|
|
DROP SCHEMA IF EXISTS schema1;
|
|
--enable_warnings
|
|
|
|
connect(con2, localhost, root);
|
|
|
|
connection default;
|
|
|
|
CREATE SCHEMA schema1;
|
|
CREATE TABLE schema1.t1 (a INT);
|
|
|
|
SET autocommit= FALSE;
|
|
INSERT INTO schema1.t1 VALUES (1);
|
|
|
|
connection con2;
|
|
--send DROP SCHEMA schema1
|
|
|
|
connection default;
|
|
let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
|
|
WHERE state= 'Waiting for table metadata lock'
|
|
AND info='DROP SCHEMA schema1';
|
|
--source include/wait_condition.inc
|
|
# Error 1 is from ALTER DATABASE when the database does not exist.
|
|
# Listing the error twice to prevent result diffences based on filename.
|
|
--error 1,1
|
|
ALTER SCHEMA schema1 DEFAULT CHARACTER SET utf8;
|
|
SET autocommit= TRUE;
|
|
|
|
connection con2;
|
|
--reap
|
|
|
|
connection default;
|
|
disconnect con2;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug #49988 MDL deadlocks with mysql_create_db, reload_acl_and_cache
|
|
--echo #
|
|
|
|
--disable_warnings
|
|
DROP SCHEMA IF EXISTS schema1;
|
|
--enable_warnings
|
|
|
|
connect (con2, localhost, root);
|
|
|
|
connection default;
|
|
CREATE SCHEMA schema1;
|
|
CREATE TABLE schema1.t1 (id INT);
|
|
LOCK TABLE schema1.t1 WRITE;
|
|
|
|
connection con2;
|
|
--send DROP SCHEMA schema1
|
|
|
|
connection default;
|
|
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
|
WHERE state='Waiting for schema metadata lock' and info='DROP SCHEMA schema1';
|
|
--source include/wait_condition.inc
|
|
|
|
--echo # CREATE SCHEMA used to give a deadlock.
|
|
--echo # Now we prohibit CREATE SCHEMA in LOCK TABLES mode.
|
|
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
|
CREATE SCHEMA IF NOT EXISTS schema1;
|
|
|
|
--echo # UNLOCK TABLES so DROP SCHEMA can continue.
|
|
UNLOCK TABLES;
|
|
|
|
connection con2;
|
|
--reap
|
|
|
|
connection default;
|
|
disconnect con2;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER
|
|
--echo #
|
|
|
|
CREATE DATABASE db1;
|
|
CREATE TABLE db1.t1 (a INT);
|
|
INSERT INTO db1.t1 VALUES (1), (2);
|
|
|
|
connect (con1, localhost, root);
|
|
HANDLER db1.t1 OPEN;
|
|
|
|
connection default;
|
|
--echo # Sending:
|
|
--send DROP DATABASE db1
|
|
|
|
connect (con2, localhost, root);
|
|
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
|
WHERE state='Waiting for table metadata lock' AND info='DROP DATABASE db1';
|
|
--source include/wait_condition.inc
|
|
|
|
connection con1;
|
|
# All these statements before resulted in deadlock.
|
|
CREATE DATABASE db2;
|
|
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
|
DROP DATABASE db2;
|
|
HANDLER t1 CLOSE;
|
|
|
|
connection default;
|
|
--echo # Reaping: DROP DATABASE db1
|
|
--reap
|
|
disconnect con1;
|
|
disconnect con2;
|
|
|
|
|
|
--echo #
|
|
--echo # Tests for increased CREATE/ALTER/DROP DATABASE concurrency with
|
|
--echo # database name locks.
|
|
--echo #
|
|
|
|
--disable_warnings
|
|
DROP DATABASE IF EXISTS db1;
|
|
DROP DATABASE IF EXISTS db2;
|
|
--enable_warnings
|
|
|
|
connect (con2, localhost, root);
|
|
connect (con3, localhost, root);
|
|
|
|
connection default;
|
|
CREATE DATABASE db1;
|
|
CREATE TABLE db1.t1 (id INT);
|
|
START TRANSACTION;
|
|
INSERT INTO db1.t1 VALUES (1);
|
|
|
|
connection con2;
|
|
--echo # DROP DATABASE should block due to the active transaction
|
|
--echo # Sending:
|
|
--send DROP DATABASE db1
|
|
|
|
connection con3;
|
|
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
|
WHERE state='Waiting for table metadata lock' and info='DROP DATABASE db1';
|
|
--source include/wait_condition.inc
|
|
--echo # But it should still be possible to CREATE/ALTER/DROP other databases.
|
|
CREATE DATABASE db2;
|
|
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
|
DROP DATABASE db2;
|
|
|
|
connection default;
|
|
--echo # End the transaction so DROP DATABASE db1 can continue
|
|
COMMIT;
|
|
|
|
connection con2;
|
|
--echo # Reaping: DROP DATABASE db1
|
|
--reap
|
|
|
|
connection default;
|
|
disconnect con2;
|
|
disconnect con3;
|
|
|
|
|
|
# Check that all connections opened by test cases in this file are really
|
|
# gone so execution of other tests won't be affected by their presence.
|
|
--source include/wait_until_count_sessions.inc
|