mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			1081 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1081 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# This test  uses grants, which can't get tested for 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 for information_schema.schemata &
 | 
						|
# show databases
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
 | 
						|
DROP VIEW IF EXISTS v1;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
 | 
						|
show variables where variable_name like "skip_show_database";
 | 
						|
grant select, update, execute on test.* to mysqltest_2@localhost;
 | 
						|
grant select, update on test.* to mysqltest_1@localhost;
 | 
						|
create user mysqltest_3@localhost;
 | 
						|
create user mysqltest_3;
 | 
						|
 | 
						|
 | 
						|
select * from information_schema.SCHEMATA where schema_name > 'm';
 | 
						|
select schema_name from information_schema.schemata;
 | 
						|
show databases like 't%';
 | 
						|
show databases;
 | 
						|
show databases where `database` = 't%';
 | 
						|
 | 
						|
# Test for information_schema.tables &
 | 
						|
# show tables
 | 
						|
 | 
						|
create database mysqltest;
 | 
						|
create table mysqltest.t1(a int, b VARCHAR(30), KEY string_data (b));
 | 
						|
create table test.t2(a int);
 | 
						|
create table t3(a int, KEY a_data (a));
 | 
						|
create table mysqltest.t4(a int);
 | 
						|
create table t5 (id int auto_increment primary key);
 | 
						|
insert into t5 values (10);
 | 
						|
create view v1 (c) as select table_name from information_schema.TABLES where table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status';
 | 
						|
select * from v1;
 | 
						|
 | 
						|
select c,table_name from v1 
 | 
						|
inner join information_schema.TABLES v2 on (v1.c=v2.table_name)
 | 
						|
where v1.c like "t%";
 | 
						|
 | 
						|
select c,table_name from v1 
 | 
						|
left join information_schema.TABLES v2 on (v1.c=v2.table_name)
 | 
						|
where v1.c like "t%";
 | 
						|
 | 
						|
select c, v2.table_name from v1
 | 
						|
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
 | 
						|
where v1.c like "t%";
 | 
						|
 | 
						|
select table_name from information_schema.TABLES
 | 
						|
where table_schema = "mysqltest" and table_name like "t%";
 | 
						|
 | 
						|
select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
 | 
						|
show keys from t3 where Key_name = "a_data";
 | 
						|
 | 
						|
show tables like 't%';
 | 
						|
--replace_column 8 # 12 # 13 #
 | 
						|
show table status;
 | 
						|
show full columns from t3 like "a%";
 | 
						|
show full columns from mysql.db like "Insert%";
 | 
						|
show full columns from v1;
 | 
						|
select * from information_schema.COLUMNS where table_name="t1"
 | 
						|
and column_name= "a";
 | 
						|
show columns from mysqltest.t1 where field like "%a%";
 | 
						|
 | 
						|
create view mysqltest.v1 (c) as select a from mysqltest.t1;
 | 
						|
grant select (a) on mysqltest.t1 to mysqltest_2@localhost;
 | 
						|
grant select on mysqltest.v1 to mysqltest_3;
 | 
						|
connect (user3,localhost,mysqltest_2,,);
 | 
						|
connection user3;
 | 
						|
select table_name, column_name, privileges from information_schema.columns 
 | 
						|
where table_schema = 'mysqltest' and table_name = 't1';
 | 
						|
show columns from mysqltest.t1;
 | 
						|
connect (user4,localhost,mysqltest_3,,mysqltest);
 | 
						|
connection user4;
 | 
						|
select table_name, column_name, privileges from information_schema.columns
 | 
						|
where table_schema = 'mysqltest' and table_name = 'v1';
 | 
						|
--error 1345
 | 
						|
explain select * from v1;
 | 
						|
connection default;
 | 
						|
 | 
						|
drop view v1, mysqltest.v1;
 | 
						|
drop tables mysqltest.t4, mysqltest.t1, t2, t3, t5;
 | 
						|
drop database mysqltest;
 | 
						|
 | 
						|
# Test for information_schema.CHARACTER_SETS &
 | 
						|
# SHOW CHARACTER SET
 | 
						|
 | 
						|
select * from information_schema.CHARACTER_SETS
 | 
						|
where CHARACTER_SET_NAME like 'latin1%';
 | 
						|
SHOW CHARACTER SET LIKE 'latin1%';
 | 
						|
SHOW CHARACTER SET WHERE charset like 'latin1%';
 | 
						|
 | 
						|
# Test for information_schema.COLLATIONS &
 | 
						|
# SHOW COLLATION
 | 
						|
 | 
						|
--replace_column 5 #
 | 
						|
select * from information_schema.COLLATIONS
 | 
						|
where COLLATION_NAME like 'latin1%';
 | 
						|
--replace_column 5 #
 | 
						|
SHOW COLLATION LIKE 'latin1%';
 | 
						|
--replace_column 5 #
 | 
						|
SHOW COLLATION WHERE collation like 'latin1%';
 | 
						|
 | 
						|
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
 | 
						|
where COLLATION_NAME like 'latin1%';
 | 
						|
 | 
						|
# Test for information_schema.ROUTINES &
 | 
						|
#
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
drop procedure if exists sel2;
 | 
						|
drop function if exists sub1;
 | 
						|
drop function if exists sub2;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
create function sub1(i int) returns int
 | 
						|
  return i+1;
 | 
						|
delimiter |;
 | 
						|
create procedure sel2()
 | 
						|
begin
 | 
						|
  select * from t1;
 | 
						|
  select * from t2;
 | 
						|
end|
 | 
						|
delimiter ;|
 | 
						|
 | 
						|
#
 | 
						|
# Bug#7222 information_schema: errors in "routines"
 | 
						|
#
 | 
						|
select parameter_style, sql_data_access, dtd_identifier 
 | 
						|
from information_schema.routines;
 | 
						|
 | 
						|
--replace_column 5 # 6 #
 | 
						|
show procedure status;
 | 
						|
