diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
commit | 3f619478f796eddbba6e39502fe941b285dd97b1 (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/main/show_check.test | |
parent | Initial commit. (diff) | |
download | mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.tar.xz mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/main/show_check.test')
-rw-r--r-- | mysql-test/main/show_check.test | 1419 |
1 files changed, 1419 insertions, 0 deletions
diff --git a/mysql-test/main/show_check.test b/mysql-test/main/show_check.test new file mode 100644 index 00000000..6ae839d8 --- /dev/null +++ b/mysql-test/main/show_check.test @@ -0,0 +1,1419 @@ +################################################################################ +# +# 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. +# +################################################################################ + + +# Uses GRANT commands that usually disabled in embedded server +-- source include/not_embedded.inc + +# check that CSV engine was compiled in, as the result of the test +# depends on the presence of the log tables (which are CSV-based). +--source include/have_csv.inc + +# Test results assumes we are using latin1 +--source include/default_charset.inc +SET @@global.character_set_server= @@session.character_set_server; +set @@sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; + +# +# 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 + +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; +--disable_ps_protocol +show index from t1; +--enable_ps_protocol +--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%"; +--disable_ps_protocol +show table status from test like "this_doesn't_exists%"; +--enable_ps_protocol +show databases; +show databases like "test%"; +--disable_metadata + +# +# Check of show index +# +create table t1 (f1 int not null, f2 int not null, f3 int not null, f4 int not null, primary key(f1,f2,f3,f4)); +insert into t1 values (1,1,1,0),(1,1,2,0),(1,1,3,0),(1,2,1,0),(1,2,2,0),(1,2,3,0),(1,3,1,0),(1,3,2,0),(1,3,3,0),(1,1,1,1),(1,1,2,1),(1,1,3,1),(1,2,1,1),(1,2,2,1),(1,2,3,1),(1,3,1,1),(1,3,2,1),(1,3,3,1); + +--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 +analyze table t1; +--disable_metadata +show index from t1; + +--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 + +repair table t1; +--disable_metadata +show index from t1; +drop table t1; + +# +# 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; +--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 int not null, b VARCHAR(10), INDEX (b) ) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed; +show create table t1; +alter table t1 MAX_ROWS=200 ROW_FORMAT=dynamic PACK_KEYS=0; +show create table t1; +ALTER TABLE t1 AVG_ROW_LENGTH=0 CHECKSUM=0 COMMENT="" MIN_ROWS=0 MAX_ROWS=0 PACK_KEYS=DEFAULT DELAY_KEY_WRITE=0 ROW_FORMAT=default; +show create table t1; +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; + +# +# Do a create table that tries to cover all types and options +# +create table t1 ( +type_bool bool not null default 0, +type_tiny tinyint not null auto_increment primary key, +type_short smallint(3), +type_mediumint mediumint, +type_bigint bigint, +type_decimal decimal(5,2), +type_numeric numeric(5,2), +empty_char char(0), +type_char char(2), +type_varchar varchar(10), +type_timestamp timestamp not null default current_timestamp on update current_timestamp, +type_date date not null default '0000-00-00', +type_time time not null default '00:00:00', +type_datetime datetime not null default '0000-00-00 00:00:00', +type_year year, +type_enum enum ('red', 'green', 'blue'), +type_set enum ('red', 'green', 'blue'), +type_tinyblob tinyblob, +type_blob blob, +type_medium_blob mediumblob, +type_long_blob longblob, +index(type_short) +) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed CHARSET=latin1; + +# Not tested above: UNION INSERT_METHOD DATA DIRECTORY INDEX DIRECTORY +show create table t1; +insert into t1 (type_timestamp) values ("2003-02-07 10:00:01"); +select * 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. +# + +set @@max_heap_table_size=1048576; + +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); +--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); +--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); +--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; +--replace_column 6 # 7 # 8 # 9 # 10 # 12 # +show table status; +truncate table t1; +truncate table t2; +truncate table 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); +--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; +--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; +grant select on `mysqltest`.* to mysqltest_1@localhost; +create user mysqltest_2@localhost; +grant usage on `mysqltest`.* to mysqltest_2@localhost; +create user mysqltest_3@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,,"*NO-ONE*"); +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,,"*NO-ONE*"); +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 that USING <keytype> is always shown in SHOW CREATE TABLE when it was +# 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; +CREATE TABLE t1 (i int, KEY USING HASH (i)) ENGINE=MEMORY; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 (i int, KEY USING BTREE (i)) ENGINE=MEMORY; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 (i int, KEY (i)) ENGINE=MyISAM; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 (i int, KEY USING BTREE (i)) ENGINE=MyISAM; +SHOW CREATE TABLE t1; +DROP TABLE t1; +# Test that when an index is created with the default key algorithm and +# altered to another storage engine, it gets the default key algorithm +# for that storage engine, but when it is specified, the specified type is +# preserved. +CREATE TABLE t1 (i int, KEY (i)) ENGINE=MyISAM; +SHOW CREATE TABLE t1; +ALTER TABLE t1 ENGINE=MEMORY; +SHOW CREATE TABLE t1; +DROP TABLE t1; +CREATE TABLE t1 (i int, KEY USING BTREE (i)) ENGINE=MyISAM; +SHOW CREATE TABLE t1; +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 +CREATE TABLE t1( + field1 text NOT NULL, + PRIMARY KEY(field1(1000)) +); +--enable_metadata +--disable_ps_protocol +show index from t1; +--enable_ps_protocol +--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; + +# Test for Bug#93 4.1 protocol crash on corrupted frm and SHOW TABLE STATUS + +flush tables; + +# Create a junk frm file on disk +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 # 12 # +SHOW TABLE STATUS like 't1'; +--error ER_NOT_FORM_FILE +show create table t1; +--disable_warnings +drop table if exists t1; +--enable_warnings +--error 0,1 +--remove_file $MYSQLD_DATADIR/test/t1.frm + +# +# 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 + +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 + +# +# Bug#17203 "sql_no_cache sql_cache" in views created from prepared +# statement +# +# The problem was that initial user setting was forgotten, and current +# runtime-determined values of the flags were shown instead. +# +--disable_warnings +DROP VIEW IF EXISTS v1; +DROP PROCEDURE IF EXISTS p1; +--enable_warnings + +# Check that SHOW CREATE VIEW shows SQL_CACHE flag exaclty as +# specified by the user. +CREATE VIEW v1 AS SELECT 1; +SHOW CREATE VIEW v1; +DROP VIEW v1; + +CREATE VIEW v1 AS SELECT SQL_CACHE 1; +SHOW CREATE VIEW v1; +DROP VIEW v1; + +CREATE VIEW v1 AS SELECT SQL_NO_CACHE 1; +SHOW CREATE VIEW v1; +DROP VIEW v1; + +# Usage of NOW() disables caching, but we still have show what the +# user have specified. +CREATE VIEW v1 AS SELECT NOW(); +SHOW CREATE VIEW v1; +DROP VIEW v1; + +CREATE VIEW v1 AS SELECT SQL_CACHE NOW(); +SHOW CREATE VIEW v1; +DROP VIEW v1; + +CREATE VIEW v1 AS SELECT SQL_NO_CACHE NOW(); +SHOW CREATE VIEW v1; +DROP VIEW v1; + +--error ER_WRONG_USAGE +CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW(); + +--error ER_WRONG_USAGE +CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW(); + +--error ER_DUP_ARGUMENT +CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW(); + +# Check CREATE VIEW in a prepared statement in a procedure. +delimiter |; +CREATE PROCEDURE p1() +BEGIN + SET @s= 'CREATE VIEW v1 AS SELECT SQL_CACHE 1'; + PREPARE stmt FROM @s; + EXECUTE stmt; + DROP PREPARE stmt; +END | +delimiter ;| +CALL p1(); +SHOW CREATE VIEW v1; + +DROP PROCEDURE p1; +DROP VIEW v1; + + +# +# 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 +# +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) +--disable_ps2_protocol +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; +--enable_ps2_protocol + +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 authors; +show contributors; +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; + +# +# 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 ---------------------------------------------------------------- + +--disable_ps_protocol +SHOW CHARACTER SET LIKE 'utf8mb3'; +--enable_ps_protocol + +--echo ---------------------------------------------------------------- + +--disable_ps_protocol +SHOW COLLATION LIKE 'latin1_bin'; +--enable_ps_protocol + +--echo ---------------------------------------------------------------- + +SHOW CREATE DATABASE mysqltest1; + +--echo ---------------------------------------------------------------- + +SHOW DATABASES LIKE 'mysqltest1'; + +--echo ---------------------------------------------------------------- + +SHOW CREATE TABLE t1; + +--echo ---------------------------------------------------------------- + +--disable_ps_protocol +SHOW INDEX FROM t1; +--enable_ps_protocol + +--echo ---------------------------------------------------------------- + +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 ---------------------------------------------------------------- + +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 ---------------------------------------------------------------- + +SHOW TABLES LIKE 't1'; + +--echo ---------------------------------------------------------------- + +SHOW COLUMNS FROM t1; + +--echo ---------------------------------------------------------------- + +--disable_ps_protocol +--replace_column 6 # +SHOW TRIGGERS LIKE 't1'; +--enable_ps_protocol + +--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'; + +# Metadata is different for the field "CREATED" with and without --ps +# So test it separately. + +--disable_ps_protocol +--replace_column 1 # +SELECT CREATED FROM INFORMATION_SCHEMA.TRIGGERS WHERE trigger_name='t1_bi'; +--enable_ps_protocol + +--echo ---------------------------------------------------------------- + +SHOW CREATE VIEW v1; + +--echo ---------------------------------------------------------------- + +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. +# +# See MDEV-14651 for details +# 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#28808 log_queries_not_using_indexes variable dynamic change is ignored +# +--disable_ps2_protocol +flush status; +show variables like "log_queries_not_using_indexes"; +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; +set session log_queries_not_using_indexes=OFF; +show variables like "log_queries_not_using_indexes"; +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; +set session log_queries_not_using_indexes=ON; +show variables like "log_queries_not_using_indexes"; +select 1 from information_schema.tables limit 1; +show status like 'slow_queries'; +--enable_ps2_protocol + +# +# Bug#30088 Can't disable myisam-recover by a value of "" +# +show variables like 'myisam_recover_options'; + +# +# Bug#37301 Length and Max_length differ with no obvious reason +# +CREATE TABLE t1 ( + Codigo int(10) unsigned NOT NULL auto_increment, + Nombre varchar(255) default NULL, + Telefono varchar(255) default NULL, + Observaciones longtext, + Direccion varchar(255) default NULL, + Dni varchar(255) default NULL, + CP int(11) default NULL, + Provincia varchar(255) default NULL, + Poblacion varchar(255) default NULL, + PRIMARY KEY (Codigo) +) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; +--enable_metadata +show create table t1; +--disable_metadata +drop table t1; + +--echo End of 5.0 tests + +--disable_result_log +SHOW AUTHORS; +--enable_result_log + +# +# 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; +--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; + +# 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 '1970-01-02 00:00:00' ON COMPLETION PRESERVE DISABLE 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,,"*NO-ONE*"); + +--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 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; +connection con1; +--echo # This statement used to be blocked. +SHOW CREATE TABLE t1; + +disconnect con1; +--source include/wait_until_disconnected.inc + +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); + +connect (con1,localhost,root); +LOCK TABLE t1 WRITE; + +connection default; +START TRANSACTION; +SHOW CREATE TABLE t1; + +connection con1; +# Used to block +ALTER TABLE t1 CHARACTER SET = utf8; +UNLOCK TABLES; + +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. + +connect (con1, localhost, root); +LOCK TABLE t1 WRITE; + +connection default; +# Should not block. +--replace_column 7 # +SHOW CREATE TRIGGER t1_bi; + +connection con1; +UNLOCK TABLES; + +--echo # Test 2: ALTER TABLE with SHOW CREATE TRIGGER in transaction + +connection default; +START TRANSACTION; +--replace_column 7 # +SHOW CREATE TRIGGER t1_bi; + +connection con1; +# Should not block. +ALTER TABLE t1 CHARACTER SET = utf8; + +disconnect con1; +--source include/wait_until_disconnected.inc + +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 ### +--replace_result "Execute" "Query" +SHOW PROCESSLIST; +SET NAMES utf8; +--replace_column 1 ### 3 ### 6 ### 7 ### +--replace_result "Execute" "Query" +SHOW PROCESSLIST; +SELECT RELEASE_LOCK('t'); +--connection con1 +--reap +--disconnect con1 +--source include/wait_until_disconnected.inc +--connection default +SET NAMES latin1; + + +--echo # +--echo # Test SHOW AUTHORS and SHOW CONTRIBUTORS +--echo # + +--disable_result_log +SHOW AUTHORS; +--enable_result_log +SHOW WARNINGS; + +--disable_result_log +SHOW CONTRIBUTORS; +--enable_result_log +SHOW WARNINGS; + +SET @@global.character_set_server=@save_character_set_server; |