2006-10-23 12:02:51 +02:00
# Uses GRANT commands that usually disabled in embedded server
2005-03-30 03:17:46 +02:00
-- source include/not_embedded.inc
2000-12-28 02:56:38 +01:00
#
# Test of some show commands
#
2003-01-06 00:48:59 +01:00
--disable_warnings
2001-10-08 03:58:07 +02:00
drop table if exists t1,t2;
2005-01-03 20:04:33 +01:00
drop table if exists t1aa,t2aa;
2004-08-31 13:35:04 +02:00
drop database if exists mysqltest;
2005-12-07 15:01:17 +01:00
drop database if exists mysqltest1;
2004-10-07 09:50:13 +02:00
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;
2003-01-06 00:48:59 +01:00
--enable_warnings
2000-12-28 02:56:38 +01:00
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);
2007-06-28 11:24:52 +02:00
--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
2002-03-13 18:20:17 +01:00
check table t1 fast;
check table t1 fast;
check table t1 changed;
2000-12-28 02:56:38 +01:00
insert into t1 values (5,5,5);
2002-03-13 18:20:17 +01:00
check table t1 changed;
check table t1 medium;
check table t1 extended;
2001-03-15 12:36:14 +01:00
show index from t1;
2007-06-28 11:24:52 +02:00
--disable_metadata
2004-11-02 19:13:27 +01:00
--error 1062
insert into t1 values (5,5,5);
2007-06-28 11:24:52 +02:00
--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
2000-12-28 02:56:38 +01:00
optimize table t1;
2007-06-28 11:24:52 +02:00
--disable_metadata
2000-12-28 02:56:38 +01:00
optimize table t1;
drop table t1;
2001-01-03 01:15:48 +01:00
#show variables;
2007-06-28 11:24:52 +02:00
--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
2001-01-03 01:15:48 +01:00
show variables like "wait_timeout%";
2002-04-18 17:24:14 +02:00
show variables like "WAIT_timeout%";
2001-01-03 01:15:48 +01:00
show variables like "this_doesn't_exists%";
show table status from test like "this_doesn't_exists%";
show databases;
show databases like "test%";
2007-06-28 11:24:52 +02:00
--disable_metadata
2001-03-15 12:36:14 +01:00
#
# 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);
2007-06-28 11:24:52 +02:00
--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
2001-03-15 12:36:14 +01:00
analyze table t1;
2007-06-28 11:24:52 +02:00
--disable_metadata
2001-03-15 12:36:14 +01:00
show index from t1;
2007-06-28 11:24:52 +02:00
--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
2001-03-15 12:36:14 +01:00
repair table t1;
2007-06-28 11:24:52 +02:00
--disable_metadata
2001-03-15 12:36:14 +01:00
show index from t1;
drop table t1;
2001-04-25 21:44:27 +02:00
#
# 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 '',
2002-06-04 07:23:57 +02:00
name char(20) default 'O''Brien' comment 'O''Brien as default',
2004-01-14 12:29:30 +01:00
c int not null comment 'int column',
2004-03-17 23:09:13 +01:00
`c-b` int comment 'name with a minus',
2004-05-05 20:46:16 +02:00
`space 2` int comment 'name with a space'
2001-04-25 21:44:27 +02:00
) comment = 'it\'s a table' ;
2004-01-14 12:29:30 +01:00
show create table t1;
set sql_quote_show_create=0;
show create table t1;
set sql_quote_show_create=1;
2002-06-04 07:23:57 +02:00
show full columns from t1;
2001-04-25 21:44:27 +02:00
drop table t1;
2001-06-21 09:50:14 +02:00
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;
2001-07-08 03:15:41 +02:00
flush tables;
show open tables;
create table t1(n int);
insert into t1 values (1);
show open tables;
drop table t1;
2001-09-30 04:47:35 +02:00
2003-12-10 05:31:42 +01:00
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;
2001-09-30 04:47:35 +02:00
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;
2002-05-16 17:20:49 +02:00
2002-04-26 12:56:32 +02:00
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;
2002-06-04 07:23:57 +02:00
show full columns from t1;
2002-04-26 12:56:32 +02:00
drop table t1;
2003-02-07 11:54:10 +01:00
#
# Do a create table that tries to cover all types and options
#
create table t1 (
2005-04-06 05:55:06 +02:00
type_bool bool not null default 0,
2003-02-07 11:54:10 +01:00
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,
2005-01-15 02:09:35 +01:00
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',
2003-02-07 11:54:10 +01: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)
2003-12-10 05:31:42 +01:00
) 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;
2003-02-07 11:54:10 +01:00
# Not tested above: RAID_# 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;
2003-08-27 09:26:03 +02:00
#
# 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;
2003-02-07 11:54:10 +01:00
2002-04-26 12:56:32 +02:00
# 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;
2004-02-06 21:57:22 +01:00
#
# Test for Bug #2593 "SHOW CREATE TABLE doesn't properly double quotes"
#
2004-03-05 14:57:36 +01:00
SET @old_sql_mode= @@sql_mode, sql_mode= '';
SET @old_sql_quote_show_create= @@sql_quote_show_create, sql_quote_show_create= OFF;
######### hook for WL#1324 #
--error 1103
CREATE TABLE `a/b` (i INT);
# the above test should WORK when WL#1324 is done,
# it should be removed and
# the following part should be uncommented then
#########################################################
# begin of part that must be uncommented when WL#1324 is done
#########################################################
#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```;
2004-07-26 21:20:59 +02:00
#
2004-03-05 14:57:36 +01:00
#CREATE TABLE ```a` (i INT);
#SHOW CREATE TABLE ```a`;
#DROP TABLE ```a`;
2004-07-26 21:20:59 +02:00
#
#SET sql_mode= 'ANSI_QUOTES';
#
2004-03-05 14:57:36 +01:00
#CREATE TABLE """a" (i INT);
#SHOW CREATE TABLE """a";
#DROP TABLE """a";
2004-07-26 21:20:59 +02:00
#
#Bug #4374 SHOW TABLE STATUS FROM ignores collation_connection
#set names latin1;
#create database `<60> `;
#create table `<60> `.`<60> ` (a int) engine=heap;
#--replace_column 7 # 8 # 9 #
#show table status from `<60> ` LIKE '<27> ';
#drop database `<60> `;
2004-03-05 14:57:36 +01:00
#########################################################
# end of part that must be uncommented when WL#1324 is done
#########################################################
2004-02-06 21:57:22 +01:00
# to test quotes around keywords.. :
2004-03-05 14:57:36 +01:00
SET sql_mode= '';
SET sql_quote_show_create= OFF;
2004-02-06 21:57:22 +01:00
CREATE TABLE t1 (i INT);
SHOW CREATE TABLE t1;
DROP TABLE t1;
CREATE TABLE `table` (i INT);
SHOW CREATE TABLE `table`;
DROP TABLE `table`;
2004-03-05 14:57:36 +01:00
SET sql_quote_show_create= @old_sql_quote_show_create;
SET sql_mode= @old_sql_mode;
2004-02-19 21:33:16 +01:00
#
# 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,
2005-01-08 07:31:13 +01:00
KEY a USING BTREE (a)
2004-02-19 21:33:16 +01:00
) 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,
2005-01-08 07:31:13 +01:00
KEY a USING BTREE (a),
2004-02-19 21:33:16 +01:00
index(b)
) ENGINE=HEAP;
insert into t1 values (1),(2);
insert into t2 values (1),(2);
insert into t3 values (1,1),(2,2);
2004-12-19 19:25:19 +01:00
--replace_column 6 # 7 # 8 # 9 #
2004-02-19 21:33:16 +01:00
show table status;
insert into t1 values (3),(4);
insert into t2 values (3),(4);
insert into t3 values (3,3),(4,4);
2004-12-19 19:25:19 +01:00
--replace_column 6 # 7 # 8 # 9 #
2004-02-19 21:33:16 +01:00
show table status;
insert into t1 values (5);
insert into t2 values (5);
insert into t3 values (5,5);
2004-12-19 19:25:19 +01:00
--replace_column 6 # 7 # 8 # 9 #
2004-02-19 21:33:16 +01:00
show table status;
delete from t1 where a=3;
delete from t2 where b=3;
delete from t3 where a=3;
2004-12-07 23:34:50 +01:00
--replace_column 6 # 7 # 8 # 9 # 10 #
2004-02-19 21:33:16 +01:00
show table status;
delete from t1;
delete from t2;
delete from t3;
2004-12-19 19:25:19 +01:00
--replace_column 6 # 7 # 8 # 9 #
2004-02-19 21:33:16 +01:00
show table status;
insert into t1 values (5);
insert into t2 values (5);
insert into t3 values (5,5);
2004-12-19 19:25:19 +01:00
--replace_column 6 # 7 # 8 # 9 #
2004-02-19 21:33:16 +01:00
show table status;
delete from t1 where a=5;
delete from t2 where b=5;
delete from t3 where a=5;
2004-12-07 23:34:50 +01:00
--replace_column 6 # 7 # 8 # 9 # 10 #
2004-02-19 21:33:16 +01:00
show table status;
drop table t1, t2, t3;
2004-04-06 17:26:35 +02:00
#
# Test for bug #3342 SHOW CREATE DATABASE seems to require DROP privilege
#
2004-08-31 13:35:04 +02:00
create database mysqltest;
show create database mysqltest;
create table mysqltest.t1(a int);
insert into mysqltest.t1 values(1);
grant select on `mysqltest`.* to mysqltest_1@localhost;
grant usage on `mysqltest`.* to mysqltest_2@localhost;
grant drop on `mysqltest`.* to mysqltest_3@localhost;
2004-04-06 17:26:35 +02:00
2004-08-31 13:35:04 +02:00
connect (con1,localhost,mysqltest_1,,mysqltest);
2004-04-06 17:26:35 +02:00
connection con1;
select * from t1;
2004-08-31 13:35:04 +02:00
show create database mysqltest;
2004-12-23 11:46:24 +01:00
--error 1142
2004-04-06 17:26:35 +02:00
drop table t1;
--error 1044
2004-08-31 13:35:04 +02:00
drop database mysqltest;
2004-04-06 17:26:35 +02:00
connect (con2,localhost,mysqltest_2,,test);
connection con2;
2004-12-23 11:46:24 +01:00
--error 1142
2004-08-31 13:35:04 +02:00
select * from mysqltest.t1;
2004-04-06 17:26:35 +02:00
--error 1044
2004-08-31 13:35:04 +02:00
show create database mysqltest;
2004-12-23 11:46:24 +01:00
--error 1142
2004-08-31 13:35:04 +02:00
drop table mysqltest.t1;
2004-04-06 17:26:35 +02:00
--error 1044
2004-08-31 13:35:04 +02:00
drop database mysqltest;
2004-04-06 17:26:35 +02:00
connect (con3,localhost,mysqltest_3,,test);
connection con3;
2004-12-23 11:46:24 +01:00
--error 1142
2004-08-31 13:35:04 +02:00
select * from mysqltest.t1;
2004-04-06 17:26:35 +02:00
--error 1044
2004-08-31 13:35:04 +02:00
show create database mysqltest;
drop table mysqltest.t1;
drop database mysqltest;
2004-04-06 17:26:35 +02:00
connection default;
2004-07-08 15:54:07 +02:00
set names binary;
2004-04-06 17:26:35 +02:00
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;
2004-07-02 13:52:02 +02:00
2004-08-23 17:12:40 +02:00
# This test fails on MAC OSX, so it is temporary disabled.
# This needs WL#1324 to be done.
#set names latin1;
#create database `<60> `;
#create table `<60> `.`<60> ` (a int) engine=heap;
#--replace_column 7 # 8 # 9 #
#show table status from `<60> ` LIKE '<27> ';
#drop database `<60> `;
2005-01-13 18:22:35 +01:00
# 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;
2005-04-16 21:35:39 +02:00
# 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
show index from t1;
--disable_metadata
drop table t1;
2005-07-07 14:44:28 +02:00
# 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;
2005-07-28 02:22:47 +02:00
2005-10-13 15:52:22 +02:00
# Test for BUG#93: 4.1 protocl crash on corupted frm and SHOW TABLE STATUS
flush tables;
# Create a junk frm file on disk
2006-01-24 08:30:54 +01:00
system echo "this is a junk file for test" >> $MYSQLTEST_VARDIR/master-data/test/t1.frm ;
2005-10-13 15:52:22 +02:00
--replace_column 6 # 7 # 8 # 9 #
SHOW TABLE STATUS like 't1';
--error 1033
show create table t1;
drop table t1;
2006-10-04 05:26:55 +02:00
--echo End of 4.1 tests
2005-08-16 11:18:35 +02:00
#
# BUG 12183 - SHOW OPEN TABLES behavior doesn't match grammar
# First we close all open tables with FLUSH tables and then we open some.
CREATE TABLE txt1(a int);
CREATE TABLE tyt2(a int);
CREATE TABLE urkunde(a int);
FLUSH TABLES;
SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone_name, txt1, tyt2, urkunde LIMIT 0;
SHOW OPEN TABLES;
SHOW OPEN TABLES FROM mysql;
SHOW OPEN TABLES FROM mysql LIKE 'u%';
SHOW OPEN TABLES LIKE 't%';
SHOW OPEN TABLES LIKE '%o%';
FLUSH TABLES;
SHOW OPEN TABLES;
DROP TABLE txt1;
DROP TABLE tyt2;
DROP TABLE urkunde;
2005-08-17 17:51:10 +02:00
#
# BUG #12591 (SHOW TABLES FROM dbname produces wrong error message)
#
--error 1049
SHOW TABLES FROM non_existing_database;
2006-06-27 19:28:32 +02:00
#
# 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;
# Check that SQL_NO_CACHE always wins.
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
# 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;
Bug#16581: deadlock: server and client both read from connection in
'conc_sys' test
Concurrent execution of SELECT involing at least two INFORMATION_SCHEMA
tables, DROP DATABASE statement and DROP TABLE statement could have
resulted in stalled connection for this SELECT statement.
The problem was that for the first query of a join there was a race
between select from I_S.TABLES and DROP DATABASE, and the error (no
such database) was prepared to be send to the client, but the join
processing was continued. On second query to I_S.COLUMNS there was a
race with DROP TABLE, but this error (no such table) was downgraded to
warning, and thd->net.report_error was reset. And so neither result
nor error was sent to the client.
The solution is to stop join processing once it is clear we are going
to report a error, and also to downgrade to warnings file system errors
like 'no such database' (unless we are in the 'SHOW' command), because
I_S is designed not to use locks and the query to I_S should not abort
if something is dropped in the middle.
No test case is provided since this bug is a result of a race, and is
timing dependant. But we test that plain SHOW TABLES and SHOW COLUMNS
give a error if there is no such database or a table respectively.
mysql-test/r/show_check.result:
Add result for the test that SHOW TABLES and SHOW COLUMNS give a error
if there is no such database or a table respectively.
mysql-test/t/show_check.test:
Add test case that SHOW TABLES and SHOW COLUMNS give a error
if there is no such database or a table respectively.
sql/mysql_priv.h:
Remove prototype of mysql_find_files(), which is made static under
find_files() name.
sql/sql_show.cc:
Rename mysql_find_files() to find_files() and make it static.
Return FIND_FILES_OK for success, FIND_FILES_OOM for out of memory,
and FIND_FILES_DIR for directory reading error.
Downgrade error to warning in get_all_tables() if it is a
FIND_FILES_DIR error, and we are not in the 'SHOW' command.
Once 'result' is set to 1 in get_schema_tables_result(), there's no
need in continuing iterations, as we are about to return a error.
2006-07-28 13:06:23 +02:00
#
# 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;
2006-10-13 01:10:34 +02:00
#
# 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)
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
2007-06-28 11:24:52 +02:00
#
# BUG#10491: Server returns data as charset binary SHOW CREATE TABLE or SELECT
# FROM I_S.
#
2007-07-25 17:46:50 +02:00
#
# Part 1: check that meta-data specifies not-binary character set.
#
2007-06-28 11:24:52 +02:00
# 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 ----------------------------------------------------------------
SHOW DATABASES LIKE 'mysqltest1';
--echo ----------------------------------------------------------------
SHOW CREATE TABLE t1;
--echo ----------------------------------------------------------------
SHOW INDEX FROM t1;
--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 ----------------------------------------------------------------
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 ----------------------------------------------------------------
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;
2007-07-25 17:46:50 +02:00
#
# 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(<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 1 INT);
# Check:
# - Dump mysqltest1;
--echo
--echo ---> Dumping mysqltest1 to show_check.mysqltest1.sql
--exec $MYSQL_DUMP --default-character-set=latin1 --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
# - Clean mysqltest1;
--echo
--echo
DROP DATABASE mysqltest1;
# - Restore mysqltest1;
--echo
--echo
--echo ---> Restoring mysqltest1...
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/show_check.mysqltest1.sql
# - Check definition of the table.
SHOW CREATE TABLE mysqltest1.t1;
# Cleanup.
DROP DATABASE mysqltest1;
use test;
2007-07-05 12:34:12 +02:00
#
# Bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
#
flush status;
show variables like "log_queries_not_using_indexes";
select 1 from information_schema.tables limit 1;
show status like 'slow_queries';
set global 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 global 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';
2006-10-12 07:35:52 +02:00
--echo End of 5.0 tests