--replace_column 5 # 6 #
 | 
						|
show function status;
 | 
						|
select a.ROUTINE_NAME from information_schema.ROUTINES a,
 | 
						|
information_schema.SCHEMATA b where
 | 
						|
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
 | 
						|
--replace_column 3 #
 | 
						|
explain select a.ROUTINE_NAME from information_schema.ROUTINES a,
 | 
						|
information_schema.SCHEMATA b where
 | 
						|
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
 | 
						|
 | 
						|
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
 | 
						|
mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8) order by 1;
 | 
						|
select count(*) from information_schema.ROUTINES;
 | 
						|
 | 
						|
create view v1 as select routine_schema, routine_name from information_schema.routines 
 | 
						|
order by routine_schema, routine_name;
 | 
						|
select * from v1;
 | 
						|
drop view v1;
 | 
						|
 | 
						|
connect (user1,localhost,mysqltest_1,,);
 | 
						|
connection user1;
 | 
						|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
 | 
						|
--error 1305
 | 
						|
show create function sub1;
 | 
						|
connection user3;
 | 
						|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
 | 
						|
connection default;
 | 
						|
grant all privileges on test.* to mysqltest_1@localhost;
 | 
						|
connect (user2,localhost,mysqltest_1,,);
 | 
						|
connection user2;
 | 
						|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
 | 
						|
create function sub2(i int) returns int
 | 
						|
  return i+1;
 | 
						|
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
 | 
						|
show create procedure sel2;
 | 
						|
show create function sub1;
 | 
						|
show create function sub2;
 | 
						|
--replace_column 5 # 6 #
 | 
						|
show function status like "sub2";
 | 
						|
connection default;
 | 
						|
disconnect user1;
 | 
						|
drop function sub2;
 | 
						|
show create procedure sel2;
 | 
						|
 | 
						|
#
 | 
						|
# Test for views
 | 
						|
#
 | 
						|
create view v0 (c) as select schema_name from information_schema.schemata;
 | 
						|
select * from v0;
 | 
						|
--replace_column 3 #
 | 
						|
explain select * from v0;
 | 
						|
create view v1 (c) as select table_name from information_schema.tables
 | 
						|
where table_name="v1";
 | 
						|
select * from v1;
 | 
						|
create view v2 (c) as select column_name from information_schema.columns
 | 
						|
where table_name="v2";
 | 
						|
select * from v2;
 | 
						|
create view v3 (c) as select CHARACTER_SET_NAME from information_schema.character_sets
 | 
						|
where CHARACTER_SET_NAME like "latin1%";
 | 
						|
select * from v3;
 | 
						|
create view v4 (c) as select COLLATION_NAME from information_schema.collations
 | 
						|
where COLLATION_NAME like "latin1%";
 | 
						|
select * from v4;
 | 
						|
show keys from v4;
 | 
						|
select * from information_schema.views where TABLE_NAME like "v%";
 | 
						|
drop view v0, v1, v2, v3, v4;
 | 
						|
 | 
						|
#
 | 
						|
# Test for privileges tables
 | 
						|
#
 | 
						|
create table t1 (a int);
 | 
						|
grant select,update,insert on t1 to mysqltest_1@localhost;
 | 
						|
grant select (a), update (a),insert(a), references(a) on t1 to mysqltest_1@localhost;
 | 
						|
grant all on test.* to mysqltest_1@localhost with grant option;
 | 
						|
select * from information_schema.USER_PRIVILEGES where grantee like '%mysqltest_1%';
 | 
						|
select * from information_schema.SCHEMA_PRIVILEGES where grantee like '%mysqltest_1%';
 | 
						|
select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
 | 
						|
select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%';
 | 
						|
delete from mysql.user where user like 'mysqltest%';
 | 
						|
delete from mysql.db where user like 'mysqltest%';
 | 
						|
delete from mysql.tables_priv where user like 'mysqltest%';
 | 
						|
delete from mysql.columns_priv where user like 'mysqltest%';
 | 
						|
flush privileges;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Test for KEY_COLUMN_USAGE & TABLE_CONSTRAINTS tables
 | 
						|
#
 | 
						|
 | 
						|
create table t1 (a int null, primary key(a));
 | 
						|
alter table t1 add constraint constraint_1 unique (a);
 | 
						|
alter table t1 add constraint unique key_1(a);
 | 
						|
alter table t1 add constraint constraint_2 unique key_2(a);
 | 
						|
show create table t1;
 | 
						|
select * from information_schema.TABLE_CONSTRAINTS where
 | 
						|
TABLE_SCHEMA= "test";
 | 
						|
select * from information_schema.KEY_COLUMN_USAGE where
 | 
						|
TABLE_SCHEMA= "test";
 | 
						|
 | 
						|
connection user2;
 | 
						|
select table_name from information_schema.TABLES where table_schema like "test%";
 | 
						|
select table_name,column_name from information_schema.COLUMNS where table_schema like "test%";
 | 
						|
select ROUTINE_NAME from information_schema.ROUTINES;
 | 
						|
disconnect user2;
 | 
						|
connection default;
 | 
						|
delete from mysql.user where user='mysqltest_1';
 | 
						|
drop table t1;
 | 
						|
drop procedure sel2;
 | 
						|
drop function sub1;
 | 
						|
 | 
						|
create table t1(a int);
 | 
						|
create view v1 (c) as select a from t1 with check option;
 | 
						|
create view v2 (c) as select a from t1 WITH LOCAL CHECK OPTION;
 | 
						|
create view v3 (c) as select a from t1 WITH CASCADED CHECK OPTION;
 | 
						|
select * from information_schema.views;
 | 
						|
grant select (a) on test.t1 to joe@localhost with grant option;
 | 
						|
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
 | 
						|
select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES;
 | 
						|
drop view v1, v2, v3;
 | 
						|
drop table t1;
 | 
						|
delete from mysql.user where user='joe';
 | 
						|
delete from mysql.db where user='joe';
 | 
						|
