################################################################################ # # NOTICE: # # This file unfortunately contains characters in various different encodings. # Be careful when editing this file to ensure that you (or your editor) do # not change things (such as encodings) on lines that you did not mean to # modify. # ################################################################################ # Result differences depending on FS case sensitivity. if (!$require_case_insensitive_file_system) { --source include/have_case_sensitive_file_system.inc } # # Test of some show commands # --disable_warnings drop table if exists t1,t2; drop table if exists t1aa,t2aa; drop database if exists mysqltest; drop database if exists mysqltest1; delete from mysql.user where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; delete from mysql.db where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; flush privileges; --enable_warnings --character_set latin1 create table t1 (a int not null primary key, b int not null,c int not null, key(b,c)); insert into t1 values (1,2,2),(2,2,3),(3,2,4),(4,2,4); --echo -- Here we enable metadata just to check that the collation of the --echo -- resultset is non-binary for string type. This should be changed --echo -- after Bug#29394 is implemented. --enable_metadata check table t1 fast; check table t1 fast; check table t1 changed; insert into t1 values (5,5,5); check table t1 changed; check table t1 medium; check table t1 extended; analyze table t1; --replace_result 4225 # 4097 # show index from t1; --disable_metadata --error ER_DUP_ENTRY insert into t1 values (5,5,5); --echo -- Here we enable metadata just to check that the collation of the --echo -- resultset is non-binary for string type. This should be changed --echo -- after Bug#29394 is implemented. --enable_metadata optimize table t1; --disable_metadata optimize table t1; drop table t1; # show variables; --echo -- Here we enable metadata just to check that the collation of the --echo -- resultset is non-binary for string type. This should be changed --echo -- after Bug#29394 is implemented. --enable_metadata show variables like "wait_timeout%"; show variables like "WAIT_timeout%"; show variables like "this_doesn't_exists%"; --replace_result 4225 # 4097 # show table status from test like "this_doesn't_exists%"; --replace_result 4225 # 4097 # show databases; --replace_result 4225 # 4097 # show databases like "test%"; --disable_metadata # # Test of SHOW CREATE # create temporary table t1 (a int not null); show create table t1; alter table t1 rename t2; show create table t2; drop table t2; create table t1 ( test_set set( 'val1', 'val2', 'val3' ) not null default '', name char(20) default 'O''Brien' comment 'O''Brien as default', c int not null comment 'int column', `c-b` int comment 'name with a minus', `space 2` int comment 'name with a space' ) comment = 'it\'s a table' ; show create table t1; set sql_quote_show_create=0; show create table t1; set sql_quote_show_create=1; show full columns from t1; drop table t1; create table t1 (a int not null, unique aa (a)); show create table t1; drop table t1; create table t1 (a int not null, primary key (a)); show create table t1; drop table t1; flush tables; # # We will see some of new DD tables being opened # after flush tables. These tables were open when we write to # mysql.general_log. # --sorted_result show open tables; create table t1(n int); insert into t1 values (1); --sorted_result show open tables; drop table t1; create table t1 (a decimal(9,2), b decimal (9,0), e double(9,2), f double(5,0), h float(3,2), i float(3,0)); show columns from t1; show full columns from t1; drop table t1; # # Check metadata # create table t1 (a int not null); create table t2 select max(a) from t1; show columns from t2; drop table t1,t2; # Check auto conversions of types create table t1 (c decimal, d double, f float, r real); show columns from t1; drop table t1; create table t1 (c decimal(3,3), d double(3,3), f float(3,3)); show columns from t1; drop table t1; # # Test for Bug#2593 SHOW CREATE TABLE doesn't properly double quotes # SET @old_sql_mode= @@sql_mode, sql_mode= ''; SET @old_sql_quote_show_create= @@sql_quote_show_create, sql_quote_show_create= OFF; CREATE TABLE ```ab``cd``` (i INT); SHOW CREATE TABLE ```ab``cd```; DROP TABLE ```ab``cd```; CREATE TABLE ```ab````cd``` (i INT); SHOW CREATE TABLE ```ab````cd```; DROP TABLE ```ab````cd```; CREATE TABLE ```a` (i INT); SHOW CREATE TABLE ```a`; DROP TABLE ```a`; CREATE TABLE `a.1` (i INT); SHOW CREATE TABLE `a.1`; DROP TABLE `a.1`; SET sql_mode= 'ANSI_QUOTES'; CREATE TABLE """a" (i INT); SHOW CREATE TABLE """a"; DROP TABLE """a"; # to test quotes around keywords.. : SET sql_mode= ''; SET sql_quote_show_create= OFF; CREATE TABLE t1 (i INT); SHOW CREATE TABLE t1; DROP TABLE t1; CREATE TABLE `table` (i INT); SHOW CREATE TABLE `table`; DROP TABLE `table`; 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. # select @@max_heap_table_size; CREATE TABLE t1 ( a int(11) default NULL, KEY a USING BTREE (a) ) ENGINE=HEAP; CREATE TABLE t2 ( b int(11) default NULL, index(b) ) ENGINE=HEAP; CREATE TABLE t3 ( a int(11) default NULL, b int(11) default NULL, KEY a USING BTREE (a), index(b) ) ENGINE=HEAP; insert into t1 values (1),(2); insert into t2 values (1),(2); insert into t3 values (1,1),(2,2); analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 12 # show table status; insert into t1 values (3),(4); insert into t2 values (3),(4); insert into t3 values (3,3),(4,4); analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 12 # show table status; insert into t1 values (5); insert into t2 values (5); insert into t3 values (5,5); analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 12 # show table status; delete from t1 where a=3; delete from t2 where b=3; delete from t3 where a=3; analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 10 # 12 # show table status; truncate table t1; truncate table t2; truncate table t3; analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 12 # show table status; insert into t1 values (5); insert into t2 values (5); insert into t3 values (5,5); analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 12 # show table status; delete from t1 where a=5; delete from t2 where b=5; delete from t3 where a=5; analyze table t1, t2, t3; --replace_column 6 # 7 # 8 # 9 # 10 # 12 # show table status; drop table t1, t2, t3; # # Test for Bug#3342 SHOW CREATE DATABASE seems to require DROP privilege # create database mysqltest; show create database mysqltest; create table mysqltest.t1(a int); insert into mysqltest.t1 values(1); create user mysqltest_1@localhost, mysqltest_2@localhost, mysqltest_3@localhost; grant select on `mysqltest`.* to mysqltest_1@localhost; grant usage on `mysqltest`.* to mysqltest_2@localhost; grant drop on `mysqltest`.* to mysqltest_3@localhost; connect (con1,localhost,mysqltest_1,,mysqltest); connection con1; select * from t1; show create database mysqltest; --error ER_TABLEACCESS_DENIED_ERROR drop table t1; --error ER_DBACCESS_DENIED_ERROR drop database mysqltest; disconnect con1; --source include/wait_until_disconnected.inc connect (con2,localhost,mysqltest_2,,test); connection con2; --error ER_TABLEACCESS_DENIED_ERROR select * from mysqltest.t1; --error ER_DBACCESS_DENIED_ERROR show create database mysqltest; --error ER_TABLEACCESS_DENIED_ERROR drop table mysqltest.t1; --error ER_DBACCESS_DENIED_ERROR drop database mysqltest; disconnect con2; --source include/wait_until_disconnected.inc connect (con3,localhost,mysqltest_3,,test); connection con3; --error ER_TABLEACCESS_DENIED_ERROR select * from mysqltest.t1; show create database mysqltest; drop table mysqltest.t1; drop database mysqltest; disconnect con3; --source include/wait_until_disconnected.inc connection default; set names binary; delete from mysql.user where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; delete from mysql.db where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3'; flush privileges; # Test for Bug#9439 Reporting wrong datatype for sub_part on show index CREATE TABLE t1( field1 text NOT NULL, PRIMARY KEY(field1(750)) ); --enable_metadata --replace_result 4225 # 4097 # show index from t1; --disable_metadata drop table t1; # Test for Bug#11635 mysqldump exports TYPE instead of USING for HASH create table t1 ( c1 int NOT NULL, c2 int NOT NULL, PRIMARY KEY USING HASH (c1), INDEX USING BTREE(c2) ); SHOW CREATE TABLE t1; DROP TABLE t1; # # 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 # NOTE: SHOW OPEN TABLES does not sort result list by database or table names. # Tables are listed in the order they were opened. We can not use the system # database (mysql) for the test here, because we have no control over the order # of opening tables in it. Consequently, we can not use 'SHOW OPEN TABLES'. --disable_warnings DROP DATABASE IF EXISTS mysqltest1; --enable_warnings CREATE DATABASE mysqltest1; use mysqltest1; --echo CREATE TABLE t1(a INT); CREATE TABLE t2(a INT); --echo --disable_ps_protocol FLUSH TABLES; --echo SELECT 1 FROM t1; SELECT 1 FROM t2; --echo --sorted_result SHOW OPEN TABLES FROM mysqltest1; --echo SHOW OPEN TABLES FROM mysqltest1 LIKE 'z%'; --echo SHOW OPEN TABLES FROM mysqltest1 LIKE 't1%'; --echo SHOW OPEN TABLES FROM mysqltest1 LIKE '%1%'; --echo FLUSH TABLES; --enable_ps_protocol --echo DROP DATABASE mysqltest1; use test; --echo # # Bug#12591 SHOW TABLES FROM dbname produces wrong error message # --error ER_BAD_DB_ERROR SHOW TABLES FROM non_existing_database; --echo End of 4.1 tests # # Check that SHOW TABLES and SHOW COLUMNS give a error if there is no # referenced database and table respectively. # --error ER_BAD_DB_ERROR SHOW TABLES FROM no_such_database; --error ER_NO_SUCH_TABLE SHOW COLUMNS FROM no_such_table; # # Bug#19764 SHOW commands end up in the slow log as table scans # SET GLOBAL EVENT_SCHEDULER = OFF; --source include/no_running_event_scheduler.inc CREATE TABLE t1 (f1 INT, f2 INT); INSERT INTO t1 VALUES(10, 20); flush status; show status like 'slow_queries'; show tables; show status like 'slow_queries'; # Table scan query, to ensure that slow_queries does still get incremented # (mysqld is started with --log-queries-not-using-indexes) select 1 from t1 limit 1; show status like 'slow_queries'; DROP TABLE t1; create table t1 (a int); create trigger tr1 before insert on t1 for each row begin end; create view v1 as select a from t1; create procedure p1() begin end; create function f1() returns int return 0; create event e1 on schedule every 1 year starts now() ends date_add(now(), interval 5 hour) do begin end; --disable_result_log flush status; show databases; show tables; show events; show table status; --sorted_result show open tables; show plugins; show columns in t1; show slave hosts; show keys in t1; show storage engines; show privileges; show count(*) warnings; show count(*) errors; show warnings; show status; show processlist; show variables; show charset; show collation; show grants; show create database test; show create table t1; show create view v1; show master status; show slave status; show create procedure p1; show create function f1; show create trigger tr1; show procedure status; show create event e1; --enable_result_log show status like 'slow_queries'; drop view v1; drop table t1; drop procedure p1; drop function f1; drop event e1; SET GLOBAL EVENT_SCHEDULER = ON; --source include/running_event_scheduler.inc # # Bug#10491 Server returns data as charset binary SHOW CREATE TABLE or SELECT # FROM I_S. # # # Part 1: check that meta-data specifies not-binary character set. # # Ensure that all needed objects are dropped. --disable_warnings DROP DATABASE IF EXISTS mysqltest1; DROP TABLE IF EXISTS t1; DROP VIEW IF EXISTS v1; DROP PROCEDURE IF EXISTS p1; DROP FUNCTION IF EXISTS f1; --enable_warnings # Create objects. CREATE DATABASE mysqltest1; CREATE TABLE t1(c INT NOT NULL PRIMARY KEY); CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET @a = 1; CREATE VIEW v1 AS SELECT 1; CREATE PROCEDURE p1() SELECT 1; CREATE FUNCTION f1() RETURNS INT RETURN 1; # Test. set names utf8; --echo -- Here we enable metadata just to check that the collation of the --echo -- resultset is non-binary for string type. This should be changed --echo -- after Bug#29394 is implemented. --enable_metadata --echo ---------------------------------------------------------------- SHOW CHARACTER SET LIKE 'utf8'; --echo ---------------------------------------------------------------- SHOW COLLATION LIKE 'latin1_bin'; --echo ---------------------------------------------------------------- SHOW CREATE DATABASE mysqltest1; --echo ---------------------------------------------------------------- --replace_result 4225 # 4097 # SHOW DATABASES LIKE 'mysqltest1'; --echo ---------------------------------------------------------------- SHOW CREATE TABLE t1; --echo ---------------------------------------------------------------- --replace_result 4225 # 4097 # SHOW INDEX FROM t1; --echo ---------------------------------------------------------------- --replace_result 20613 # 20609 # 20485 # 20481 # SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT, TABLE_COLLATION, CREATE_OPTIONS, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't1'; --echo ---------------------------------------------------------------- --replace_result 20613 # 20609 # 20485 # 20481 # SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, PRIVILEGES, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 't1'; --echo ---------------------------------------------------------------- --replace_result 4225 # 4097 # SHOW TABLES LIKE 't1'; --echo ---------------------------------------------------------------- SHOW COLUMNS FROM t1; --echo ---------------------------------------------------------------- --replace_column 6 # SHOW TRIGGERS LIKE 't1'; --echo ---------------------------------------------------------------- SELECT TRIGGER_CATALOG, TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_CATALOG, EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, ACTION_CONDITION, ACTION_STATEMENT, ACTION_ORIENTATION, ACTION_TIMING, ACTION_REFERENCE_OLD_TABLE, ACTION_REFERENCE_NEW_TABLE, ACTION_REFERENCE_OLD_ROW, ACTION_REFERENCE_NEW_ROW, SQL_MODE, DEFINER FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name = 't1_bi'; --echo ---------------------------------------------------------------- SHOW CREATE VIEW v1; --echo ---------------------------------------------------------------- --replace_result 20613 # 20485 # 20609 # 20481 # SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE table_name = 'v1'; --echo ---------------------------------------------------------------- SHOW CREATE PROCEDURE p1; --echo ---------------------------------------------------------------- SELECT SPECIFIC_NAME, ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER, ROUTINE_BODY, ROUTINE_DEFINITION, EXTERNAL_NAME, EXTERNAL_LANGUAGE, PARAMETER_STYLE, IS_DETERMINISTIC, SQL_DATA_ACCESS, SQL_PATH, SECURITY_TYPE, SQL_MODE, ROUTINE_COMMENT, DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'p1'; --echo ---------------------------------------------------------------- SHOW CREATE FUNCTION f1; --echo ---------------------------------------------------------------- SELECT SPECIFIC_NAME, ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER, ROUTINE_BODY, ROUTINE_DEFINITION, EXTERNAL_NAME, EXTERNAL_LANGUAGE, PARAMETER_STYLE, IS_DETERMINISTIC, SQL_DATA_ACCESS, SQL_PATH, SECURITY_TYPE, SQL_MODE, ROUTINE_COMMENT, DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'f1'; --echo ---------------------------------------------------------------- --disable_metadata # Cleanup. DROP DATABASE mysqltest1; DROP TABLE t1; DROP VIEW v1; DROP PROCEDURE p1; DROP FUNCTION f1; # # Part 2: check that table with non-latin1 characters are dumped/restored # correctly. # # Ensure that all needed objects are dropped. set names koi8r; --disable_warnings DROP DATABASE IF EXISTS mysqltest1; --enable_warnings # Create objects. CREATE DATABASE mysqltest1; use mysqltest1; CREATE TABLE t1(ËÏÌÏÎËÁ1 INT); # Check: # - Dump mysqltest1; --let $outfile1=$MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql --source include/count_sessions.inc --echo --echo ---> Dumping mysqltest1 to outfile1 --exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$MYSQL_SHAREDIR/charsets --databases mysqltest1 > $outfile1 # Take care that the additional session caused by MYSQL_DUMP has disappeared. --source include/wait_until_count_sessions.inc # - Clean mysqltest1; --echo --echo DROP DATABASE mysqltest1; # - Restore mysqltest1; --echo --echo --source include/count_sessions.inc --echo ---> Restoring mysqltest1... --exec $MYSQL test < $outfile1 --remove_file $outfile1 # Take care that the additional session caused by MYSQL has disappeared. --source include/wait_until_count_sessions.inc # - Check definition of the table. SHOW CREATE TABLE mysqltest1.t1; # Cleanup. DROP DATABASE mysqltest1; use test; # # Bug#9785 SELECT privilege for the whole database is needed to do # SHOW CREATE DATABASE # create database mysqltest; show create database mysqltest; create table mysqltest.t1(a int); insert into mysqltest.t1 values(1); create user mysqltest_4@localhost; grant select on `mysqltest`.`t1` to mysqltest_4@localhost; connect (con4,localhost,mysqltest_4,,mysqltest); connection con4; show create database mysqltest; disconnect con4; --source include/wait_until_disconnected.inc connection default; delete from mysql.user where user='mysqltest_4'; delete from mysql.db where user='mysqltest_4'; delete from mysql.tables_priv where user='mysqltest_4'; flush privileges; drop database mysqltest; # # Ensure that show plugin code is tested # --disable_result_log show plugins; --enable_result_log # # Bug#19874 SHOW COLUMNS and SHOW KEYS handle identifiers containing # \ incorrectly # create database `mysqlttest\1`; create table `mysqlttest\1`.`a\b` (a int); show tables from `mysqlttest\1`; show fields from `mysqlttest\1`.`a\b`; show columns from `a\b` from `mysqlttest\1`; show keys from `mysqlttest\1`.`a\b`; drop table `mysqlttest\1`.`a\b`; drop database `mysqlttest\1`; # # Bug#24392 SHOW ENGINE MUTEX STATUS is a synonym for SHOW INNODB STATUS # --error ER_UNKNOWN_STORAGE_ENGINE show engine foobar status; --error ER_UNKNOWN_STORAGE_ENGINE show engine foobar logs; --error ER_UNKNOWN_STORAGE_ENGINE show engine foobar mutex; --error ER_UNKNOWN_STORAGE_ENGINE show engine mutex status; show engine csv status; show engine csv logs; show engine csv mutex; # # Bug#25081 SHOW FULL TABLES on table with latin chars in name fails # set names utf8; --disable_warnings drop table if exists `été`; --enable_warnings create table `été` (field1 int); show full tables; drop table `été`; set names latin1; --echo # --echo # Bug#4374 SHOW TABLE STATUS FROM ignores collation_connection --echo # Character set: Latin-1 (ISO-8859-1) --echo # SET NAMES latin1; CREATE DATABASE `ä`; CREATE TABLE `ä`.`ä` (a int) ENGINE=Memory; ANALYZE TABLE `ä`.`ä`; --replace_column 6 # 7 # 8 # 9 # 12 # SHOW TABLE STATUS FROM `ä` LIKE 'ä'; DROP DATABASE `ä`; # # Bug#26402 Server crashes with old-style named table # --error ER_NO_SUCH_TABLE,ER_FILE_NOT_FOUND show columns from `#mysql50#????????`; call mtr.add_suppression("Can.t find file: '.\\\\test\\\\\\?{8}.frm'"); # # SHOW CREATE TRIGGER test. # # Prepare. --disable_warnings DROP TABLE IF EXISTS t1; DROP PROCEDURE IF EXISTS p1; --enable_warnings CREATE TABLE t1(c1 INT); CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET @a = 1; # Test. --replace_column 7 # SHOW CREATE TRIGGER t1_bi; CREATE PROCEDURE p1() SHOW CREATE TRIGGER t1_bi; --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); --replace_column 7 # CALL p1(); PREPARE stmt1 FROM 'SHOW CREATE TRIGGER t1_bi'; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # EXECUTE stmt1; --replace_column 7 # # Cleanup. DROP TABLE t1; DROP PROCEDURE p1; DEALLOCATE PREPARE stmt1; # # 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 # would ensure that the result is never converted to character_set_client # (which was essential to mysqldump). Now we return to the client the actual # character set of the object -- which is character_set_client of the # connection that issues the CREATE statement, and this triggers an automatic # conversion to character_set_results of the connection that issues SHOW CREATE # statement. # # This test demonstrates that this conversion indeed is taking place. # # Prepare: create objects in a one character set. set names koi8r; --disable_warnings DROP VIEW IF EXISTS v1; DROP PROCEDURE IF EXISTS p1; DROP FUNCTION IF EXISTS f1; DROP TABLE IF EXISTS t1; DROP EVENT IF EXISTS ev1; --enable_warnings CREATE VIEW v1 AS SELECT 'ÔÅÓÔ' AS test; CREATE PROCEDURE p1() SELECT 'ÔÅÓÔ' AS test; CREATE FUNCTION f1() RETURNS CHAR(10) RETURN 'ÔÅÓÔ'; CREATE TABLE t1(c1 CHAR(10)); CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET NEW.c1 = 'ÔÅÓÔ'; CREATE EVENT ev1 ON SCHEDULE AT '2030-01-01 00:00:00' DO SELECT 'ÔÅÓÔ' AS test; # Test: switch the character set and show that SHOW CREATE output is # automatically converted to the new character_set_client. set names utf8; SHOW CREATE VIEW v1; SHOW CREATE PROCEDURE p1; SHOW CREATE FUNCTION f1; --replace_column 7 # SHOW CREATE TRIGGER t1_bi; SHOW CREATE EVENT ev1; # Cleanup. DROP VIEW v1; DROP PROCEDURE p1; DROP FUNCTION f1; DROP TABLE t1; DROP EVENT ev1; # # Bug#30036 SHOW TABLE TYPES causes the debug client to crash # --disable_result_log SHOW STORAGE ENGINES; --enable_result_log # # Bug#32710 SHOW INNODB STATUS requires SUPER # CREATE USER test_u@localhost; GRANT PROCESS ON *.* TO test_u@localhost; connect (conn1, localhost, test_u,,); --disable_result_log SHOW ENGINE MYISAM MUTEX; SHOW ENGINE MYISAM STATUS; --enable_result_log disconnect conn1; --source include/wait_until_disconnected.inc connection default; DROP USER test_u@localhost; --echo # --echo # Bug #48985: show create table crashes if previous access to the table --echo # was killed --echo # connect(con1,localhost,root,,); CONNECTION con1; LET $ID= `SELECT connection_id()`; CONNECTION default; --disable_query_log eval KILL QUERY $ID; --enable_query_log CONNECTION con1; let $wait_timeout= 5; let $wait_condition= SELECT COUNT(*)=0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO= "KILL QUERY $ID"; --source include/wait_condition.inc --error ER_NO_SUCH_TABLE SHOW CREATE TABLE non_existent; DISCONNECT con1; --source include/wait_until_disconnected.inc CONNECTION default; --echo End of 5.1 tests --echo # --echo # Bug#52593 SHOW CREATE TABLE is blocked if table is locked --echo # for write by another connection --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings connect(con1, localhost,root); connection default; CREATE TABLE t1 (i INT PRIMARY KEY); LOCK TABLE t1 WRITE; --echo # Switching to connection 'con1'. connection con1; --echo # This statement used to be blocked. SHOW CREATE TABLE t1; disconnect con1; --source include/wait_until_disconnected.inc --echo # Switching to connection 'default'. connection default; UNLOCK TABLES; DROP TABLE t1; --echo # --echo # Bug#54905 Connection with WRITE lock cannot ALTER table due to --echo # concurrent SHOW CREATE --echo # --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1(a INT); --echo # Connection con1 connect (con1,localhost,root); LOCK TABLE t1 WRITE; --echo # Connection default connection default; START TRANSACTION; SHOW CREATE TABLE t1; --echo # Connection con1 connection con1; # Used to block ALTER TABLE t1 CHARACTER SET = utf8; UNLOCK TABLES; --echo # Connection default connection default; COMMIT; disconnect con1; DROP TABLE t1; --echo # --echo # Bug#55498 SHOW CREATE TRIGGER takes wrong type of metadata lock. --echo # --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1 (a INT); CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a = 1; --echo # Test 1: SHOW CREATE TRIGGER with WRITE locked table. --echo # Connection con1 connect (con1, localhost, root); LOCK TABLE t1 WRITE; --echo # Connection default connection default; # Should not block. --replace_column 7 # SHOW CREATE TRIGGER t1_bi; --echo # Connection con1 connection con1; UNLOCK TABLES; --echo # Test 2: ALTER TABLE with SHOW CREATE TRIGGER in transaction --echo # Connection default connection default; START TRANSACTION; --replace_column 7 # SHOW CREATE TRIGGER t1_bi; --echo # Connection con1 connection con1; # Should not block. ALTER TABLE t1 CHARACTER SET = utf8; disconnect con1; --source include/wait_until_disconnected.inc --echo # Connection default connection default; COMMIT; DROP TRIGGER t1_bi; DROP TABLE t1; --echo # --echo # Bug#57306 SHOW PROCESSLIST does not display string literals well. --echo # SET NAMES latin1; SELECT GET_LOCK('t', 1000); --connect (con1,localhost,root,,) --connection con1 SET NAMES latin1; --send SELECT GET_LOCK('t',1000) AS 'óóóó'; --connection default # Make sure con1 has switched from "SET NAMES" to "SELECT GET_LOCK" let $wait_timeout= 10; let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE '%GET_LOCK%' AND ID != CONNECTION_ID(); --source include/wait_condition.inc --replace_column 1 ### 3 ### 6 ### 7 ### --sorted_result SHOW PROCESSLIST; SET NAMES utf8; --replace_column 1 ### 3 ### 6 ### 7 ### --sorted_result SHOW PROCESSLIST; SELECT RELEASE_LOCK('t'); --connection con1 --reap --disconnect con1 --source include/wait_until_disconnected.inc --connection default SET NAMES latin1; --echo # --echo # Bug#58996 SHOW CREATE TRIGGER fails when subject table is shadowed by --echo # a temporary table. --echo # --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1 (a INT); CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW BEGIN END; --replace_column 7 # SHOW CREATE TRIGGER t1_bi; CREATE TEMPORARY TABLE t1 (b INT); # Should still work --replace_column 7 # SHOW CREATE TRIGGER t1_bi; DROP TEMPORARY TABLE t1; DROP TABLE t1; --echo # --echo # WL#6454: Deprecate SHOW AUTHORS and SHOW CONTRIBUTORS --echo # --echo # These statements were deprecated in 5.5 and removed in 5.6. --echo # They should therefore give ER_PARSE_ERROR here. --error ER_PARSE_ERROR SHOW AUTHORS; --error ER_PARSE_ERROR SHOW CONTRIBUTORS; --echo # --echo # Bug#20709462: GENERATED COLUMNS NOT PRINTED CORRECTLY IN --echo # SHOW CREATE TABLE --echo # CREATE TABLE t1 (i CHAR(3), n CHAR(20) CHARACTER SET utf8 GENERATED ALWAYS AS (md5(i))); --echo # Use SHOW CREATE TABLE output below unmodified to re-create table SHOW CREATE TABLE t1; DROP TABLE t1; CREATE TABLE `t1` ( `i` char(3) DEFAULT NULL, `n` char(20) CHARACTER SET utf8 GENERATED ALWAYS AS (md5(i)) VIRTUAL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; DROP TABLE t1; --echo # --echo # Bug#24800048 - SHOW TABLES FROM DATABASE HANGS ON WINDOWS PLATFORM --echo # CREATE DATABASE unknown; --echo # On case sensitive file system following statement fails as DB name --echo # is in different case. Following statement works fine on case insensitive --echo # file systems. --error 0,ER_BAD_DB_ERROR SHOW TABLES FROM UNKNOWN; --echo # On case sensitive file system following statement fails as DB name --echo # is in different case. Following statement works fine on case insensitive --echo # file systems. --echo # Without fix following SHOW TABLES statements hangs in Windows (with --echo # lower_case_table_names=1). --error 0,ER_BAD_DB_ERROR SHOW TABLES FROM UNKNOWN; DROP DATABASE unknown; --echo # --echo # WL#9570 - Extend SHOW statements to list hidden columns and index --echo # information. --echo # --echo # Test case to verify hidden columns, index and index elements --echo # display in INFORMATION_SCHEMA queries and SHOW statements. --echo # EXPECTATION: INFORMATION_SCHEMA.COLUMNS/STATISTICS*/KEY_COLUMN_USAGE --echo # SHOW [FULL] COLUMNS and SHOW INDEX should not display --echo # hidden columns, indexes and index elements. --echo # SHOW EXTENED [FULL] COLUMNS and SHOW EXTENDED INDEX --echo # should display hidden columns, index and index elements --echo # too. --echo # --echo # CREATE TABLE t1 (c1 int(11) NOT NULL, c2 int(11) DEFAULT NULL, c3 text, PRIMARY KEY (c1)); CREATE INDEX c2d ON t1(c2); --echo # With fix, following statements should not show the hidden columns. --replace_column 3 # 4 # 5 # 6 # SHOW COLUMNS FROM t1; --replace_column 3 # 4 # 5 # 6 # 7 # 8 # 9 # SHOW FULL COLUMNS FROM t1; SELECT table_name, column_name, column_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='t1'; --echo # EXTENDED keyword is introduced to list the hidden columns. --replace_column 3 # 4 # 5 # 6 # SHOW EXTENDED COLUMNS FROM t1; --replace_column 3 # 4 # 5 # 6 # 7 # 8 # 9 # SHOW EXTENDED FULL COLUMNS FROM t1; --echo # With fix, following statements should not show the hidden index and --echo # index columns. SHOW INDEX FROM t1; SELECT table_schema, table_name, index_name, column_name FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='t1'; SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE table_name='t1'; SELECT constraint_schema, constraint_name, table_name, column_name FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_name='t1'; --echo # EXTENDED keyword is introduced to list the hidden index and index --echo # columns. SHOW EXTENDED INDEX FROM t1; DROP TABLE t1; --echo # --echo # Bug#27387773 COLUMN OPTION FOR DESCRIBE IS IGNORED --echo # CREATE TEMPORARY TABLE t1 (f1 INT, f2 INT); --echo # These DESCRIBEs would show just single column after the fix. DESCRIBE t1 f1; DESCRIBE t1 f2; SHOW COLUMNS FROM t1 LIKE 'f1'; SHOW COLUMNS FROM t1 LIKE 'f2'; DROP TABLE t1; --echo # --echo # Bug#11754608 MYSQL DOESN'T SHOW WHAT COLLATION WAS USED IF THAT --echo # COLLATION IS THE DEFAU --echo # CREATE TABLE t1 (f1 CHAR(1), f2 CHAR(1) COLLATE UTF8_BIN, f3 CHAR(1) CHARSET UTF8MB3, f4 CHAR(1) CHARSET UTF8MB4); --echo # The SHOW command should show the utf8mb4 charset for f4 after ALTER. SHOW CREATE TABLE t1; ALTER TABLE t1 ADD COLUMN f5 CHAR(1); ALTER TABLE t1 ADD COLUMN f6 CHAR(1) CHARSET UTF8MB4; --echo # The SHOW command should show the utf8mb4 charset for f6 after ALTER. SHOW CREATE TABLE t1; --echo # Check if we retain the property after CREATE SELECT. CREATE TABLE t2 AS SELECT * FROM t1; SHOW CREATE TABLE t2; --echo # Check if we retain the property after CREATE LIKE. CREATE TABLE t3 LIKE t1; SHOW CREATE TABLE t3; DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; # Wait till all disconnects are completed --source include/wait_until_count_sessions.inc