delete from mysql.tables_priv where user='joe';
 | 
						|
delete from mysql.columns_priv where user='joe';
 | 
						|
flush privileges;
 | 
						|
 | 
						|
# QQ This results in NULLs instead of the version numbers when
 | 
						|
# QQ a LOCK TABLES is in effect when selecting from
 | 
						|
# QQ information_schema.tables.
 | 
						|
 | 
						|
--disable_parsing # until bug is fixed
 | 
						|
delimiter //;
 | 
						|
create procedure px5 ()
 | 
						|
begin
 | 
						|
declare v int;
 | 
						|
declare c cursor for select version from
 | 
						|
information_schema.tables where table_schema <> 'information_schema';
 | 
						|
open c;
 | 
						|
fetch c into v;
 | 
						|
select v;
 | 
						|
close c;
 | 
						|
end;//
 | 
						|
 | 
						|
call px5()//
 | 
						|
call px5()//
 | 
						|
delimiter ;//
 | 
						|
select sql_mode from information_schema.ROUTINES;
 | 
						|
drop procedure px5;
 | 
						|
--enable_parsing
 | 
						|
 | 
						|
create table t1 (a int not null auto_increment,b int, primary key (a));
 | 
						|
insert into t1 values (1,1),(NULL,3),(NULL,4);
 | 
						|
select AUTO_INCREMENT from information_schema.tables where table_name = 't1';
 | 
						|
drop table t1;
 | 
						|
 | 
						|
create table t1 (s1 int);
 | 
						|
insert into t1 values (0),(9),(0);
 | 
						|
select s1 from t1 where s1 in (select version from
 | 
						|
information_schema.tables) union select version from
 | 
						|
information_schema.tables;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
 | 
						|
set names latin2;
 | 
						|
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
 | 
						|
set names latin1;
 | 
						|
 | 
						|
create table t1 select * from information_schema.CHARACTER_SETS
 | 
						|
where CHARACTER_SET_NAME like "latin1";
 | 
						|
select * from t1;
 | 
						|
alter table t1 default character set utf8;
 | 
						|
show create table t1;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
create view v1 as select * from information_schema.TABLES;
 | 
						|
drop view v1;
 | 
						|
create table t1(a NUMERIC(5,3), b NUMERIC(5,1), c float(5,2),
 | 
						|
 d NUMERIC(6,4), e float, f DECIMAL(6,3), g int(11), h DOUBLE(10,3),
 | 
						|
 i DOUBLE);
 | 
						|
select COLUMN_NAME,COLUMN_TYPE, CHARACTER_MAXIMUM_LENGTH, 
 | 
						|
 CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE
 | 
						|
from information_schema.columns where table_name= 't1';
 | 
						|
drop table t1;
 | 
						|
 | 
						|
create table t115 as select table_name, column_name, column_type
 | 
						|
from information_schema.columns where table_name = 'proc';
 | 
						|
select * from t115;
 | 
						|
drop table t115;
 | 
						|
 | 
						|
delimiter //;
 | 
						|
create procedure p108 () begin declare c cursor for select data_type
 | 
						|
from information_schema.columns;  open c; open c; end;//
 | 
						|
--error 1325
 | 
						|
call p108()//
 | 
						|
delimiter ;//
 | 
						|
drop procedure p108;
 | 
						|
 | 
						|
create view v1 as select A1.table_name from information_schema.TABLES A1
 | 
						|
where table_name= "user";
 | 
						|
select * from v1;
 | 
						|
drop view v1;
 | 
						|
 | 
						|
create view vo as select 'a' union select 'a';  
 | 
						|
show index from vo;
 | 
						|
select * from information_schema.TABLE_CONSTRAINTS where
 | 
						|
TABLE_NAME= "vo";
 | 
						|
select * from information_schema.KEY_COLUMN_USAGE where
 | 
						|
TABLE_NAME= "vo"; 
 | 
						|
drop view vo;
 | 
						|
 | 
						|
select TABLE_NAME,TABLE_TYPE,ENGINE
 | 
						|
from information_schema.tables 
 | 
						|
where table_schema='information_schema' limit 2;
 | 
						|
show tables from information_schema like "T%";
 | 
						|
 | 
						|
--error 1044
 | 
						|
create database information_schema;
 | 
						|
use information_schema;
 | 
						|
show full tables like "T%";
 | 
						|
--error 1109
 | 
						|
create table t1(a int);
 | 
						|
use test;
 | 
						|
show tables;
 | 
						|
use information_schema;
 | 
						|
show tables like "T%";
 | 
						|
 | 
						|
#
 | 
						|
# Bug#7210: information_schema: can't access when table-name = reserved word
 | 
						|
#
 | 
						|
select table_name from tables where table_name='user';
 | 
						|
select column_name, privileges from columns
 | 
						|
where table_name='user' and column_name like '%o%';
 | 
						|
 | 
						|
#
 | 
						|
# Bug#7212: information_schema: "Can't find file" errors if storage engine gone
 | 
						|
# Bug#7211: information_schema: crash if bad view
 | 
						|
#
 | 
						|
use test;
 | 
						|
create function sub1(i int) returns int
 | 
						|
  return i+1;
 | 
						|
create table t1(f1 int);
 | 
						|
create view v2 (c) as select f1 from t1;
 | 
						|
create view v3 (c) as select sub1(1);
 | 
						|
create table t4(f1 int, KEY f1_key (f1));
 | 
						|
drop table t1;
 | 
						|
drop function sub1;
 | 
						|
select table_name from information_schema.views
 | 
						|
where table_schema='test';
 | 
						|
select table_name from information_schema.views
 | 
						|
where table_schema='test';
 | 
						|
select column_name from information_schema.columns
 | 
						|
where table_schema='test';
 | 
						|
select index_name from information_schema.statistics where table_schema='test';
 | 
						|
select constraint_name from information_schema.table_constraints
 | 
						|
where table_schema='test';
 | 
						|
show create view v2;
 | 
						|
show create table v3;
 | 
						|
drop view v2;
 | 
						|
drop view v3;
 | 
						|
drop table t4;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#7213: information_schema: redundant non-standard TABLE_NAMES table
 | 
						|
#
 | 
						|
--error 1109
 | 
						|
select * from information_schema.table_names;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#2719 information_schema: errors in "columns"
 | 
						|
#
 | 
						|
select column_type from information_schema.columns
 | 
						|
where table_schema="information_schema" and table_name="COLUMNS" and
 | 
						|
(column_name="character_set_name" or column_name="collation_name");
 | 
						|
 | 
						|
#
 | 
						|
# Bug#2718 information_schema: errors in "tables"
 | 
						|
#
 | 
						|
select TABLE_ROWS from information_schema.tables where 
 | 
						|
table_schema="information_schema" and table_name="COLUMNS";
 | 
						|
select table_type from information_schema.tables
 | 
						|
where table_schema="mysql" and table_name="user";
 | 
						|
 | 
						|
# test for 'show open tables ... where'
 | 
						|
show open tables where `table` like "user";
 | 
						|
# test for 'show status ... where'
 | 
						|
show status where variable_name like "%database%";
 | 
						|
# test for 'show variables ... where'
 | 
						|
show variables where variable_name like "skip_show_databas";
 | 
						|
 | 
						|
#
 | 
						|
# Bug #7981:SHOW GLOBAL STATUS crashes server
 | 
						|
#
 | 
						|
# We don't actually care about the value, just that it doesn't crash.
 | 
						|
--replace_column 2 #
 | 
						|
show global status like "Threads_running";
 | 
						|
 | 
						|
#
 | 
						|
# Bug #7915  crash,JOIN VIEW, subquery, 
 | 
						|
# SELECT .. FROM INFORMATION_SCHEMA.COLUMNS
 | 
						|
#
 | 
						|
create table t1(f1 int);
 | 
						|
create table t2(f2 int);
 | 
						|
create view v1 as select * from t1, t2;
 | 
						|
set @got_val= (select count(*) from information_schema.columns);
 | 
						|
drop view v1;
 | 
						|
drop table t1, t2;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #7476: crash on SELECT * FROM INFORMATION_SCHEMA.TABLES
 | 
						|
#
 | 
						|
use test;
 | 
						|
CREATE TABLE t_crashme ( f1 BIGINT);
 | 
						|
CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
 | 
						|
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
 | 
						|
let $tab_count= 65;
 | 
						|
--disable_query_log
 | 
						|
while ($tab_count)
 | 
						|
{
 | 
						|
     EVAL CREATE TABLE t_$tab_count (f1 BIGINT);
 | 
						|
     dec $tab_count ;
 | 
						|
}
 | 
						|
--disable_result_log
 | 
						|
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
 | 
						|
--enable_result_log
 | 
						|
SELECT count(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test';
 | 
						|
let $tab_count= 65;
 | 
						|
while ($tab_count)
 | 
						|
{
 | 
						|
     EVAL DROP TABLE t_$tab_count;
 | 
						|
     dec $tab_count ;
 | 
						|
}
 | 
						|
--enable_query_log
 | 
						|
drop view a2, a1;
 | 
						|
drop table t_crashme;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #7215  information_schema: columns are longtext instead of varchar
 | 
						|
# Bug #7217  information_schema: columns are varbinary() instead of timestamp
 | 
						|
#
 | 
						|
select table_schema,table_name, column_name from
 | 
						|
information_schema.columns 
 | 
						|
where data_type = 'longtext';
 | 
						|
select table_name, column_name, data_type from information_schema.columns
 | 
						|
where data_type = 'datetime';
 | 
						|
 | 
						|
#
 | 
						|
# Bug #8164  subquery with INFORMATION_SCHEMA.COLUMNS, 100 % CPU
 | 
						|
#
 | 
						|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
 | 
						|
WHERE NOT EXISTS 
 | 
						|
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS B
 | 
						|
  WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
 | 
						|
  AND A.TABLE_NAME = B.TABLE_NAME);
 | 
						|
 | 
						|
#
 | 
						|
# Bug #9344  INFORMATION_SCHEMA, wrong content, numeric columns
 | 
						|
#
 | 
						|
 | 
						|
create table t1
 | 
						|
( x_bigint BIGINT,
 | 
						|
  x_integer INTEGER,
 | 
						|
  x_smallint SMALLINT,
 | 
						|
  x_decimal DECIMAL(5,3),
 | 
						|
  x_numeric NUMERIC(5,3),
 | 
						|
  x_real REAL,
 | 
						|
  x_float FLOAT,
 | 
						|
  x_double_precision DOUBLE PRECISION );
 | 
						|
SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH
 | 
						|
FROM INFORMATION_SCHEMA.COLUMNS
 | 
						|
WHERE TABLE_NAME= 't1';
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#10261  INFORMATION_SCHEMA.COLUMNS, incomplete result for non root user
 | 
						|
#
 | 
						|
 | 
						|
grant select on test.* to mysqltest_4@localhost;
 | 
						|
connect (user10261,localhost,mysqltest_4,,);
 | 
						|
connection user10261;
 | 
						|
SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGES FROM INFORMATION_SCHEMA.COLUMNS 
 | 
						|
where COLUMN_NAME='TABLE_NAME';
 | 
						|
connection default;
 | 
						|
delete from mysql.user where user='mysqltest_4';
 | 
						|
delete from mysql.db where user='mysqltest_4';
 | 
						|
flush privileges;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #9404  information_schema: Weird error messages
 | 
						|
# with SELECT SUM() ... GROUP BY queries
 | 
						|
#
 | 
						|
SELECT table_schema, count(*) FROM information_schema.TABLES where table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# TRIGGERS table test
 | 
						|
#
 | 
						|
create table t1 (i int, j int);
 | 
						|
 | 
						|
delimiter |;
 | 
						|
create trigger trg1 before insert on t1 for each row
 | 
						|
begin
 | 
						|
  if new.j > 10 then
 | 
						|
    set new.j := 10;
 | 
						|
  end if;
 | 
						|
end|
 | 
						|
create trigger trg2 before update on t1 for each row
 | 
						|
begin
 | 
						|
  if old.i % 2 = 0 then
 | 
						|
    set new.j := -1;
 | 
						|
  end if;
 | 
						|
end|
 | 
						|
create trigger trg3 after update on t1 for each row
 | 
						|
begin
 | 
						|
  if new.j = -1 then
 | 
						|
    set @fired:= "Yes";
 | 
						|
  end if;
 | 
						|
end|
 | 
						|
delimiter ;|
 | 
						|
show triggers;
 | 
						|
select * from information_schema.triggers;
 | 
						|
 | 
						|
drop trigger trg1;
 | 
						|
drop trigger trg2;
 | 
						|
drop trigger trg3;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Bug #10964  Information Schema:Authorization check on privilege tables is improper
 | 
						|
#
 | 
						|
 | 
						|
create database mysqltest;
 | 
						|
create table mysqltest.t1 (f1 int, f2 int);
 | 
						|
create table mysqltest.t2 (f1 int);
 | 
						|
grant select (f1) on mysqltest.t1 to user1@localhost;
 | 
						|
grant select on mysqltest.t2 to user2@localhost;
 | 
						|
grant select on mysqltest.* to user3@localhost;
 | 
						|
grant select on *.* to user4@localhost;
 | 
						|
 | 
						|
connect (con1,localhost,user1,,mysqltest);
 | 
						|
connect (con2,localhost,user2,,mysqltest);
 | 
						|
connect (con3,localhost,user3,,mysqltest);
 | 
						|
connect (con4,localhost,user4,,);
 | 
						|
connection con1;
 | 
						|
select * from information_schema.column_privileges order by grantee;
 | 
						|
select * from information_schema.table_privileges order by grantee;
 | 
						|
select * from information_schema.schema_privileges order by grantee;
 | 
						|
select * from information_schema.user_privileges order by grantee;
 | 
						|
show grants;
 | 
						|
connection con2;
 | 
						|
select * from information_schema.column_privileges order by grantee;
 | 
						|
select * from information_schema.table_privileges order by grantee;
 | 
						|
select * from information_schema.schema_privileges order by grantee;
 | 
						|
select * from information_schema.user_privileges order by grantee;
 | 
						|
show grants;
 | 
						|
connection con3;
 | 
						|
select * from information_schema.column_privileges order by grantee;
 | 
						|
select * from information_schema.table_privileges order by grantee;
 | 
						|
select * from information_schema.schema_privileges order by grantee;
 | 
						|
select * from information_schema.user_privileges order by grantee;
 | 
						|
show grants;
 | 
						|
connection con4;
 | 
						|
select * from information_schema.column_privileges where grantee like '%user%'
 | 
						|
order by grantee;
 | 
						|
select * from information_schema.table_privileges where grantee like '%user%'
 | 
						|
order by grantee;
 | 
						|
select * from information_schema.schema_privileges where grantee like '%user%'
 | 
						|
order by grantee;
 | 
						|
select * from information_schema.user_privileges where grantee like '%user%'
 | 
						|
order by grantee;
 | 
						|
show grants;
 | 
						|
connection default;
 | 
						|
drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost;
 | 
						|
use test;
 | 
						|
drop database mysqltest;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #11055 information_schema: routines.sql_data_access has wrong value
 | 
						|
#
 | 
						|
--disable_warnings
 | 
						|
drop procedure if exists p1;
 | 
						|
drop procedure if exists p2;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
create procedure p1 () modifies sql data set @a = 5;
 | 
						|
create procedure p2 () set @a = 5;
 | 
						|
select sql_data_access from information_schema.routines
 | 
						|
where specific_name like 'p%';
 | 
						|
drop procedure p1;
 | 
						|
drop procedure p2;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #9434 SHOW CREATE DATABASE information_schema;
 | 
						|
#
 | 
						|
show create database information_schema;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #11057 information_schema: columns table has some questionable contents
 | 
						|
# Bug #12301 information_schema: NUMERIC_SCALE must be 0 for integer columns
 | 
						|
#
 | 
						|
create table t1(f1 LONGBLOB, f2 LONGTEXT);
 | 
						|
select column_name,data_type,CHARACTER_OCTET_LENGTH,
 | 
						|
       CHARACTER_MAXIMUM_LENGTH
 | 
						|
from information_schema.columns
 | 
						|
where table_name='t1';
 | 
						|
drop table t1;
 | 
						|
create table t1(f1 tinyint, f2 SMALLINT, f3 mediumint, f4 int,
 | 
						|
                f5 BIGINT, f6 BIT, f7 bit(64));
 | 
						|
select column_name, NUMERIC_PRECISION, NUMERIC_SCALE
 | 
						|
from information_schema.columns
 | 
						|
where table_name='t1';
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #12127 triggers do not show in info_schema before they are used if set to the database
 | 
						|
#
 | 
						|
create table t1 (f1 integer);
 | 
						|
create trigger tr1 after insert on t1 for each row set @test_var=42;
 | 
						|
use information_schema;
 | 
						|
select trigger_schema, trigger_name from triggers where
 | 
						|
trigger_name='tr1';
 | 
						|
use test;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#12518 COLUMN_DEFAULT has wrong value if NOT NULL is set
 | 
						|
#
 | 
						|
create table t1 (a int not null, b int);
 | 
						|
use information_schema;
 | 
						|
select column_name, column_default from columns
 | 
						|
  where table_schema='test' and table_name='t1';
 | 
						|
use test;
 | 
						|
show columns from t1;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #12636: SHOW TABLE STATUS with where condition containing a subquery
 | 
						|
#             over information schema
 | 
						|
#
 | 
						|
 | 
						|
CREATE TABLE t1 (a int);
 | 
						|
CREATE TABLE t2 (b int);
 | 
						|
 | 
						|
--replace_column 8 # 12 # 13 #
 | 
						|
SHOW TABLE STATUS FROM test
 | 
						|
  WHERE name IN ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
 | 
						|
                    WHERE TABLE_SCHEMA='test' AND TABLE_TYPE='BASE TABLE');
 | 
						|
 | 
						|
DROP TABLE t1,t2;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #12905 show fields from view behaving erratically with current database
 | 
						|
#
 | 
						|
create table t1(f1 int);
 | 
						|
create view v1 (c) as select f1 from t1;
 | 
						|
connect (con5,localhost,root,,*NO-ONE*);
 | 
						|
select database();
 | 
						|
show fields from test.v1;
 | 
						|
connection default;
 | 
						|
drop view v1;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #9846 Inappropriate error displayed while dropping table from 'INFORMATION_SCHEMA'
 | 
						|
#
 | 
						|
--error 1044
 | 
						|
alter database information_schema;
 | 
						|
--error 1044
 | 
						|
drop database information_schema;
 | 
						|
--error 1044
 | 
						|
drop table information_schema.tables;
 | 
						|
--error 1044
 | 
						|
alter table information_schema.tables;
 | 
						|
#
 | 
						|
# Bug #9683 INFORMATION_SCH: Creation of temporary table allowed in Information_schema DB
 | 
						|
#
 | 
						|
use information_schema;
 | 
						|
--error 1044
 | 
						|
create temporary table schemata(f1 char(10));
 | 
						|
#
 | 
						|
# Bug #10708 SP's can use INFORMATION_SCHEMA as ROUTINE_SCHEMA
 | 
						|
#
 | 
						|
delimiter |;
 | 
						|
--error ER_BAD_DB_ERROR
 | 
						|
CREATE PROCEDURE p1 ()
 | 
						|
BEGIN
 | 
						|
  SELECT 'foo' FROM DUAL;
 | 
						|
END |
 | 
						|
delimiter ;|
 | 
						|
select  ROUTINE_NAME from routines;
 | 
						|
#
 | 
						|
# Bug #10734 Grant of privileges other than 'select' and 'create view' should fail on schema
 | 
						|
#
 | 
						|
--error 1044
 | 
						|
grant all on information_schema.* to 'user1'@'localhost';
 | 
						|
--error 1044
 | 
						|
grant select on information_schema.* to 'user1'@'localhost';
 | 
						|
 | 
						|
#
 | 
						|
# Bug#14089 FROM list subquery always fails when information_schema is current database
 | 
						|
#
 | 
						|
use test;
 | 
						|
create table t1(id int);
 | 
						|
insert into t1(id) values (1);
 | 
						|
select 1 from (select 1 from test.t1) a;
 | 
						|
use information_schema;
 | 
						|
select 1 from (select 1 from test.t1) a;
 | 
						|
use test;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#14476 `information_schema`.`TABLES`.`TABLE_TYPE` with empty value
 | 
						|
#
 | 
						|
create table t1 (f1 int(11));
 | 
						|
create view v1 as select * from t1;
 | 
						|
drop table t1;
 | 
						|
select table_type from information_schema.tables
 | 
						|
where table_name="v1";
 | 
						|
drop view v1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #14387 SHOW COLUMNS doesn't work on temporary tables
 | 
						|
# Bug #15224 SHOW INDEX from temporary table doesn't work
 | 
						|
# Bug #12770 DESC cannot display the info. about temporary table
 | 
						|
#
 | 
						|
create temporary table t1(f1 int, index(f1));
 | 
						|
show columns from t1;
 | 
						|
describe t1;
 | 
						|
show indexes from t1;
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#14271 I_S: columns has no size for (var)binary columns
 | 
						|
#
 | 
						|
create table t1(f1 binary(32), f2 varbinary(64));
 | 
						|
select character_maximum_length, character_octet_length
 | 
						|
from information_schema.columns where table_name='t1';
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#15533 crash, information_schema, function, view
 | 
						|
#
 | 
						|
CREATE TABLE t1 (f1 BIGINT, f2 VARCHAR(20), f3 BIGINT);
 | 
						|
INSERT INTO t1 SET f1 = 1, f2 = 'Schoenenbourg', f3 = 1;
 | 
						|
 | 
						|
CREATE FUNCTION func2() RETURNS BIGINT RETURN 1;
 | 
						|
 | 
						|
delimiter //;
 | 
						|
CREATE FUNCTION func1() RETURNS BIGINT
 | 
						|
BEGIN
 | 
						|
  RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS);
 | 
						|
END//
 | 
						|
delimiter ;//
 | 
						|
 | 
						|
CREATE VIEW v1 AS SELECT 1 FROM t1
 | 
						|
                    WHERE f3 = (SELECT func2 ());
 | 
						|
SELECT func1();
 | 
						|
DROP TABLE t1;
 | 
						|
DROP VIEW v1;
 | 
						|
DROP FUNCTION func1;
 | 
						|
DROP FUNCTION func2;
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema
 | 
						|
#
 | 
						|
select column_type, group_concat(table_schema, '.', table_name), count(*) as num
 | 
						|
from information_schema.columns where
 | 
						|
table_schema='information_schema' and
 | 
						|
(column_type = 'varchar(7)' or column_type = 'varchar(20)')
 | 
						|
group by column_type order by num;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH
 | 
						|
#
 | 
						|
create table t1(f1 char(1) not null, f2 char(9) not null)
 | 
						|
default character set utf8;
 | 
						|
select CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH from
 | 
						|
information_schema.columns where table_schema='test' and table_name = 't1';
 | 
						|
drop table t1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#18177 any access to INFORMATION_SCHEMA.ROUTINES crashes
 | 
						|
#
 | 
						|
use mysql;
 | 
						|
INSERT INTO `proc` VALUES ('test','','PROCEDURE','','SQL','CONTAINS_SQL',
 | 
						|
'NO','DEFINER','','','BEGIN\r\n  \r\nEND','root@%','2006-03-02 18:40:03',
 | 
						|
'2006-03-02 18:40:03','','');
 | 
						|
select routine_name from information_schema.routines;
 | 
						|
delete from proc where name='';
 | 
						|
use test;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#16681 information_schema shows forbidden VIEW details
 | 
						|
#
 | 
						|
grant select on test.* to mysqltest_1@localhost;
 | 
						|
create table t1 (id int);
 | 
						|
create view v1 as select * from t1;
 | 
						|
create definer = mysqltest_1@localhost
 | 
						|
sql security definer view v2 as select 1;
 | 
						|
 | 
						|
connect (con16681,localhost,mysqltest_1,,test);
 | 
						|
connection con16681;
 | 
						|
 | 
						|
select * from information_schema.views
 | 
						|
where table_name='v1' or table_name='v2';
 | 
						|
connection default;
 | 
						|
drop view v1, v2;
 | 
						|
drop table t1;
 | 
						|
drop user mysqltest_1@localhost;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#19599 duplication of information_schema column value in a CONCAT expr with user var
 | 
						|
#
 | 
						|
set @a:= '.';
 | 
						|
create table t1(f1 char(5));
 | 
						|
create table t2(f1 char(5));
 | 
						|
select concat(@a, table_name), @a, table_name
 | 
						|
from information_schema.tables where table_schema = 'test';
 | 
						|
drop table t1,t2;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#20230: routine_definition is not null
 | 
						|
#
 | 
						|
--disable_warnings
 | 
						|
DROP PROCEDURE IF EXISTS p1;
 | 
						|
DROP FUNCTION IF EXISTS f1;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
CREATE PROCEDURE p1() SET @a= 1;
 | 
						|
CREATE FUNCTION f1() RETURNS INT RETURN @a + 1;
 | 
						|
CREATE USER mysql_bug20230@localhost;
 | 
						|
GRANT EXECUTE ON PROCEDURE p1 TO mysql_bug20230@localhost;
 | 
						|
GRANT EXECUTE ON FUNCTION f1 TO mysql_bug20230@localhost;
 | 
						|
 | 
						|
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
 | 
						|
SHOW CREATE PROCEDURE p1;
 | 
						|
SHOW CREATE FUNCTION f1;
 | 
						|
 | 
						|
connect (conn1, localhost, mysql_bug20230,,);
 | 
						|
 | 
						|
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES;
 | 
						|
SHOW CREATE PROCEDURE p1;
 | 
						|
SHOW CREATE FUNCTION f1;
 | 
						|
CALL p1();
 | 
						|
SELECT f1();
 | 
						|
 | 
						|
disconnect conn1;
 | 
						|
connection default;
 | 
						|
 | 
						|
DROP FUNCTION f1;
 | 
						|
DROP PROCEDURE p1;
 | 
						|
DROP USER mysql_bug20230@localhost;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#18925: subqueries with MIN/MAX functions on INFORMARTION_SCHEMA 
 | 
						|
#
 | 
						|
 | 
						|
SELECT t.table_name, c1.column_name
 | 
						|
  FROM information_schema.tables t
 | 
						|
       INNER JOIN
 | 
						|
       information_schema.columns c1
 | 
						|
       ON t.table_schema = c1.table_schema AND
 | 
						|
          t.table_name = c1.table_name
 | 
						|
  WHERE t.table_schema = 'information_schema' AND
 | 
						|
        c1.ordinal_position =
 | 
						|
        ( SELECT COALESCE(MIN(c2.ordinal_position),1)
 | 
						|
            FROM information_schema.columns c2
 | 
						|
            WHERE c2.table_schema = t.table_schema AND
 | 
						|
                  c2.table_name = t.table_name AND
 | 
						|
                  c2.column_name LIKE '%SCHEMA%'
 | 
						|
        );
 | 
						|
SELECT t.table_name, c1.column_name
 | 
						|
  FROM information_schema.tables t
 | 
						|
       INNER JOIN
 | 
						|
       information_schema.columns c1
 | 
						|
       ON t.table_schema = c1.table_schema AND
 | 
						|
          t.table_name = c1.table_name
 | 
						|
  WHERE t.table_schema = 'information_schema' AND
 | 
						|
        c1.ordinal_position =
 | 
						|
        ( SELECT COALESCE(MIN(c2.ordinal_position),1)
 | 
						|
            FROM information_schema.columns c2
 | 
						|
            WHERE c2.table_schema = 'information_schema' AND
 | 
						|
                  c2.table_name = t.table_name AND
 | 
						|
                  c2.column_name LIKE '%SCHEMA%'
 | 
						|
        );
 | 
						|
 | 
						|
#
 | 
						|
# Bug#21231: query with a simple non-correlated subquery over
 | 
						|
#            INFORMARTION_SCHEMA.TABLES 
 | 
						|
#
 | 
						|
 | 
						|
SELECT MAX(table_name) FROM information_schema.tables;
 | 
						|
SELECT table_name from information_schema.tables
 | 
						|
  WHERE table_name=(SELECT MAX(table_name)
 | 
						|
                      FROM information_schema.tables);
 | 
						|
#
 | 
						|
# Bug #23037: Bug in field "Default" of query "SHOW COLUMNS FROM table"
 | 
						|
#
 | 
						|
# Note, MyISAM/InnoDB can't take more that 65532 chars, because the row
 | 
						|
# size is limited to 65535 bytes (BLOBs not counted)
 | 
						|
#
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS bug23037;
 | 
						|
DROP FUNCTION IF EXISTS get_value;
 | 
						|
--enable_warnings
 | 
						|
--disable_query_log
 | 
						|
DELIMITER |;
 | 
						|
CREATE FUNCTION get_value()
 | 
						|
  RETURNS TEXT
 | 
						|
  DETERMINISTIC
 | 
						|
BEGIN
 | 
						|
  DECLARE col1, col2, col3, col4, col6 CHAR(255);
 | 
						|
  DECLARE default_val VARCHAR(65532);
 | 
						|
  DECLARE done INT DEFAULT 0;
 | 
						|
  DECLARE cur1 CURSOR FOR SHOW COLUMNS FROM bug23037;
 | 
						|
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 | 
						|
  OPEN cur1;
 | 
						|
  FETCH cur1 INTO col1, col2, col3, col4, default_val, col6;
 | 
						|
  CLOSE cur1;
 | 
						|
  RETURN default_val;
 | 
						|
end|
 | 
						|
DELIMITER ;|
 | 
						|
 | 
						|
let $body=`SELECT REPEAT('A', 65532)`;
 | 
						|
eval CREATE TABLE bug23037(fld1 VARCHAR(65532) CHARACTER SET latin1 DEFAULT "$body");
 | 
						|
--enable_query_log
 | 
						|
 | 
						|
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
 | 
						|
 | 
						|
SELECT MD5(get_value());
 | 
						|
 | 
						|
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT), COLUMN_DEFAULT=get_value() FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
 | 
						|
 | 
						|
DROP TABLE bug23037;
 | 
						|
DROP FUNCTION get_value;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#22413: EXPLAIN SELECT FROM view with ORDER BY yield server crash
 | 
						|
#
 | 
						|
create view v1 as
 | 
						|
select table_schema as object_schema,
 | 
						|
       table_name   as object_name,
 | 
						|
       table_type   as object_type
 | 
						|
from information_schema.tables
 | 
						|
order by object_schema;
 | 
						|
explain select * from v1;
 | 
						|
explain select * from (select table_name from information_schema.tables) as a;
 | 
						|
drop view v1;
 | 
						|
 | 
						|
#
 | 
						|
# Bug#23299 Some queries against INFORMATION_SCHEMA with subqueries fail
 | 
						|
#
 | 
						|
create table t1 (f1 int(11));
 | 
						|
create table t2 (f1 int(11), f2 int(11));
 | 
						|
 | 
						|
select table_name from information_schema.tables
 | 
						|
where table_schema = 'test' and table_name not in
 | 
						|
(select table_name from information_schema.columns
 | 
						|
 where table_schema = 'test' and column_name = 'f3');
 | 
						|
drop table t1,t2;
 | 
						|
 | 
						|
 | 
						|
#
 | 
						|
# Bug#24630  Subselect query crashes mysqld
 | 
						|
#
 | 
						|
select 1 as f1 from information_schema.tables  where "CHARACTER_SETS"=
 | 
						|
(select cast(table_name as char)  from information_schema.tables
 | 
						|
 order by table_name limit 1) limit 1;
 | 
						|
 | 
						|
select t.table_name, group_concat(t.table_schema, '.', t.table_name),
 | 
						|
       count(*) as num1
 | 
						|
from information_schema.tables t
 | 
						|
inner join information_schema.columns c1
 | 
						|
on t.table_schema = c1.table_schema AND t.table_name = c1.table_name
 | 
						|
where t.table_schema = 'information_schema' and
 | 
						|
        c1.ordinal_position =
 | 
						|
        (select isnull(c2.column_type) -
 | 
						|
         isnull(group_concat(c2.table_schema, '.', c2.table_name)) +
 | 
						|
         count(*) as num
 | 
						|
         from information_schema.columns c2 where
 | 
						|
         c2.table_schema='information_schema' and
 | 
						|
         (c2.column_type = 'varchar(7)' or c2.column_type = 'varchar(20)')
 | 
						|
          group by c2.column_type order by num limit 1)
 | 
						|
group by t.table_name order by num1, t.table_name;
 | 
						|
 | 
						|
--echo End of 5.0 tests.
 | 
						|
#
 | 
						|
# Show engines
 | 
						|
#
 | 
						|
 | 
						|
select * from information_schema.engines WHERE ENGINE="MyISAM";
 | 
						|
 | 
						|
#
 | 
						|
# INFORMATION_SCHEMA.PROCESSLIST
 | 
						|
#
 | 
						|
 | 
						|
grant select on *.* to user3148@localhost;
 | 
						|
connect (con3148,localhost,user3148,,test);
 | 
						|
connection con3148;
 | 
						|
select user,db from information_schema.processlist;
 | 
						|
connection default;
 | 
						|
drop user user3148@localhost;
 | 
						|
 | 
						|
#
 | 
						|
# Bug #26174 Server Crash: INSERT ... SELECT ... FROM I_S.GLOBAL_STATUS
 | 
						|
# in Event (see also openssl_1.test)
 | 
						|
#
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS server_status;
 | 
						|
DROP EVENT IF EXISTS event_status;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
SET GLOBAL event_scheduler=1;
 | 
						|
 | 
						|
DELIMITER $$;
 | 
						|
 | 
						|
CREATE EVENT event_status
 | 
						|
 ON SCHEDULE AT NOW()
 | 
						|
 ON COMPLETION NOT PRESERVE
 | 
						|
 DO
 | 
						|
BEGIN
 | 
						|
  CREATE TABLE server_status
 | 
						|
  SELECT variable_name
 | 
						|
  FROM information_schema.global_status
 | 
						|
  WHERE variable_name LIKE 'ABORTED_CONNECTS' OR
 | 
						|
  variable_name LIKE 'BINLOG_CACHE_DISK_USE';
 | 
						|
END$$
 | 
						|
 | 
						|
DELIMITER ;$$
 | 
						|
 | 
						|
let $wait_condition=select count(*) = 0 from information_schema.events where event_name='event_status';
 | 
						|
--source include/wait_condition.inc
 | 
						|
 | 
						|
SELECT variable_name FROM server_status;
 | 
						|
 | 
						|
DROP TABLE server_status;
 | 
						|
SET GLOBAL event_scheduler=0;
 | 
						|
 | 
						|
--echo End of 5.1 tests.
 |