information_schema.result 87.1 KB
Newer Older
1 2
set global sql_mode="";
set local sql_mode="";
unknown's avatar
unknown committed
3 4
DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
DROP VIEW IF EXISTS v1;
5 6 7
show variables where variable_name like "skip_show_database";
Variable_name	Value
skip_show_database	OFF
8 9
grant select, update, execute on test.* to mysqltest_2@localhost;
grant select, update on test.* to mysqltest_1@localhost;
10 11
create user mysqltest_3@localhost;
create user mysqltest_3;
12
select * from information_schema.SCHEMATA where schema_name > 'm';
13
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
14 15
def	mtr	latin1	latin1_swedish_ci	NULL
def	mysql	latin1	latin1_swedish_ci	NULL
Marc Alff's avatar
Marc Alff committed
16
def	performance_schema	utf8	utf8_general_ci	NULL
17
def	test	latin1	latin1_swedish_ci	NULL
18 19
select schema_name from information_schema.schemata;
schema_name
20
information_schema
unknown's avatar
unknown committed
21
mtr
22
mysql
Marc Alff's avatar
Marc Alff committed
23
performance_schema
24 25 26 27 28 29
test
show databases like 't%';
Database (t%)
test
show databases;
Database
30
information_schema
unknown's avatar
unknown committed
31
mtr
32
mysql
Marc Alff's avatar
Marc Alff committed
33
performance_schema
34
test
35 36
show databases where `database` = 't%';
Database
37 38
create database mysqltest;
create table mysqltest.t1(a int, b VARCHAR(30), KEY string_data (b));
39 40
create table test.t2(a int);
create table t3(a int, KEY a_data (a));
41
create table mysqltest.t4(a int);
42 43
create table t5 (id int auto_increment primary key);
insert into t5 values (10);
44 45 46
create view v1 (c) as
SELECT table_name FROM information_schema.TABLES
WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND
47
table_name not like 'innodb_%' AND
Sergei Golubchik's avatar
Sergei Golubchik committed
48
table_name not like 'xtradb_%';
49 50
select * from v1;
c
51
ALL_PLUGINS
Sergei Golubchik's avatar
Sergei Golubchik committed
52
APPLICABLE_ROLES
53
CHARACTER_SETS
54
CLIENT_STATISTICS
55 56
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
57 58
COLUMNS
COLUMN_PRIVILEGES
Sergei Golubchik's avatar
Sergei Golubchik committed
59
ENABLED_ROLES
unknown's avatar
unknown committed
60
ENGINES
61
EVENTS
unknown's avatar
unknown committed
62
FILES
63
GEOMETRY_COLUMNS
64 65
GLOBAL_STATUS
GLOBAL_VARIABLES
66
INDEX_STATISTICS
67
KEY_CACHES
68
KEY_COLUMN_USAGE
Sergey Glukhov's avatar
Sergey Glukhov committed
69
PARAMETERS
70
PARTITIONS
unknown's avatar
unknown committed
71
PLUGINS
72
PROCESSLIST
73
PROFILING
74
REFERENTIAL_CONSTRAINTS
75
ROUTINES
76
SCHEMATA
77
SCHEMA_PRIVILEGES
78 79
SESSION_STATUS
SESSION_VARIABLES
80
SPATIAL_REF_SYS
81
STATISTICS
82
SYSTEM_VARIABLES
83
TABLES
84
TABLESPACES
85
TABLE_CONSTRAINTS
86
TABLE_PRIVILEGES
87
TABLE_STATISTICS
88
TRIGGERS
89
USER_PRIVILEGES
90
USER_STATISTICS
91
VIEWS
92
column_stats
93 94
columns_priv
db
95
event
96
func
97
general_log
unknown's avatar
unknown committed
98
gtid_slave_pos
99 100 101 102 103
help_category
help_keyword
help_relation
help_topic
host
104
index_stats
105
plugin
106
proc
107
procs_priv
108
proxies_priv
109
roles_mapping
unknown's avatar
unknown committed
110
servers
111
slow_log
unknown's avatar
unknown committed
112 113 114 115 116
t1
t2
t3
t4
t5
117
table_stats
118 119 120 121 122 123 124 125 126
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user
v1
select c,table_name from v1 
127 128 129 130
inner join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
c	table_name
TABLES	TABLES
131
TABLESPACES	TABLESPACES
132
TABLE_CONSTRAINTS	TABLE_CONSTRAINTS
133
TABLE_PRIVILEGES	TABLE_PRIVILEGES
134
TABLE_STATISTICS	TABLE_STATISTICS
135
TRIGGERS	TRIGGERS
136 137 138 139 140
t1	t1
t2	t2
t3	t3
t4	t4
t5	t5
141
table_stats	table_stats
142 143 144 145 146 147 148
tables_priv	tables_priv
time_zone	time_zone
time_zone_leap_second	time_zone_leap_second
time_zone_name	time_zone_name
time_zone_transition	time_zone_transition
time_zone_transition_type	time_zone_transition_type
select c,table_name from v1 
149 150 151
left join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
c	table_name
152
TABLES	TABLES
153
TABLESPACES	TABLESPACES
154
TABLE_CONSTRAINTS	TABLE_CONSTRAINTS
155
TABLE_PRIVILEGES	TABLE_PRIVILEGES
156
TABLE_STATISTICS	TABLE_STATISTICS
157
TRIGGERS	TRIGGERS
158 159 160 161 162
t1	t1
t2	t2
t3	t3
t4	t4
t5	t5
163
table_stats	table_stats
164 165 166 167 168 169 170 171 172 173
tables_priv	tables_priv
time_zone	time_zone
time_zone_leap_second	time_zone_leap_second
time_zone_name	time_zone_name
time_zone_transition	time_zone_transition
time_zone_transition_type	time_zone_transition_type
select c, v2.table_name from v1
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
where v1.c like "t%";
c	table_name
174
TABLES	TABLES
175
TABLESPACES	TABLESPACES
176
TABLE_CONSTRAINTS	TABLE_CONSTRAINTS
177
TABLE_PRIVILEGES	TABLE_PRIVILEGES
178
TABLE_STATISTICS	TABLE_STATISTICS
179
TRIGGERS	TRIGGERS
180 181 182 183 184
t1	t1
t2	t2
t3	t3
t4	t4
t5	t5
185
table_stats	table_stats
186 187 188 189 190 191 192
tables_priv	tables_priv
time_zone	time_zone
time_zone_leap_second	time_zone_leap_second
time_zone_name	time_zone_name
time_zone_transition	time_zone_transition
time_zone_transition_type	time_zone_transition_type
select table_name from information_schema.TABLES
193
where table_schema = "mysqltest" and table_name like "t%";
194 195 196
table_name
t1
t4
197
select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
198 199
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	NON_UNIQUE	INDEX_SCHEMA	INDEX_NAME	SEQ_IN_INDEX	COLUMN_NAME	COLLATION	CARDINALITY	SUB_PART	PACKED	NULLABLE	INDEX_TYPE	COMMENT	INDEX_COMMENT
def	mysqltest	t1	1	mysqltest	string_data	1	b	A	NULL	NULL	NULL	YES	BTREE		
200
show keys from t3 where Key_name = "a_data";
201 202
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment	Index_comment
t3	1	a_data	1	a	A	NULL	NULL	NULL	YES	BTREE		
203 204 205 206
show tables like 't%';
Tables_in_test (t%)
t2
t3
207
t5
208 209
show table status;
Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
210 211
t2	MyISAM	10	Fixed	0	0	0	#	1024	0	NULL	#	#	NULL	latin1_swedish_ci	NULL		
t3	MyISAM	10	Fixed	0	0	0	#	1024	0	NULL	#	#	NULL	latin1_swedish_ci	NULL		
212
t5	MyISAM	10	Fixed	1	7	7	#	2048	0	11	#	#	NULL	latin1_swedish_ci	NULL		
213
v1	NULL	NULL	NULL	NULL	NULL	NULL	#	NULL	NULL	NULL	#	#	NULL	NULL	NULL	NULL	VIEW
214 215 216 217 218
show full columns from t3 like "a%";
Field	Type	Collation	Null	Key	Default	Extra	Privileges	Comment
a	int(11)	NULL	YES	MUL	NULL		select,insert,update,references	
show full columns from mysql.db like "Insert%";
Field	Type	Collation	Null	Key	Default	Extra	Privileges	Comment
219
Insert_priv	enum('N','Y')	utf8_general_ci	NO		N		select,insert,update,references	
220 221
show full columns from v1;
Field	Type	Collation	Null	Key	Default	Extra	Privileges	Comment
222
c	varchar(64)	utf8_general_ci	NO				select,insert,update,references	
223 224
select * from information_schema.COLUMNS where table_name="t1"
and column_name= "a";
225
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	DATETIME_PRECISION	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE	COLUMN_KEY	EXTRA	PRIVILEGES	COLUMN_COMMENT
Sergei Golubchik's avatar
Sergei Golubchik committed
226
def	mysqltest	t1	a	1	NULL	YES	int	NULL	NULL	10	0	NULL	NULL	NULL	int(11)			select,insert,update,references	
227 228 229
show columns from mysqltest.t1 where field like "%a%";
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
230
create view mysqltest.v1 (c) as select a from mysqltest.t1;
231
grant select (a) on mysqltest.t1 to mysqltest_2@localhost;
232
grant select on mysqltest.v1 to mysqltest_3;
233 234
connect  user3,localhost,mysqltest_2,,;
connection user3;
235
select table_name, column_name, privileges from information_schema.columns
236 237 238 239
where table_schema = 'mysqltest' and table_name = 't1';
table_name	column_name	privileges
t1	a	select
show columns from mysqltest.t1;
240 241
Field	Type	Null	Key	Default	Extra
a	int(11)	YES		NULL	
242 243
connect  user4,localhost,mysqltest_3,,mysqltest;
connection user4;
244 245 246 247
select table_name, column_name, privileges from information_schema.columns
where table_schema = 'mysqltest' and table_name = 'v1';
table_name	column_name	privileges
v1	c	select
248
explain select * from v1;
249
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
250 251
connection default;
disconnect user4;
252
drop view v1, mysqltest.v1;
253
drop tables mysqltest.t4, mysqltest.t1, t2, t3, t5;
254
drop database mysqltest;
255 256
select * from information_schema.CHARACTER_SETS
where CHARACTER_SET_NAME like 'latin1%';
257
CHARACTER_SET_NAME	DEFAULT_COLLATE_NAME	DESCRIPTION	MAXLEN
unknown's avatar
unknown committed
258
latin1	latin1_swedish_ci	cp1252 West European	1
259 260
SHOW CHARACTER SET LIKE 'latin1%';
Charset	Description	Default collation	Maxlen
unknown's avatar
unknown committed
261
latin1	cp1252 West European	latin1_swedish_ci	1
262
SHOW CHARACTER SET WHERE charset like 'latin1%';
263
Charset	Description	Default collation	Maxlen
unknown's avatar
unknown committed
264
latin1	cp1252 West European	latin1_swedish_ci	1
265 266
select * from information_schema.COLLATIONS
where COLLATION_NAME like 'latin1%';
267
COLLATION_NAME	CHARACTER_SET_NAME	ID	IS_DEFAULT	IS_COMPILED	SORTLEN
268 269 270 271 272 273 274 275
latin1_german1_ci	latin1	5		#	1
latin1_swedish_ci	latin1	8	Yes	#	1
latin1_danish_ci	latin1	15		#	1
latin1_german2_ci	latin1	31		#	2
latin1_bin	latin1	47		#	1
latin1_general_ci	latin1	48		#	1
latin1_general_cs	latin1	49		#	1
latin1_spanish_ci	latin1	94		#	1
276 277
latin1_swedish_nopad_ci	latin1	1032		#	1
latin1_nopad_bin	latin1	1071		#	1
278 279
SHOW COLLATION LIKE 'latin1%';
Collation	Charset	Id	Default	Compiled	Sortlen
280 281 282 283 284 285 286 287
latin1_german1_ci	latin1	5		#	1
latin1_swedish_ci	latin1	8	Yes	#	1
latin1_danish_ci	latin1	15		#	1
latin1_german2_ci	latin1	31		#	2
latin1_bin	latin1	47		#	1
latin1_general_ci	latin1	48		#	1
latin1_general_cs	latin1	49		#	1
latin1_spanish_ci	latin1	94		#	1
288 289
latin1_swedish_nopad_ci	latin1	1032		#	1
latin1_nopad_bin	latin1	1071		#	1
290
SHOW COLLATION WHERE collation like 'latin1%';
291
Collation	Charset	Id	Default	Compiled	Sortlen
292 293 294 295 296 297 298 299
latin1_german1_ci	latin1	5		#	1
latin1_swedish_ci	latin1	8	Yes	#	1
latin1_danish_ci	latin1	15		#	1
latin1_german2_ci	latin1	31		#	2
latin1_bin	latin1	47		#	1
latin1_general_ci	latin1	48		#	1
latin1_general_cs	latin1	49		#	1
latin1_spanish_ci	latin1	94		#	1
300 301
latin1_swedish_nopad_ci	latin1	1032		#	1
latin1_nopad_bin	latin1	1071		#	1
302 303 304 305 306 307 308 309 310 311 312
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
where COLLATION_NAME like 'latin1%';
COLLATION_NAME	CHARACTER_SET_NAME
latin1_german1_ci	latin1
latin1_swedish_ci	latin1
latin1_danish_ci	latin1
latin1_german2_ci	latin1
latin1_bin	latin1
latin1_general_ci	latin1
latin1_general_cs	latin1
latin1_spanish_ci	latin1
313 314
latin1_swedish_nopad_ci	latin1
latin1_nopad_bin	latin1
unknown's avatar
unknown committed
315 316 317
drop procedure if exists sel2;
drop function if exists sub1;
drop function if exists sub2;
318 319 320 321 322 323 324
create function sub1(i int) returns int
return i+1;
create procedure sel2()
begin
select * from t1;
select * from t2;
end|
325
select parameter_style, sql_data_access, dtd_identifier
326
from information_schema.routines where routine_schema='test';
327 328
parameter_style	sql_data_access	dtd_identifier
SQL	CONTAINS SQL	NULL
unknown's avatar
unknown committed
329
SQL	CONTAINS SQL	int(11)
330
show procedure status where db='test';
unknown's avatar
unknown committed
331 332
Db	Name	Type	Definer	Modified	Created	Security_type	Comment	character_set_client	collation_connection	Database Collation
test	sel2	PROCEDURE	root@localhost	#	#	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
333
show function status where db='test';
unknown's avatar
unknown committed
334 335
Db	Name	Type	Definer	Modified	Created	Security_type	Comment	character_set_client	collation_connection	Database Collation
test	sub1	FUNCTION	root@localhost	#	#	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
336 337
select a.ROUTINE_NAME from information_schema.ROUTINES a,
information_schema.SCHEMATA b where
338
a.ROUTINE_SCHEMA = b.SCHEMA_NAME AND b.SCHEMA_NAME='test';
339 340 341 342 343 344 345
ROUTINE_NAME
sel2
sub1
explain select a.ROUTINE_NAME from information_schema.ROUTINES a,
information_schema.SCHEMATA b where
a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
346
1	SIMPLE	#	ALL	NULL	NULL	NULL	NULL	NULL	
347
1	SIMPLE	#	ALL	NULL	NULL	NULL	NULL	NULL	Using where; Using join buffer (flat, BNL join)
348
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
349
mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8) AND a.ROUTINE_SCHEMA='test' order by 1;
350 351
ROUTINE_NAME	name
sel2	sel2
unknown's avatar
unknown committed
352
sub1	sub1
353
select count(*) from information_schema.ROUTINES where routine_schema='test';
354 355
count(*)
2
356
create view v1 as select routine_schema, routine_name from information_schema.routines where routine_schema='test'
357 358 359 360 361 362
order by routine_schema, routine_name;
select * from v1;
routine_schema	routine_name
test	sel2
test	sub1
drop view v1;
363 364
connect  user1,localhost,mysqltest_1,,;
connection user1;
365 366 367 368
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME	ROUTINE_DEFINITION
show create function sub1;
ERROR 42000: FUNCTION sub1 does not exist
369
connection user3;
370 371
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME	ROUTINE_DEFINITION
372 373
sel2	NULL
sub1	NULL
374
connection default;
375
grant all privileges on test.* to mysqltest_1@localhost;
376 377
connect  user2,localhost,mysqltest_1,,;
connection user2;
378 379
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME	ROUTINE_DEFINITION
380 381
sel2	NULL
sub1	NULL
382 383 384 385
create function sub2(i int) returns int
return i+1;
select ROUTINE_NAME, ROUTINE_DEFINITION from information_schema.ROUTINES;
ROUTINE_NAME	ROUTINE_DEFINITION
386 387
sel2	NULL
sub1	NULL
388 389
sub2	return i+1
show create procedure sel2;
unknown's avatar
unknown committed
390 391
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
sel2		NULL	latin1	latin1_swedish_ci	latin1_swedish_ci
392
show create function sub1;
unknown's avatar
unknown committed
393 394
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
sub1		NULL	latin1	latin1_swedish_ci	latin1_swedish_ci
395
show create function sub2;
unknown's avatar
unknown committed
396
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
397
sub2		CREATE DEFINER=`mysqltest_1`@`localhost` FUNCTION `sub2`(i int) RETURNS int(11)
unknown's avatar
unknown committed
398
return i+1	latin1	latin1_swedish_ci	latin1_swedish_ci
399
show function status like "sub2";
unknown's avatar
unknown committed
400 401
Db	Name	Type	Definer	Modified	Created	Security_type	Comment	character_set_client	collation_connection	Database Collation
test	sub2	FUNCTION	mysqltest_1@localhost	#	#	DEFINER		latin1	latin1_swedish_ci	latin1_swedish_ci
402 403 404
connection default;
disconnect user1;
disconnect user3;
405 406
drop function sub2;
show create procedure sel2;
unknown's avatar
unknown committed
407
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
408
sel2		CREATE DEFINER=`root`@`localhost` PROCEDURE `sel2`()
409 410 411
begin
select * from t1;
select * from t2;
unknown's avatar
unknown committed
412
end	latin1	latin1_swedish_ci	latin1_swedish_ci
unknown's avatar
unknown committed
413
create view v0 (c) as select schema_name from information_schema.schemata;
414 415
select * from v0;
c
416
information_schema
unknown's avatar
unknown committed
417
mtr
418
mysql
Marc Alff's avatar
Marc Alff committed
419
performance_schema
420 421 422
test
explain select * from v0;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
423
1	SIMPLE	#	ALL	NULL	NULL	NULL	NULL	NULL	
unknown's avatar
unknown committed
424
create view v1 (c) as select table_name from information_schema.tables
425 426 427 428
where table_name="v1";
select * from v1;
c
v1
unknown's avatar
unknown committed
429
create view v2 (c) as select column_name from information_schema.columns
430 431 432 433
where table_name="v2";
select * from v2;
c
c
unknown's avatar
unknown committed
434
create view v3 (c) as select CHARACTER_SET_NAME from information_schema.character_sets
435 436 437 438
where CHARACTER_SET_NAME like "latin1%";
select * from v3;
c
latin1
unknown's avatar
unknown committed
439
create view v4 (c) as select COLLATION_NAME from information_schema.collations
440 441 442 443 444 445 446 447 448 449 450
where COLLATION_NAME like "latin1%";
select * from v4;
c
latin1_german1_ci
latin1_swedish_ci
latin1_danish_ci
latin1_german2_ci
latin1_bin
latin1_general_ci
latin1_general_cs
latin1_spanish_ci
451 452
latin1_swedish_nopad_ci
latin1_nopad_bin
453
show keys from v4;
454
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment	Index_comment
unknown's avatar
unknown committed
455
select * from information_schema.views where TABLE_NAME like "v%";
456 457
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	VIEW_DEFINITION	CHECK_OPTION	IS_UPDATABLE	DEFINER	SECURITY_TYPE	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	ALGORITHM
def	test	v0	select `information_schema`.`schemata`.`SCHEMA_NAME` AS `c` from `information_schema`.`schemata`	NONE	NO	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
458 459 460 461
def	test	v1	select `information_schema`.`tables`.`TABLE_NAME` AS `c` from `information_schema`.`tables` where `information_schema`.`tables`.`TABLE_NAME` = 'v1'	NONE	NO	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
def	test	v2	select `information_schema`.`columns`.`COLUMN_NAME` AS `c` from `information_schema`.`columns` where `information_schema`.`columns`.`TABLE_NAME` = 'v2'	NONE	NO	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
def	test	v3	select `information_schema`.`character_sets`.`CHARACTER_SET_NAME` AS `c` from `information_schema`.`character_sets` where `information_schema`.`character_sets`.`CHARACTER_SET_NAME` like 'latin1%'	NONE	NO	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
def	test	v4	select `information_schema`.`collations`.`COLLATION_NAME` AS `c` from `information_schema`.`collations` where `information_schema`.`collations`.`COLLATION_NAME` like 'latin1%'	NONE	NO	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
462 463 464 465 466 467 468
drop view v0, v1, v2, v3, v4;
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%';
GRANTEE	TABLE_CATALOG	PRIVILEGE_TYPE	IS_GRANTABLE
469
'mysqltest_1'@'localhost'	def	USAGE	NO
470 471
select * from information_schema.SCHEMA_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	PRIVILEGE_TYPE	IS_GRANTABLE
472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489
'mysqltest_1'@'localhost'	def	test	SELECT	YES
'mysqltest_1'@'localhost'	def	test	INSERT	YES
'mysqltest_1'@'localhost'	def	test	UPDATE	YES
'mysqltest_1'@'localhost'	def	test	DELETE	YES
'mysqltest_1'@'localhost'	def	test	CREATE	YES
'mysqltest_1'@'localhost'	def	test	DROP	YES
'mysqltest_1'@'localhost'	def	test	REFERENCES	YES
'mysqltest_1'@'localhost'	def	test	INDEX	YES
'mysqltest_1'@'localhost'	def	test	ALTER	YES
'mysqltest_1'@'localhost'	def	test	CREATE TEMPORARY TABLES	YES
'mysqltest_1'@'localhost'	def	test	LOCK TABLES	YES
'mysqltest_1'@'localhost'	def	test	EXECUTE	YES
'mysqltest_1'@'localhost'	def	test	CREATE VIEW	YES
'mysqltest_1'@'localhost'	def	test	SHOW VIEW	YES
'mysqltest_1'@'localhost'	def	test	CREATE ROUTINE	YES
'mysqltest_1'@'localhost'	def	test	ALTER ROUTINE	YES
'mysqltest_1'@'localhost'	def	test	EVENT	YES
'mysqltest_1'@'localhost'	def	test	TRIGGER	YES
490 491
select * from information_schema.TABLE_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
492 493 494
'mysqltest_1'@'localhost'	def	test	t1	SELECT	NO
'mysqltest_1'@'localhost'	def	test	t1	INSERT	NO
'mysqltest_1'@'localhost'	def	test	t1	UPDATE	NO
495 496
select * from information_schema.COLUMN_PRIVILEGES where grantee like '%mysqltest_1%';
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
497 498 499 500
'mysqltest_1'@'localhost'	def	test	t1	a	SELECT	NO
'mysqltest_1'@'localhost'	def	test	t1	a	INSERT	NO
'mysqltest_1'@'localhost'	def	test	t1	a	UPDATE	NO
'mysqltest_1'@'localhost'	def	test	t1	a	REFERENCES	NO
501 502 503 504
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%';
505 506 507 508 509
flush privileges;
drop table t1;
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);
510
Warnings:
511
Note	1831	Duplicate index `key_1`. This is deprecated and will be disallowed in a future release
512
alter table t1 add constraint constraint_2 unique key_2(a);
513
Warnings:
514
Note	1831	Duplicate index `key_2`. This is deprecated and will be disallowed in a future release
515 516 517
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
518
  `a` int(11) NOT NULL,
519
  PRIMARY KEY (`a`),
520 521 522 523 524 525
  UNIQUE KEY `constraint_1` (`a`),
  UNIQUE KEY `key_1` (`a`),
  UNIQUE KEY `key_2` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_SCHEMA= "test";
526
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_SCHEMA	TABLE_NAME	CONSTRAINT_TYPE
527 528 529 530
def	test	PRIMARY	test	t1	PRIMARY KEY
def	test	constraint_1	test	t1	UNIQUE
def	test	key_1	test	t1	UNIQUE
def	test	key_2	test	t1	UNIQUE
531 532
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_SCHEMA= "test";
533
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	POSITION_IN_UNIQUE_CONSTRAINT	REFERENCED_TABLE_SCHEMA	REFERENCED_TABLE_NAME	REFERENCED_COLUMN_NAME
534 535 536 537
def	test	PRIMARY	def	test	t1	a	1	NULL	NULL	NULL	NULL
def	test	constraint_1	def	test	t1	a	1	NULL	NULL	NULL	NULL
def	test	key_1	def	test	t1	a	1	NULL	NULL	NULL	NULL
def	test	key_2	def	test	t1	a	1	NULL	NULL	NULL	NULL
538
connection user2;
539 540 541 542 543
select table_name from information_schema.TABLES where table_schema like "test%";
table_name
t1
select table_name,column_name from information_schema.COLUMNS where table_schema like "test%";
table_name	column_name
544
t1	a
545 546 547 548
select ROUTINE_NAME from information_schema.ROUTINES;
ROUTINE_NAME
sel2
sub1
549 550
disconnect user2;
connection default;
551 552 553 554
delete from mysql.user where user='mysqltest_1';
drop table t1;
drop procedure sel2;
drop function sub1;
unknown's avatar
unknown committed
555 556 557 558 559
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;
560 561 562 563
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	VIEW_DEFINITION	CHECK_OPTION	IS_UPDATABLE	DEFINER	SECURITY_TYPE	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	ALGORITHM
def	test	v1	select `test`.`t1`.`a` AS `c` from `test`.`t1`	CASCADED	YES	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
def	test	v2	select `test`.`t1`.`a` AS `c` from `test`.`t1`	LOCAL	YES	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
def	test	v3	select `test`.`t1`.`a` AS `c` from `test`.`t1`	CASCADED	YES	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
unknown's avatar
unknown committed
564 565 566
grant select (a) on test.t1 to joe@localhost with grant option;
select * from INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
567
'joe'@'localhost'	def	test	t1	a	SELECT	YES
unknown's avatar
unknown committed
568 569 570 571 572 573 574 575 576
select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES;
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
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;
577 578 579 580 581 582
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';
AUTO_INCREMENT
4
drop table t1;
unknown's avatar
unknown committed
583 584 585 586 587 588
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;
s1
589
11
590
10
unknown's avatar
unknown committed
591
drop table t1;
unknown's avatar
unknown committed
592
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
unknown's avatar
unknown committed
593
Table	Create Table
594
CHARACTER_SETS	CREATE TEMPORARY TABLE `CHARACTER_SETS` (
595 596
  `CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
  `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
597
  `DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
598
  `MAXLEN` bigint(3) NOT NULL DEFAULT 0
599
) ENGINE=MEMORY DEFAULT CHARSET=utf8
unknown's avatar
unknown committed
600
set names latin2;
unknown's avatar
unknown committed
601
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
unknown's avatar
unknown committed
602
Table	Create Table
603
CHARACTER_SETS	CREATE TEMPORARY TABLE `CHARACTER_SETS` (
604 605
  `CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
  `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
606
  `DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
607
  `MAXLEN` bigint(3) NOT NULL DEFAULT 0
608
) ENGINE=MEMORY DEFAULT CHARSET=utf8
unknown's avatar
unknown committed
609 610 611 612
set names latin1;
create table t1 select * from information_schema.CHARACTER_SETS
where CHARACTER_SET_NAME like "latin1";
select * from t1;
613
CHARACTER_SET_NAME	DEFAULT_COLLATE_NAME	DESCRIPTION	MAXLEN
unknown's avatar
unknown committed
614
latin1	latin1_swedish_ci	cp1252 West European	1
unknown's avatar
unknown committed
615 616 617 618
alter table t1 default character set utf8;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
619 620
  `CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
  `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
621
  `DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
622
  `MAXLEN` bigint(3) NOT NULL DEFAULT 0
unknown's avatar
unknown committed
623 624
) ENGINE=MyISAM DEFAULT CHARSET=utf8
drop table t1;
625 626 627 628 629
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);
630
select COLUMN_NAME,COLUMN_TYPE, CHARACTER_MAXIMUM_LENGTH,
631 632 633
CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE
from information_schema.columns where table_name= 't1';
COLUMN_NAME	COLUMN_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE
634 635 636 637 638 639
a	decimal(5,3)	NULL	NULL	5	3
b	decimal(5,1)	NULL	NULL	5	1
c	float(5,2)	NULL	NULL	5	2
d	decimal(6,4)	NULL	NULL	6	4
e	float	NULL	NULL	12	NULL
f	decimal(6,3)	NULL	NULL	6	3
unknown's avatar
unknown committed
640
g	int(11)	NULL	NULL	10	0
641 642
h	double(10,3)	NULL	NULL	10	3
i	double	NULL	NULL	22	NULL
643
drop table t1;
unknown's avatar
unknown committed
644 645 646 647
create table t115 as select table_name, column_name, column_type
from information_schema.columns where table_name = 'proc';
select * from t115;
table_name	column_name	column_type
648 649
proc	db	char(64)
proc	name	char(64)
unknown's avatar
unknown committed
650
proc	type	enum('FUNCTION','PROCEDURE')
651
proc	specific_name	char(64)
unknown's avatar
unknown committed
652 653 654 655 656
proc	language	enum('SQL')
proc	sql_data_access	enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
proc	is_deterministic	enum('YES','NO')
proc	security_type	enum('INVOKER','DEFINER')
proc	param_list	blob
unknown's avatar
unknown committed
657
proc	returns	longblob
unknown's avatar
unknown committed
658
proc	body	longblob
659
proc	definer	char(141)
unknown's avatar
unknown committed
660 661
proc	created	timestamp
proc	modified	timestamp
662
proc	sql_mode	set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH')
663
proc	comment	text
unknown's avatar
unknown committed
664 665 666 667
proc	character_set_client	char(32)
proc	collation_connection	char(32)
proc	db_collation	char(32)
proc	body_utf8	longblob
unknown's avatar
unknown committed
668 669 670 671 672 673
drop table t115;
create procedure p108 () begin declare c cursor for select data_type
from information_schema.columns;  open c; open c; end;//
call p108()//
ERROR 24000: Cursor is already open
drop procedure p108;
unknown's avatar
unknown committed
674 675 676 677 678 679 680 681
create view v1 as select A1.table_name from information_schema.TABLES A1
where table_name= "user";
select * from v1;
table_name
user
drop view v1;
create view vo as select 'a' union select 'a';
show index from vo;
682
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment	Index_comment
unknown's avatar
unknown committed
683 684
select * from information_schema.TABLE_CONSTRAINTS where
TABLE_NAME= "vo";
685
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_SCHEMA	TABLE_NAME	CONSTRAINT_TYPE
unknown's avatar
unknown committed
686 687
select * from information_schema.KEY_COLUMN_USAGE where
TABLE_NAME= "vo";
688
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	POSITION_IN_UNIQUE_CONSTRAINT	REFERENCED_TABLE_SCHEMA	REFERENCED_TABLE_NAME	REFERENCED_COLUMN_NAME
unknown's avatar
unknown committed
689
drop view vo;
690
select TABLE_NAME,TABLE_TYPE,ENGINE
691
from information_schema.tables
692 693
where table_schema='information_schema' limit 2;
TABLE_NAME	TABLE_TYPE	ENGINE
Sergei Golubchik's avatar
Sergei Golubchik committed
694 695
ALL_PLUGINS	SYSTEM VIEW	Aria
APPLICABLE_ROLES	SYSTEM VIEW	MEMORY
696 697 698
show tables from information_schema like "T%";
Tables_in_information_schema (T%)
TABLES
699
TABLESPACES
700
TABLE_CONSTRAINTS
701
TABLE_PRIVILEGES
702
TABLE_STATISTICS
703
TRIGGERS
704
create database information_schema;
705
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
706 707 708
use information_schema;
show full tables like "T%";
Tables_in_information_schema (T%)	Table_type
709
TABLES	SYSTEM VIEW
710
TABLESPACES	SYSTEM VIEW
711
TABLE_CONSTRAINTS	SYSTEM VIEW
712
TABLE_PRIVILEGES	SYSTEM VIEW
713
TABLE_STATISTICS	SYSTEM VIEW
714
TRIGGERS	SYSTEM VIEW
715
create table t1(a int);
716
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
717 718 719 720 721 722 723
use test;
show tables;
Tables_in_test
use information_schema;
show tables like "T%";
Tables_in_information_schema (T%)
TABLES
724
TABLESPACES
725
TABLE_CONSTRAINTS
726
TABLE_PRIVILEGES
727
TABLE_STATISTICS
728
TRIGGERS
729 730 731 732 733 734 735 736 737 738 739 740 741 742 743
select table_name from tables where table_name='user';
table_name
user
select column_name, privileges from columns
where table_name='user' and column_name like '%o%';
column_name	privileges
Host	select,insert,update,references
Password	select,insert,update,references
Drop_priv	select,insert,update,references
Reload_priv	select,insert,update,references
Shutdown_priv	select,insert,update,references
Process_priv	select,insert,update,references
Show_db_priv	select,insert,update,references
Lock_tables_priv	select,insert,update,references
Show_view_priv	select,insert,update,references
744 745
Create_routine_priv	select,insert,update,references
Alter_routine_priv	select,insert,update,references
746 747
max_questions	select,insert,update,references
max_connections	select,insert,update,references
unknown's avatar
unknown committed
748
max_user_connections	select,insert,update,references
749
authentication_string	select,insert,update,references
750
password_expired	select,insert,update,references
751
is_role	select,insert,update,references
752
default_role	select,insert,update,references
753 754 755 756
use test;
create function sub1(i int) returns int
return i+1;
create table t1(f1 int);
unknown's avatar
unknown committed
757 758
create view v2 (c) as select f1 from t1;
create view v3 (c) as select sub1(1);
759 760 761
create table t4(f1 int, KEY f1_key (f1));
drop table t1;
drop function sub1;
762 763 764
select table_name from information_schema.views
where table_schema='test';
table_name
765 766
v2
v3
767 768 769
select table_name from information_schema.views
where table_schema='test';
table_name
770 771
v2
v3
772 773 774 775 776
select column_name from information_schema.columns
where table_schema='test';
column_name
f1
Warnings:
777 778
Warning	1356	View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Warning	1356	View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
779 780 781 782 783 784
select index_name from information_schema.statistics where table_schema='test';
index_name
f1_key
select constraint_name from information_schema.table_constraints
where table_schema='test';
constraint_name
785
show create view v2;
unknown's avatar
unknown committed
786 787
View	Create View	character_set_client	collation_connection
v2	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select `test`.`t1`.`f1` AS `c` from `t1`	latin1	latin1_swedish_ci
788 789 790
Warnings:
Warning	1356	View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
show create table v3;
unknown's avatar
unknown committed
791 792
View	Create View	character_set_client	collation_connection
v3	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `sub1`(1) AS `c`	latin1	latin1_swedish_ci
793 794
Warnings:
Warning	1356	View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
unknown's avatar
unknown committed
795 796
drop view v2;
drop view v3;
797
drop table t4;
798 799
select * from information_schema.table_names;
ERROR 42S02: Unknown table 'table_names' in information_schema
800 801 802 803
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");
column_type
804 805
varchar(32)
varchar(32)
806
select TABLE_ROWS from information_schema.tables where
807 808 809 810 811 812 813
table_schema="information_schema" and table_name="COLUMNS";
TABLE_ROWS
NULL
select table_type from information_schema.tables
where table_schema="mysql" and table_name="user";
table_type
BASE TABLE
814 815 816
show open tables where `table` like "user";
Database	Table	In_use	Name_locked
mysql	user	0	0
817 818
show status where variable_name like "%database%";
Variable_name	Value
819
Acl_database_grants	2
820
Com_show_databases	3
821 822
show variables where variable_name like "skip_show_databas";
Variable_name	Value
823 824
show global status like "Threads_running";
Variable_name	Value
825
Threads_running	#
826 827 828 829 830 831
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;
832
use test;
833 834 835
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;
836
count(*)
837
68
838 839
drop view a2, a1;
drop table t_crashme;
840
select table_schema,table_name, column_name from
841
information_schema.columns
842
where data_type = 'longtext' and table_schema != 'performance_schema';
843
table_schema	table_name	column_name
Sergei Golubchik's avatar
Sergei Golubchik committed
844
information_schema	ALL_PLUGINS	PLUGIN_DESCRIPTION
unknown's avatar
unknown committed
845
information_schema	COLUMNS	COLUMN_DEFAULT
846
information_schema	COLUMNS	COLUMN_TYPE
847
information_schema	EVENTS	EVENT_DEFINITION
Sergey Glukhov's avatar
Sergey Glukhov committed
848
information_schema	PARAMETERS	DTD_IDENTIFIER
849 850 851
information_schema	PARTITIONS	PARTITION_EXPRESSION
information_schema	PARTITIONS	SUBPARTITION_EXPRESSION
information_schema	PARTITIONS	PARTITION_DESCRIPTION
unknown's avatar
unknown committed
852
information_schema	PLUGINS	PLUGIN_DESCRIPTION
853
information_schema	PROCESSLIST	INFO
Sergey Glukhov's avatar
Sergey Glukhov committed
854
information_schema	ROUTINES	DTD_IDENTIFIER
855
information_schema	ROUTINES	ROUTINE_DEFINITION
856
information_schema	ROUTINES	ROUTINE_COMMENT
857
information_schema	SYSTEM_VARIABLES	ENUM_VALUE_LIST
858 859
information_schema	TRIGGERS	ACTION_CONDITION
information_schema	TRIGGERS	ACTION_STATEMENT
860
information_schema	VIEWS	VIEW_DEFINITION
861
select table_name, column_name, data_type from information_schema.columns
862
where data_type = 'datetime' and table_name not like 'innodb_%';
863
table_name	column_name	data_type
864 865 866 867 868 869
EVENTS	EXECUTE_AT	datetime
EVENTS	STARTS	datetime
EVENTS	ENDS	datetime
EVENTS	CREATED	datetime
EVENTS	LAST_ALTERED	datetime
EVENTS	LAST_EXECUTED	datetime
unknown's avatar
unknown committed
870 871 872 873 874 875
FILES	CREATION_TIME	datetime
FILES	LAST_UPDATE_TIME	datetime
FILES	LAST_ACCESS_TIME	datetime
FILES	CREATE_TIME	datetime
FILES	UPDATE_TIME	datetime
FILES	CHECK_TIME	datetime
876 877 878
PARTITIONS	CREATE_TIME	datetime
PARTITIONS	UPDATE_TIME	datetime
PARTITIONS	CHECK_TIME	datetime
879 880
ROUTINES	CREATED	datetime
ROUTINES	LAST_ALTERED	datetime
881 882 883
TABLES	CREATE_TIME	datetime
TABLES	UPDATE_TIME	datetime
TABLES	CHECK_TIME	datetime
884
TRIGGERS	CREATED	datetime
885 886 887 888
event	execute_at	datetime
event	last_executed	datetime
event	starts	datetime
event	ends	datetime
889
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
890
WHERE NOT EXISTS
891 892 893 894 895
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS B
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
AND A.TABLE_NAME = B.TABLE_NAME);
COUNT(*)
0
896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917
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';
COLUMN_NAME	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH
x_bigint	NULL	NULL
x_integer	NULL	NULL
x_smallint	NULL	NULL
x_decimal	NULL	NULL
x_numeric	NULL	NULL
x_real	NULL	NULL
x_float	NULL	NULL
x_double_precision	NULL	NULL
drop table t1;
918
grant select on test.* to mysqltest_4@localhost;
919 920
connect  user10261,localhost,mysqltest_4,,;
connection user10261;
921
SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGES FROM INFORMATION_SCHEMA.COLUMNS 
Sergei Golubchik's avatar
Sergei Golubchik committed
922
where COLUMN_NAME='TABLE_NAME' and table_name not like 'innodb%';
923 924 925
TABLE_NAME	COLUMN_NAME	PRIVILEGES
COLUMNS	TABLE_NAME	select
COLUMN_PRIVILEGES	TABLE_NAME	select
unknown's avatar
unknown committed
926
FILES	TABLE_NAME	select
927
INDEX_STATISTICS	TABLE_NAME	select
928
KEY_COLUMN_USAGE	TABLE_NAME	select
929
PARTITIONS	TABLE_NAME	select
930
REFERENTIAL_CONSTRAINTS	TABLE_NAME	select
931 932 933 934
STATISTICS	TABLE_NAME	select
TABLES	TABLE_NAME	select
TABLE_CONSTRAINTS	TABLE_NAME	select
TABLE_PRIVILEGES	TABLE_NAME	select
935
TABLE_STATISTICS	TABLE_NAME	select
936
VIEWS	TABLE_NAME	select
937 938
connection default;
disconnect user10261;
939
delete from mysql.user where user='mysqltest_4';
940
delete from mysql.db where user='mysqltest_4';
941
flush privileges;
942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961
create table t1 (i int, j int);
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|
show triggers;
unknown's avatar
unknown committed
962
Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer	character_set_client	collation_connection	Database Collation
963
trg1	INSERT	t1	begin
964 965 966
if new.j > 10 then
set new.j := 10;
end if;
967
end	BEFORE	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
968
trg2	UPDATE	t1	begin
969 970 971
if old.i % 2 = 0 then
set new.j := -1;
end if;
972
end	BEFORE	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
973
trg3	UPDATE	t1	begin
974 975 976
if new.j = -1 then
set @fired:= "Yes";
end if;
977
end	AFTER	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
978
select * from information_schema.triggers where trigger_schema in ('mysql', 'information_schema', 'test', 'mysqltest');
unknown's avatar
unknown committed
979
TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENT	ACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
980
def	test	trg1	INSERT	def	test	t1	1	NULL	begin
981 982 983
if new.j > 10 then
set new.j := 10;
end if;
984 985
end	ROW	BEFORE	NULL	NULL	OLD	NEW	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
def	test	trg2	UPDATE	def	test	t1	1	NULL	begin
986 987 988
if old.i % 2 = 0 then
set new.j := -1;
end if;
989 990
end	ROW	BEFORE	NULL	NULL	OLD	NEW	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
def	test	trg3	UPDATE	def	test	t1	1	NULL	begin
991 992 993
if new.j = -1 then
set @fired:= "Yes";
end if;
994
end	ROW	AFTER	NULL	NULL	OLD	NEW	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
995 996 997 998
drop trigger trg1;
drop trigger trg2;
drop trigger trg3;
drop table t1;
999 1000 1001 1002 1003 1004 1005
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;
1006 1007 1008 1009 1010
connect  con1,localhost,user1,,mysqltest;
connect  con2,localhost,user2,,mysqltest;
connect  con3,localhost,user3,,mysqltest;
connect  con4,localhost,user4,,;
connection con1;
1011
select * from information_schema.column_privileges order by grantee;
1012
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1013
'user1'@'localhost'	def	mysqltest	t1	f1	SELECT	NO
1014
select * from information_schema.table_privileges order by grantee;
1015
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1016
select * from information_schema.schema_privileges order by grantee;
1017
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	PRIVILEGE_TYPE	IS_GRANTABLE
1018
select * from information_schema.user_privileges order by grantee;
1019
GRANTEE	TABLE_CATALOG	PRIVILEGE_TYPE	IS_GRANTABLE
1020
'user1'@'localhost'	def	USAGE	NO
1021 1022 1023 1024
show grants;
Grants for user1@localhost
GRANT USAGE ON *.* TO 'user1'@'localhost'
GRANT SELECT (f1) ON `mysqltest`.`t1` TO 'user1'@'localhost'
1025
connection con2;
1026
select * from information_schema.column_privileges order by grantee;
1027
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1028
select * from information_schema.table_privileges order by grantee;
1029
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1030
'user2'@'localhost'	def	mysqltest	t2	SELECT	NO
1031
select * from information_schema.schema_privileges order by grantee;
1032
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	PRIVILEGE_TYPE	IS_GRANTABLE
1033
select * from information_schema.user_privileges order by grantee;
1034
GRANTEE	TABLE_CATALOG	PRIVILEGE_TYPE	IS_GRANTABLE
1035
'user2'@'localhost'	def	USAGE	NO
1036 1037 1038 1039
show grants;
Grants for user2@localhost
GRANT USAGE ON *.* TO 'user2'@'localhost'
GRANT SELECT ON `mysqltest`.`t2` TO 'user2'@'localhost'
1040
connection con3;
1041
select * from information_schema.column_privileges order by grantee;
1042
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1043
select * from information_schema.table_privileges order by grantee;
1044
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1045
select * from information_schema.schema_privileges order by grantee;
1046
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	PRIVILEGE_TYPE	IS_GRANTABLE
1047
'user3'@'localhost'	def	mysqltest	SELECT	NO
1048
select * from information_schema.user_privileges order by grantee;
1049
GRANTEE	TABLE_CATALOG	PRIVILEGE_TYPE	IS_GRANTABLE
1050
'user3'@'localhost'	def	USAGE	NO
1051 1052 1053 1054
show grants;
Grants for user3@localhost
GRANT USAGE ON *.* TO 'user3'@'localhost'
GRANT SELECT ON `mysqltest`.* TO 'user3'@'localhost'
1055
connection con4;
1056
select * from information_schema.column_privileges where grantee like '\'user%'
1057
order by grantee;
1058
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1059
'user1'@'localhost'	def	mysqltest	t1	f1	SELECT	NO
1060
select * from information_schema.table_privileges where grantee like '\'user%'
1061
order by grantee;
1062
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PRIVILEGE_TYPE	IS_GRANTABLE
1063
'user2'@'localhost'	def	mysqltest	t2	SELECT	NO
1064
select * from information_schema.schema_privileges where grantee like '\'user%'
1065
order by grantee;
1066
GRANTEE	TABLE_CATALOG	TABLE_SCHEMA	PRIVILEGE_TYPE	IS_GRANTABLE
1067
'user3'@'localhost'	def	mysqltest	SELECT	NO
1068
select * from information_schema.user_privileges where grantee like '\'user%'
1069
order by grantee;
1070
GRANTEE	TABLE_CATALOG	PRIVILEGE_TYPE	IS_GRANTABLE
1071 1072 1073 1074
'user1'@'localhost'	def	USAGE	NO
'user2'@'localhost'	def	USAGE	NO
'user3'@'localhost'	def	USAGE	NO
'user4'@'localhost'	def	SELECT	NO
1075 1076 1077
show grants;
Grants for user4@localhost
GRANT SELECT ON *.* TO 'user4'@'localhost'
1078 1079 1080 1081 1082
connection default;
disconnect con1;
disconnect con2;
disconnect con3;
disconnect con4;
1083 1084 1085
drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost;
use test;
drop database mysqltest;
unknown's avatar
unknown committed
1086 1087
drop procedure if exists p1;
drop procedure if exists p2;
1088 1089 1090 1091 1092 1093 1094 1095 1096
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%';
sql_data_access
MODIFIES SQL DATA
CONTAINS SQL
drop procedure p1;
drop procedure p2;
1097 1098 1099
show create database information_schema;
Database	Create Database
information_schema	CREATE DATABASE `information_schema` /*!40100 DEFAULT CHARACTER SET utf8 */
1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114
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';
column_name	data_type	CHARACTER_OCTET_LENGTH	CHARACTER_MAXIMUM_LENGTH
f1	longblob	4294967295	4294967295
f2	longtext	4294967295	4294967295
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';
column_name	NUMERIC_PRECISION	NUMERIC_SCALE
unknown's avatar
unknown committed
1115 1116 1117 1118 1119
f1	3	0
f2	5	0
f3	7	0
f4	10	0
f5	19	0
1120 1121 1122
f6	1	NULL
f7	64	NULL
drop table t1;
1123 1124 1125 1126 1127 1128 1129 1130 1131
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';
trigger_schema	trigger_name
test	tr1
use test;
drop table t1;
unknown's avatar
unknown committed
1132 1133 1134 1135 1136 1137 1138 1139
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';
column_name	column_default
a	NULL
b	NULL
use test;
1140 1141
show columns from t1;
Field	Type	Null	Key	Default	Extra
1142
a	int(11)	NO		NULL	
1143
b	int(11)	YES		NULL	
unknown's avatar
unknown committed
1144
drop table t1;
unknown's avatar
unknown committed
1145 1146 1147 1148 1149 1150 1151 1152
CREATE TABLE t1 (a int);
CREATE TABLE t2 (b int);
SHOW TABLE STATUS FROM test
WHERE name IN ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='test' AND TABLE_TYPE='BASE TABLE');
Name	Engine	Version	Row_format	Rows	Avg_row_length	Data_length	Max_data_length	Index_length	Data_free	Auto_increment	Create_time	Update_time	Check_time	Collation	Checksum	Create_options	Comment
t1	MyISAM	10	Fixed	0	0	0	#	1024	0	NULL	#	#	NULL	latin1_swedish_ci	NULL		
t2	MyISAM	10	Fixed	0	0	0	#	1024	0	NULL	#	#	NULL	latin1_swedish_ci	NULL		
1153 1154 1155
DROP TABLE t1,t2;
create table t1(f1 int);
create view v1 (c) as select f1 from t1;
1156
connect  con5,localhost,root,,*NO-ONE*;
1157 1158 1159 1160 1161 1162
select database();
database()
NULL
show fields from test.v1;
Field	Type	Null	Key	Default	Extra
c	int(11)	YES		NULL	
1163 1164
connection default;
disconnect con5;
1165 1166
drop view v1;
drop table t1;
1167
alter database information_schema;
Sergei Golubchik's avatar
Sergei Golubchik committed
1168
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181
drop database information_schema;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
drop table information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
alter table information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
use information_schema;
create temporary table schemata(f1 char(10));
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CREATE PROCEDURE p1 ()
BEGIN
SELECT 'foo' FROM DUAL;
END |
1182
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
Matthias Leich's avatar
Matthias Leich committed
1183
select ROUTINE_NAME from routines where ROUTINE_SCHEMA='information_schema';
1184 1185 1186 1187 1188
ROUTINE_NAME
grant all on information_schema.* to 'user1'@'localhost';
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
grant select on information_schema.* to 'user1'@'localhost';
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200
use test;
create table t1(id int);
insert into t1(id) values (1);
select 1 from (select 1 from test.t1) a;
1
1
use information_schema;
select 1 from (select 1 from test.t1) a;
1
1
use test;
drop table t1;
1201 1202 1203 1204 1205 1206 1207 1208
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";
table_type
VIEW
drop view v1;
1209 1210 1211 1212 1213 1214 1215 1216
create temporary table t1(f1 int, index(f1));
show columns from t1;
Field	Type	Null	Key	Default	Extra
f1	int(11)	YES	MUL	NULL	
describe t1;
Field	Type	Null	Key	Default	Extra
f1	int(11)	YES	MUL	NULL	
show indexes from t1;
1217 1218
Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment	Index_comment
t1	1	f1	1	f1	A	NULL	NULL	NULL	YES	BTREE		
1219
drop table t1;
1220 1221 1222 1223 1224 1225 1226
create table t1(f1 binary(32), f2 varbinary(64));
select character_maximum_length, character_octet_length
from information_schema.columns where table_name='t1';
character_maximum_length	character_octet_length
32	32
64	64
drop table t1;
1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242
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;
CREATE FUNCTION func1() RETURNS BIGINT
BEGIN
RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS);
END//
CREATE VIEW v1 AS SELECT 1 FROM t1
WHERE f3 = (SELECT func2 ());
SELECT func1();
func1()
1
DROP TABLE t1;
DROP VIEW v1;
DROP FUNCTION func1;
DROP FUNCTION func2;
1243 1244 1245
select column_type, group_concat(table_schema, '.', table_name), count(*) as num
from information_schema.columns where
table_schema='information_schema' and
1246 1247
(column_type = 'varchar(7)' or column_type = 'varchar(20)'
 or column_type = 'varchar(27)')
1248 1249 1250
group by column_type order by num;
column_type	group_concat(table_schema, '.', table_name)	num
varchar(7)	information_schema.ROUTINES,information_schema.VIEWS	2
Sergei Golubchik's avatar
Sergei Golubchik committed
1251
varchar(20)	information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.ALL_PLUGINS,information_schema.FILES,information_schema.FILES,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PLUGINS,information_schema.PROFILING	9
1252 1253 1254 1255 1256 1257 1258 1259
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';
CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH
1	3
9	27
drop table t1;
1260 1261 1262
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',
unknown's avatar
unknown committed
1263
'2006-03-02 18:40:03','','','utf8','utf8_general_ci','utf8_general_ci','n/a');
1264
select routine_name from information_schema.routines where ROUTINE_SCHEMA='test';
1265 1266 1267 1268
routine_name

delete from proc where name='';
use test;
1269 1270 1271 1272 1273
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;
1274 1275
connect  con16681,localhost,mysqltest_1,,test;
connection con16681;
1276 1277
select * from information_schema.views
where table_name='v1' or table_name='v2';
1278 1279 1280
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	VIEW_DEFINITION	CHECK_OPTION	IS_UPDATABLE	DEFINER	SECURITY_TYPE	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	ALGORITHM
def	test	v1		NONE	YES	root@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
def	test	v2	select 1 AS `1`	NONE	NO	mysqltest_1@localhost	DEFINER	latin1	latin1_swedish_ci	UNDEFINED
1281 1282
connection default;
disconnect con16681;
1283 1284 1285
drop view v1, v2;
drop table t1;
drop user mysqltest_1@localhost;
1286 1287 1288 1289 1290 1291 1292 1293 1294
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';
concat(@a, table_name)	@a	table_name
.t1	.	t1
.t2	.	t2
drop table t1,t2;
1295 1296 1297 1298 1299 1300 1301
DROP PROCEDURE IF EXISTS p1;
DROP FUNCTION IF EXISTS f1;
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;
1302
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='test';
1303 1304 1305 1306
ROUTINE_NAME	ROUTINE_DEFINITION
f1	RETURN @a + 1
p1	SET @a= 1
SHOW CREATE PROCEDURE p1;
unknown's avatar
unknown committed
1307
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
1308
p1		CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
unknown's avatar
unknown committed
1309
SET @a= 1	latin1	latin1_swedish_ci	latin1_swedish_ci
1310
SHOW CREATE FUNCTION f1;
unknown's avatar
unknown committed
1311
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
1312
f1		CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
unknown's avatar
unknown committed
1313
RETURN @a + 1	latin1	latin1_swedish_ci	latin1_swedish_ci
1314
connect  conn1, localhost, mysql_bug20230,,;
1315
SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='test';
1316 1317 1318 1319
ROUTINE_NAME	ROUTINE_DEFINITION
f1	NULL
p1	NULL
SHOW CREATE PROCEDURE p1;
unknown's avatar
unknown committed
1320 1321
Procedure	sql_mode	Create Procedure	character_set_client	collation_connection	Database Collation
p1		NULL	latin1	latin1_swedish_ci	latin1_swedish_ci
1322
SHOW CREATE FUNCTION f1;
unknown's avatar
unknown committed
1323 1324
Function	sql_mode	Create Function	character_set_client	collation_connection	Database Collation
f1		NULL	latin1	latin1_swedish_ci	latin1_swedish_ci
1325 1326 1327 1328
CALL p1();
SELECT f1();
f1()
2
1329 1330
disconnect conn1;
connection default;
1331 1332 1333
DROP FUNCTION f1;
DROP PROCEDURE p1;
DROP USER mysql_bug20230@localhost;
Sergei Golubchik's avatar
Sergei Golubchik committed
1334
SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test') and table_name not like 'xtradb%';
1335
MAX(table_name)
1336
VIEWS
1337 1338
SELECT table_name from information_schema.tables
WHERE table_name=(SELECT MAX(table_name)
Sergei Golubchik's avatar
Sergei Golubchik committed
1339
FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test') and table_name not like 'xtradb%');
1340
table_name
1341
VIEWS
1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354
DROP TABLE IF EXISTS bug23037;
DROP FUNCTION IF EXISTS get_value;
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
COLUMN_NAME	MD5(COLUMN_DEFAULT)	LENGTH(COLUMN_DEFAULT)
fld1	7cf7a6782be951a1f2464a350da926a5	65532
SELECT MD5(get_value());
MD5(get_value())
7cf7a6782be951a1f2464a350da926a5
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT), COLUMN_DEFAULT=get_value() FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
COLUMN_NAME	MD5(COLUMN_DEFAULT)	LENGTH(COLUMN_DEFAULT)	COLUMN_DEFAULT=get_value()
fld1	7cf7a6782be951a1f2464a350da926a5	65532	1
DROP TABLE bug23037;
DROP FUNCTION get_value;
1355 1356
set @tmp_optimizer_switch=@@optimizer_switch;
set optimizer_switch='derived_merge=off,derived_with_keys=off';
1357 1358 1359 1360 1361 1362 1363 1364
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;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1365
1	SIMPLE	tables	ALL	NULL	NULL	NULL	NULL	NULL	Open_frm_only; Scanned all databases; Using filesort
1366 1367
explain select * from (select table_name from information_schema.tables) as a;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1368
1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	
1369
2	DERIVED	tables	ALL	NULL	NULL	NULL	NULL	NULL	Skip_open_table; Scanned all databases
1370
set optimizer_switch=@tmp_optimizer_switch;
1371
drop view v1;
1372 1373 1374 1375 1376 1377 1378 1379 1380 1381
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');
table_name
t1
t2
drop table t1,t2;
1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392
create table t1(f1 int);
create view v1 as select f1+1 as a from t1;
create table t2 (f1 int, f2 int);
create view v2 as select f1+1 as a, f2 as b from t2;
select table_name, is_updatable from information_schema.views;
table_name	is_updatable
v1	NO
v2	YES
delete from v1;
drop view v1,v2;
drop table t1,t2;
1393
alter database;
Sergei Golubchik's avatar
Sergei Golubchik committed
1394
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
1395
alter database test;
Sergei Golubchik's avatar
Sergei Golubchik committed
1396
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
1397 1398 1399 1400 1401 1402 1403 1404 1405 1406
create database mysqltest;
create table mysqltest.t1(a int, b int, c int);
create trigger mysqltest.t1_ai after insert on mysqltest.t1
for each row set @a = new.a + new.b + new.c;
grant select(b) on mysqltest.t1 to mysqltest_1@localhost;
select trigger_name from information_schema.triggers
where event_object_table='t1';
trigger_name
t1_ai
show triggers from mysqltest;
1407
Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer	character_set_client	collation_connection	Database Collation
1408
t1_ai	INSERT	t1	set @a = new.a + new.b + new.c	AFTER	#		root@localhost	latin1	latin1_swedish_ci	latin1_swedish_ci
1409
connect  con27629,localhost,mysqltest_1,,mysqltest;
1410 1411 1412 1413 1414 1415 1416
show columns from t1;
Field	Type	Null	Key	Default	Extra
b	int(11)	YES		NULL	
select column_name from information_schema.columns where table_name='t1';
column_name
b
show triggers;
1417
Trigger	Event	Table	Statement	Timing	Created	sql_mode	Definer	character_set_client	collation_connection	Database Collation
1418 1419 1420
select trigger_name from information_schema.triggers
where event_object_table='t1';
trigger_name
1421 1422
connection default;
disconnect con27629;
1423 1424
drop user mysqltest_1@localhost;
drop database mysqltest;
1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455
create table t1 (
f1 varchar(50),
f2 varchar(50) not null,
f3 varchar(50) default '',
f4 varchar(50) default NULL,
f5 bigint not null,
f6 bigint not null default 10,
f7 datetime not null,
f8 datetime default '2006-01-01'
);
select column_default from information_schema.columns where table_name= 't1';
column_default
NULL
NULL

NULL
NULL
10
NULL
2006-01-01 00:00:00
show columns from t1;
Field	Type	Null	Key	Default	Extra
f1	varchar(50)	YES		NULL	
f2	varchar(50)	NO		NULL	
f3	varchar(50)	YES			
f4	varchar(50)	YES		NULL	
f5	bigint(20)	NO		NULL	
f6	bigint(20)	NO		10	
f7	datetime	NO		NULL	
f8	datetime	YES		2006-01-01 00:00:00	
drop table t1;
unknown's avatar
unknown committed
1456 1457 1458 1459
show fields from information_schema.table_names;
ERROR 42S02: Unknown table 'table_names' in information_schema
show keys from information_schema.table_names;
ERROR 42S02: Unknown table 'table_names' in information_schema
1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471
USE information_schema;
SET max_heap_table_size = 16384;
CREATE TABLE test.t1( a INT );
SELECT *
FROM tables ta
JOIN collations co ON ( co.collation_name = ta.table_catalog )
JOIN character_sets cs ON ( cs.character_set_name = ta.table_catalog );
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	TABLE_TYPE	ENGINE	VERSION	ROW_FORMAT	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	AUTO_INCREMENT	CREATE_TIME	UPDATE_TIME	CHECK_TIME	TABLE_COLLATION	CHECKSUM	CREATE_OPTIONS	TABLE_COMMENT	COLLATION_NAME	CHARACTER_SET_NAME	ID	IS_DEFAULT	IS_COMPILED	SORTLEN	CHARACTER_SET_NAME	DEFAULT_COLLATE_NAME	DESCRIPTION	MAXLEN
DROP TABLE test.t1;
SET max_heap_table_size = DEFAULT;
USE test;
End of 5.0 tests.
unknown's avatar
unknown committed
1472 1473
select * from information_schema.engines WHERE ENGINE="MyISAM";
ENGINE	SUPPORT	COMMENT	TRANSACTIONS	XA	SAVEPOINTS
1474
MyISAM	DEFAULT	MyISAM storage engine	NO	NO	NO
unknown's avatar
unknown committed
1475
grant select on *.* to user3148@localhost;
1476 1477
connect  con3148,localhost,user3148,,test;
connection con3148;
unknown's avatar
unknown committed
1478 1479 1480
select user,db from information_schema.processlist;
user	db
user3148	test
1481 1482
connection default;
disconnect con3148;
unknown's avatar
unknown committed
1483
drop user user3148@localhost;
1484
connect  pslistcon,localhost,root,,test;
1485 1486 1487
SELECT 'other connection here' AS who;
who
other connection here
1488
connection default;
1489 1490
SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
IF(`time` < 1000, 'OK', `time`) AS time_high,
1491
IF(time_ms >= 1000, 'OK', time_ms) AS time_ms_low,
1492 1493 1494 1495 1496
IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE ID=@tid;
time_low	time_high	time_ms_low	time_ms_high
OK	OK	OK	OK
1497
disconnect pslistcon;
1498 1499 1500 1501
DROP TABLE IF EXISTS server_status;
DROP EVENT IF EXISTS event_status;
SET GLOBAL event_scheduler=1;
CREATE EVENT event_status
1502
ON SCHEDULE AT NOW()
1503
ON COMPLETION NOT PRESERVE
1504 1505
DO
BEGIN
1506 1507 1508 1509 1510
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';
1511
END$$
1512
SELECT variable_name FROM server_status;
1513 1514 1515 1516 1517
variable_name
ABORTED_CONNECTS
BINLOG_CACHE_DISK_USE
DROP TABLE server_status;
SET GLOBAL event_scheduler=0;
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540
explain select table_name from information_schema.views where
table_schema='test' and table_name='v1';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	views	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	Using where; Open_frm_only; Scanned 0 databases
explain select * from information_schema.tables;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tables	ALL	NULL	NULL	NULL	NULL	NULL	Open_full_table; Scanned all databases
explain select * from information_schema.collations;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	collations	ALL	NULL	NULL	NULL	NULL	NULL	
explain select * from information_schema.tables where
table_schema='test' and table_name= 't1';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tables	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	Using where; Open_full_table; Scanned 0 databases
explain select table_name, table_type from information_schema.tables
where table_schema='test';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tables	ALL	NULL	TABLE_SCHEMA	NULL	NULL	NULL	Using where; Open_frm_only; Scanned 1 database
explain select b.table_name
from information_schema.tables a, information_schema.columns b
where a.table_name='t1' and a.table_schema='test' and b.table_name=a.table_name;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	a	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	Using where; Skip_open_table; Scanned 0 databases
1541
1	SIMPLE	b	ALL	NULL	NULL	NULL	NULL	NULL	Using where; Open_frm_only; Scanned all databases; Using join buffer (flat, BNL join)
1542 1543 1544 1545 1546 1547 1548 1549 1550
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'mysqltest';
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = '';
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'test';
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
1551
def	test	latin1	latin1_swedish_ci	NULL
1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysql' AND TABLE_NAME='nonexisting';
count(*)
0
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='mysql' AND TABLE_NAME='';
count(*)
0
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='' AND TABLE_NAME='';
count(*)
0
select count(*) from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='' AND TABLE_NAME='nonexisting';
count(*)
0
1564 1565
CREATE VIEW v1
AS SELECT *
1566
FROM information_schema.tables;
1567 1568
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS where TABLE_NAME = 'v1';
VIEW_DEFINITION
1569
select `information_schema`.`tables`.`TABLE_CATALOG` AS `TABLE_CATALOG`,`information_schema`.`tables`.`TABLE_SCHEMA` AS `TABLE_SCHEMA`,`information_schema`.`tables`.`TABLE_NAME` AS `TABLE_NAME`,`information_schema`.`tables`.`TABLE_TYPE` AS `TABLE_TYPE`,`information_schema`.`tables`.`ENGINE` AS `ENGINE`,`information_schema`.`tables`.`VERSION` AS `VERSION`,`information_schema`.`tables`.`ROW_FORMAT` AS `ROW_FORMAT`,`information_schema`.`tables`.`TABLE_ROWS` AS `TABLE_ROWS`,`information_schema`.`tables`.`AVG_ROW_LENGTH` AS `AVG_ROW_LENGTH`,`information_schema`.`tables`.`DATA_LENGTH` AS `DATA_LENGTH`,`information_schema`.`tables`.`MAX_DATA_LENGTH` AS `MAX_DATA_LENGTH`,`information_schema`.`tables`.`INDEX_LENGTH` AS `INDEX_LENGTH`,`information_schema`.`tables`.`DATA_FREE` AS `DATA_FREE`,`information_schema`.`tables`.`AUTO_INCREMENT` AS `AUTO_INCREMENT`,`information_schema`.`tables`.`CREATE_TIME` AS `CREATE_TIME`,`information_schema`.`tables`.`UPDATE_TIME` AS `UPDATE_TIME`,`information_schema`.`tables`.`CHECK_TIME` AS `CHECK_TIME`,`information_schema`.`tables`.`TABLE_COLLATION` AS `TABLE_COLLATION`,`information_schema`.`tables`.`CHECKSUM` AS `CHECKSUM`,`information_schema`.`tables`.`CREATE_OPTIONS` AS `CREATE_OPTIONS`,`information_schema`.`tables`.`TABLE_COMMENT` AS `TABLE_COMMENT` from `information_schema`.`tables`
1570
DROP VIEW v1;
1571 1572 1573 1574
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME ='information_schema';
SCHEMA_NAME
information_schema
1575 1576 1577 1578
SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='mysql' and TABLE_NAME= 'db';
TABLE_COLLATION
utf8_bin
1579
select * from information_schema.columns where table_schema = NULL;
1580
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	DATETIME_PRECISION	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE	COLUMN_KEY	EXTRA	PRIVILEGES	COLUMN_COMMENT
1581
select * from `information_schema`.`COLUMNS` where `TABLE_NAME` = NULL;
1582
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	DATETIME_PRECISION	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE	COLUMN_KEY	EXTRA	PRIVILEGES	COLUMN_COMMENT
1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597
select * from `information_schema`.`KEY_COLUMN_USAGE` where `TABLE_SCHEMA` = NULL;
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	POSITION_IN_UNIQUE_CONSTRAINT	REFERENCED_TABLE_SCHEMA	REFERENCED_TABLE_NAME	REFERENCED_COLUMN_NAME
select * from `information_schema`.`KEY_COLUMN_USAGE` where `TABLE_NAME` = NULL;
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	ORDINAL_POSITION	POSITION_IN_UNIQUE_CONSTRAINT	REFERENCED_TABLE_SCHEMA	REFERENCED_TABLE_NAME	REFERENCED_COLUMN_NAME
select * from `information_schema`.`PARTITIONS` where `TABLE_SCHEMA` = NULL;
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PARTITION_NAME	SUBPARTITION_NAME	PARTITION_ORDINAL_POSITION	SUBPARTITION_ORDINAL_POSITION	PARTITION_METHOD	SUBPARTITION_METHOD	PARTITION_EXPRESSION	SUBPARTITION_EXPRESSION	PARTITION_DESCRIPTION	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	CREATE_TIME	UPDATE_TIME	CHECK_TIME	CHECKSUM	PARTITION_COMMENT	NODEGROUP	TABLESPACE_NAME
select * from `information_schema`.`PARTITIONS` where `TABLE_NAME` = NULL;
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	PARTITION_NAME	SUBPARTITION_NAME	PARTITION_ORDINAL_POSITION	SUBPARTITION_ORDINAL_POSITION	PARTITION_METHOD	SUBPARTITION_METHOD	PARTITION_EXPRESSION	SUBPARTITION_EXPRESSION	PARTITION_DESCRIPTION	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	CREATE_TIME	UPDATE_TIME	CHECK_TIME	CHECKSUM	PARTITION_COMMENT	NODEGROUP	TABLESPACE_NAME
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `CONSTRAINT_SCHEMA` = NULL;
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	UNIQUE_CONSTRAINT_CATALOG	UNIQUE_CONSTRAINT_SCHEMA	UNIQUE_CONSTRAINT_NAME	MATCH_OPTION	UPDATE_RULE	DELETE_RULE	TABLE_NAME	REFERENCED_TABLE_NAME
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `TABLE_NAME` = NULL;
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	UNIQUE_CONSTRAINT_CATALOG	UNIQUE_CONSTRAINT_SCHEMA	UNIQUE_CONSTRAINT_NAME	MATCH_OPTION	UPDATE_RULE	DELETE_RULE	TABLE_NAME	REFERENCED_TABLE_NAME
select * from information_schema.schemata where schema_name = NULL;
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
select * from `information_schema`.`STATISTICS` where `TABLE_SCHEMA` = NULL;
1598
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	NON_UNIQUE	INDEX_SCHEMA	INDEX_NAME	SEQ_IN_INDEX	COLUMN_NAME	COLLATION	CARDINALITY	SUB_PART	PACKED	NULLABLE	INDEX_TYPE	COMMENT	INDEX_COMMENT
1599
select * from `information_schema`.`STATISTICS` where `TABLE_NAME` = NULL;
1600
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	NON_UNIQUE	INDEX_SCHEMA	INDEX_NAME	SEQ_IN_INDEX	COLUMN_NAME	COLLATION	CARDINALITY	SUB_PART	PACKED	NULLABLE	INDEX_TYPE	COMMENT	INDEX_COMMENT
1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615
select * from information_schema.tables where table_schema = NULL;
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	TABLE_TYPE	ENGINE	VERSION	ROW_FORMAT	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	AUTO_INCREMENT	CREATE_TIME	UPDATE_TIME	CHECK_TIME	TABLE_COLLATION	CHECKSUM	CREATE_OPTIONS	TABLE_COMMENT
select * from information_schema.tables where table_catalog = NULL;
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	TABLE_TYPE	ENGINE	VERSION	ROW_FORMAT	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	AUTO_INCREMENT	CREATE_TIME	UPDATE_TIME	CHECK_TIME	TABLE_COLLATION	CHECKSUM	CREATE_OPTIONS	TABLE_COMMENT
select * from information_schema.tables where table_name = NULL;
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	TABLE_TYPE	ENGINE	VERSION	ROW_FORMAT	TABLE_ROWS	AVG_ROW_LENGTH	DATA_LENGTH	MAX_DATA_LENGTH	INDEX_LENGTH	DATA_FREE	AUTO_INCREMENT	CREATE_TIME	UPDATE_TIME	CHECK_TIME	TABLE_COLLATION	CHECKSUM	CREATE_OPTIONS	TABLE_COMMENT
select * from `information_schema`.`TABLE_CONSTRAINTS` where `TABLE_SCHEMA` = NULL;
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_SCHEMA	TABLE_NAME	CONSTRAINT_TYPE
select * from `information_schema`.`TABLE_CONSTRAINTS` where `TABLE_NAME` = NULL;
CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_SCHEMA	TABLE_NAME	CONSTRAINT_TYPE
select * from `information_schema`.`TRIGGERS` where `EVENT_OBJECT_SCHEMA` = NULL;
TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENT	ACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
select * from `information_schema`.`TRIGGERS` where `EVENT_OBJECT_TABLE` = NULL;
TRIGGER_CATALOG	TRIGGER_SCHEMA	TRIGGER_NAME	EVENT_MANIPULATION	EVENT_OBJECT_CATALOG	EVENT_OBJECT_SCHEMA	EVENT_OBJECT_TABLE	ACTION_ORDER	ACTION_CONDITION	ACTION_STATEMENT	ACTION_ORIENTATION	ACTION_TIMING	ACTION_REFERENCE_OLD_TABLE	ACTION_REFERENCE_NEW_TABLE	ACTION_REFERENCE_OLD_ROW	ACTION_REFERENCE_NEW_ROW	CREATED	SQL_MODE	DEFINER	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	DATABASE_COLLATION
select * from `information_schema`.`VIEWS` where `TABLE_SCHEMA` = NULL;
1616
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	VIEW_DEFINITION	CHECK_OPTION	IS_UPDATABLE	DEFINER	SECURITY_TYPE	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	ALGORITHM
1617
select * from `information_schema`.`VIEWS` where `TABLE_NAME` = NULL;
1618
TABLE_CATALOG	TABLE_SCHEMA	TABLE_NAME	VIEW_DEFINITION	CHECK_OPTION	IS_UPDATABLE	DEFINER	SECURITY_TYPE	CHARACTER_SET_CLIENT	COLLATION_CONNECTION	ALGORITHM
1619
explain extended select 1 from information_schema.tables;
1620
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1621
1	SIMPLE	tables	ALL	NULL	NULL	NULL	NULL	NULL	NULL	Skip_open_table; Scanned all databases
1622
Warnings:
1623
Note	1003	select 1 AS `1` from `information_schema`.`tables`
1624 1625 1626 1627 1628 1629 1630
use information_schema;
show events;
Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
show events from information_schema;
Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
show events where Db= 'information_schema';
Db	Name	Definer	Time zone	Type	Execute at	Interval value	Interval field	Starts	Ends	Status	Originator	character_set_client	collation_connection	Database Collation
unknown's avatar
unknown committed
1631
use test;
1632
#
Matthias Leich's avatar
Matthias Leich committed
1633
# Bug#34166 Server crash in SHOW OPEN TABLES and prelocking
1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646
#
drop table if exists t1;
drop function if exists f1;
create table t1 (a int);
create function f1() returns int
begin
insert into t1 (a) values (1);
return 0;
end|
show open tables where f1()=0;
show open tables where f1()=0;
drop table t1;
drop function f1;
1647 1648
connect  conn1, localhost, root,,;
connection conn1;
1649
select * from information_schema.tables where 1=sleep(100000);
1650 1651
connection default;
connection conn1;
1652
Got one of the listed errors
1653 1654 1655 1656
connection default;
disconnect conn1;
connect  conn1, localhost, root,,;
connection conn1;
1657
select * from information_schema.columns where 1=sleep(100000);
1658 1659
connection default;
connection conn1;
1660
Got one of the listed errors
1661 1662
connection default;
disconnect conn1;
1663 1664 1665 1666 1667 1668 1669 1670 1671
explain select count(*) from information_schema.tables;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	tables	ALL	NULL	NULL	NULL	NULL	NULL	Skip_open_table; Scanned all databases
explain select count(*) from information_schema.columns;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	columns	ALL	NULL	NULL	NULL	NULL	NULL	Open_frm_only; Scanned all databases
explain select count(*) from information_schema.views;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	views	ALL	NULL	NULL	NULL	NULL	NULL	Open_frm_only; Scanned all databases
1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714
set global init_connect="drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;\
drop table if exists t1;drop table if exists t1;";
select * from information_schema.global_variables where variable_name='init_connect';
VARIABLE_NAME	VARIABLE_VALUE
INIT_CONNECT	drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
1715
drop table if exists t1;drop table if exists t1;
1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737
select * from information_schema.global_variables where variable_name like 'init%' order by variable_name;
VARIABLE_NAME	VARIABLE_VALUE
INIT_CONNECT	drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
drop table if exists t1;drop table if exists t1;
1738
drop table if exists t1;drop table if exists t1;
1739 1740
INIT_FILE	
INIT_SLAVE	
1741
set global init_connect="";
1742 1743 1744 1745 1746 1747 1748 1749 1750
create table t0 select * from information_schema.global_status where VARIABLE_NAME='COM_SELECT';
SELECT 1;
1
1
select a.VARIABLE_VALUE - b.VARIABLE_VALUE from t0 b, information_schema.global_status a
where a.VARIABLE_NAME = b.VARIABLE_NAME;
a.VARIABLE_VALUE - b.VARIABLE_VALUE
2
drop table t0;
1751 1752 1753
CREATE TABLE t1(a INT) KEY_BLOCK_SIZE=1;
SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
CREATE_OPTIONS
Michael Widenius's avatar
Michael Widenius committed
1754
key_block_size=1
1755
DROP TABLE t1;
1756
SET TIMESTAMP=@@TIMESTAMP + 10000000;
1757
SELECT 'NOT_OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
1758 1759
TEST_RESULT
SET TIMESTAMP=DEFAULT;
1760 1761 1762 1763 1764 1765 1766 1767
#
# Bug #50276: Security flaw in INFORMATION_SCHEMA.TABLES
#
CREATE DATABASE db1;
USE db1;
CREATE TABLE t1 (id INT);
CREATE USER nonpriv;
USE test;
1768 1769
connect  nonpriv_con, localhost, nonpriv,,;
connection nonpriv_con;
1770 1771 1772 1773 1774 1775 1776 1777 1778 1779
# connected as nonpriv
# Should return 0
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
COUNT(*)
0
USE INFORMATION_SCHEMA;
# Should return 0
SELECT COUNT(*) FROM TABLES WHERE TABLE_NAME='t1';
COUNT(*)
0
1780
connection default;
1781
# connected as root
1782
disconnect nonpriv_con;
1783 1784 1785
DROP USER nonpriv;
DROP TABLE db1.t1;
DROP DATABASE db1;
1786 1787 1788 1789 1790 1791 1792 1793 1794 1795

Bug#54422 query with = 'variables'

CREATE TABLE variables(f1 INT);
SELECT COLUMN_DEFAULT, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables';
COLUMN_DEFAULT	TABLE_NAME
NULL	variables
DROP TABLE variables;
1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812
#
# Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19, 
# should be 20
#
CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED);
SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION 
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig';
TABLE_NAME	COLUMN_NAME	NUMERIC_PRECISION
ubig	a	19
ubig	b	20
INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF);
Warnings:
Warning	1264	Out of range value for column 'a' at row 1
SELECT length(CAST(b AS CHAR)) FROM ubig;
length(CAST(b AS CHAR))
20
DROP TABLE ubig;
1813 1814
select 1 from information_schema.tables where table_schema=repeat('a', 2000);
1
1815
grant usage on *.* to mysqltest_1@localhost;
1816 1817
connect  con1, localhost, mysqltest_1,,;
connection con1;
1818 1819
select 1 from information_schema.tables where table_schema=repeat('a', 2000);
1
1820 1821
connection default;
disconnect con1;
1822
drop user mysqltest_1@localhost;
1823
End of 5.1 tests.
1824 1825 1826 1827 1828 1829 1830 1831 1832 1833
#
# Additional test for WL#3726 "DDL locking for all metadata objects"
# To avoid possible deadlocks process of filling of I_S tables should
# use high-priority metadata lock requests when opening tables.
# Below we just test that we really use high-priority lock request
# since reproducing a deadlock will require much more complex test.
#
drop tables if exists t1, t2, t3;
create table t1 (i int);
create table t2 (j int primary key auto_increment);
1834 1835
connect  con3726_1,localhost,root,,test;
connection con3726_1;
1836
lock table t2 read;
1837 1838
connect  con3726_2,localhost,root,,test;
connection con3726_2;
1839 1840 1841
# RENAME below will be blocked by 'lock table t2 read' above but
# will add two pending requests for exclusive metadata locks.
rename table t2 to t3;
1842
connection default;
1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853
# These statements should not be blocked by pending lock requests
select table_name, column_name, data_type from information_schema.columns
where table_schema = 'test' and table_name in ('t1', 't2');
table_name	column_name	data_type
t1	i	int
t2	j	int
select table_name, auto_increment from information_schema.tables
where table_schema = 'test' and table_name in ('t1', 't2');
table_name	auto_increment
t1	NULL
t2	1
1854
connection con3726_1;
1855
unlock tables;
1856 1857 1858 1859
connection con3726_2;
connection default;
disconnect con3726_1;
disconnect con3726_2;
1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877
drop tables t1, t3;
EXPLAIN SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	KEY_COLUMN_USAGE	ALL	NULL	NULL	NULL	NULL	NULL	Open_full_table; Scanned all databases
EXPLAIN SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='t1';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	PARTITIONS	ALL	NULL	TABLE_NAME	NULL	NULL	NULL	Using where; Open_full_table; Scanned 1 database
EXPLAIN SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA='test';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	REFERENTIAL_CONSTRAINTS	ALL	NULL	CONSTRAINT_SCHEMA	NULL	NULL	NULL	Using where; Open_full_table; Scanned 1 database
EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='t1' and TABLE_SCHEMA='test';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	TABLE_CONSTRAINTS	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	Using where; Open_full_table; Scanned 0 databases
EXPLAIN SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
WHERE EVENT_OBJECT_SCHEMA='test';
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1878
1	SIMPLE	TRIGGERS	ALL	NULL	EVENT_OBJECT_SCHEMA	NULL	NULL	NULL	Using where; Open_frm_only; Scanned 1 database
1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916
create table information_schema.t1 (f1 INT);
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
drop table information_schema.t1;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
drop temporary table if exists information_schema.t1;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
create temporary table information_schema.t1 (f1 INT);
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
drop view information_schema.v1;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
create view information_schema.v1;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
create trigger mysql.trg1 after insert on information_schema.t1 for each row set @a=1;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
create table t1 select * from information_schema.t1;
ERROR 42S02: Unknown table 't1' in information_schema
CREATE TABLE t1(f1 char(100));
REPAIR TABLE t1, information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CHECKSUM TABLE t1, information_schema.tables;
Table	Checksum
test.t1	0
information_schema.tables	0
ANALYZE TABLE t1, information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
CHECK TABLE t1, information_schema.tables;
Table	Op	Msg_type	Msg_text
test.t1	check	status	OK
information_schema.tables	check	note	The storage engine for the table doesn't support check
OPTIMIZE TABLE t1, information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
RENAME TABLE v1 to v2, information_schema.tables to t2;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP TABLE t1, information_schema.tables;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
LOCK TABLES t1 READ, information_schema.tables READ;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP TABLE t1;
1917
SELECT *
1918 1919 1920 1921
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
LEFT JOIN INFORMATION_SCHEMA.COLUMNS
USING (TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME)
WHERE COLUMNS.TABLE_SCHEMA = 'test'
1922
AND COLUMNS.TABLE_NAME = 't1';
Sergei Golubchik's avatar
Sergei Golubchik committed
1923
TABLE_SCHEMA	TABLE_NAME	COLUMN_NAME	CONSTRAINT_CATALOG	CONSTRAINT_SCHEMA	CONSTRAINT_NAME	TABLE_CATALOG	ORDINAL_POSITION	POSITION_IN_UNIQUE_CONSTRAINT	REFERENCED_TABLE_SCHEMA	REFERENCED_TABLE_NAME	REFERENCED_COLUMN_NAME	TABLE_CATALOG	ORDINAL_POSITION	COLUMN_DEFAULT	IS_NULLABLE	DATA_TYPE	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH	NUMERIC_PRECISION	NUMERIC_SCALE	DATETIME_PRECISION	CHARACTER_SET_NAME	COLLATION_NAME	COLUMN_TYPE	COLUMN_KEY	EXTRA	PRIVILEGES	COLUMN_COMMENT
1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937
#
# A test case for Bug#56540 "Exception (crash) in sql_show.cc
# during rqg_info_schema test on Windows"
# Ensure that we never access memory of a closed table,
# in particular, never access table->field[] array.
# Before the fix, the below test case, produced
# valgrind errors.
#
drop table if exists t1;
drop view if exists v1;
create table t1 (a int, b int);
create view v1 as select t1.a, t1.b from t1;
alter table t1 change b c int;
lock table t1 read;
1938 1939
connect con1, localhost, root,,;
connection con1;
1940
flush tables;
1941
connection default;
1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952
select * from information_schema.views;
TABLE_CATALOG	def
TABLE_SCHEMA	test
TABLE_NAME	v1
VIEW_DEFINITION	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1`
CHECK_OPTION	NONE
IS_UPDATABLE	
DEFINER	root@localhost
SECURITY_TYPE	DEFINER
CHARACTER_SET_CLIENT	latin1
COLLATION_CONNECTION	latin1_swedish_ci
1953
ALGORITHM	UNDEFINED
1954 1955 1956 1957 1958 1959 1960 1961
Warnings:
Level	Warning
Code	1356
Message	View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
unlock tables;
#
# Cleanup.
#
1962
connection con1;
1963
# Reaping 'flush tables'
1964 1965
disconnect con1;
connection default;
1966 1967 1968
drop table t1;
drop view v1;
#
1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990
# Test for bug #12828477 - "MDL SUBSYSTEM CREATES BIG OVERHEAD FOR
#                           CERTAIN QUERIES TO INFORMATION_SCHEMA".
#
# Check that metadata locks which are acquired during the process
# of opening tables/.FRMs/.TRG files while filling I_S table are
# not kept to the end of statement. Keeping the locks has caused
# performance problems in cases when big number of tables (.FRMs
# or .TRG files) were scanned as cost of new lock acquisition has
# increased linearly.
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
create table t0 (i int);
create table t1 (j int);
create table t2 (k int);
#
# Test that we don't keep locks in case when we to fill
# I_S table we perform full-blown table open.
#
# Acquire lock on 't2' so upcoming RENAME is
# blocked.
lock tables t2 read;
1991
connect  con12828477_1, localhost, root,,mysqltest;
1992 1993 1994
# The below RENAME should wait on 't2' while
# keeping X lock on 't1'.
rename table t1 to t3, t2 to t1, t3 to t2;
1995
connect  con12828477_2, localhost, root,,mysqltest;
1996 1997 1998 1999
# Wait while the above RENAME is blocked.
# Issue query to I_S which will open 't0' and get
# blocked on 't1' because of RENAME.
select table_name, auto_increment from information_schema.tables where table_schema='mysqltest';
2000
connect  con12828477_3, localhost, root,,mysqltest;
2001 2002 2003 2004
# Wait while the above SELECT is blocked.
#
# Check that it holds no lock on 't0' so it can be renamed.
rename table t0 to t4;
2005
connection default;
2006 2007 2008
#
# Unblock the first RENAME.
unlock tables;
2009
connection con12828477_1;
2010
# Reap the first RENAME
2011
connection con12828477_2;
2012 2013 2014 2015 2016
# Reap SELECT to I_S.
table_name	auto_increment
t0	NULL
t1	NULL
t2	NULL
2017
connection default;
2018 2019 2020 2021 2022 2023 2024 2025 2026
#
# Now test that we don't keep locks in case when we to fill
# I_S table we read .FRM or .TRG file only (this was the case
# for which problem existed).
#
rename table t4 to t0;
# Acquire lock on 't2' so upcoming RENAME is
# blocked.
lock tables t2 read;
2027
connection con12828477_1;
2028 2029 2030
# The below RENAME should wait on 't2' while
# keeping X lock on 't1'.
rename table t1 to t3, t2 to t1, t3 to t2;
2031
connection con12828477_2;
2032 2033 2034 2035
# Wait while the above RENAME is blocked.
# Issue query to I_S which will open 't0' and get
# blocked on 't1' because of RENAME.
select event_object_table, trigger_name from information_schema.triggers where event_object_schema='mysqltest';
2036
connection con12828477_3;
2037 2038 2039 2040
# Wait while the above SELECT is blocked.
#
# Check that it holds no lock on 't0' so it can be renamed.
rename table t0 to t4;
2041
connection default;
2042 2043 2044
#
# Unblock the first RENAME.
unlock tables;
2045
connection con12828477_1;
2046
# Reap the first RENAME
2047
connection con12828477_2;
2048 2049
# Reap SELECT to I_S.
event_object_table	trigger_name
2050 2051 2052 2053
connection default;
disconnect con12828477_1;
disconnect con12828477_2;
disconnect con12828477_3;
2054
#
2055 2056
# MDEV-3818: Query against view over IS tables worse than equivalent query without view
#
2057
create view v1 as select table_schema, table_name, column_name from information_schema.columns;
2058
explain extended
2059 2060
select column_name from v1
where (table_schema = "osm") and (table_name = "test");
2061
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
2062
1	SIMPLE	columns	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	NULL	Using where; Open_frm_only; Scanned 0 databases
2063
Warnings:
2064
Note	1003	select `information_schema`.`columns`.`COLUMN_NAME` AS `column_name` from `information_schema`.`columns` where `information_schema`.`columns`.`TABLE_SCHEMA` = 'osm' and `information_schema`.`columns`.`TABLE_NAME` = 'test'
2065
explain extended
2066 2067 2068
select information_schema.columns.column_name as column_name
from information_schema.columns
where (information_schema.columns.table_schema = 'osm') and (information_schema.columns.table_name = 'test');
2069
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
2070
1	SIMPLE	columns	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	NULL	Using where; Open_frm_only; Scanned 0 databases
2071
Warnings:
2072
Note	1003	select `information_schema`.`columns`.`COLUMN_NAME` AS `column_name` from `information_schema`.`columns` where `information_schema`.`columns`.`TABLE_SCHEMA` = 'osm' and `information_schema`.`columns`.`TABLE_NAME` = 'test'
2073 2074
drop view v1;
#
2075 2076 2077
# Clean-up.
drop database mysqltest;
#
2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092
# Test for bug #16869534 - "QUERYING SUBSET OF COLUMNS DOESN'T USE TABLE
#                           CACHE; OPENED_TABLES INCREASES"
#
SELECT * FROM INFORMATION_SCHEMA.TABLES;
SELECT VARIABLE_VALUE INTO @val1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE
VARIABLE_NAME LIKE 'Opened_tables';
SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES;
# The below SELECT query should give same output as above SELECT query.
SELECT VARIABLE_VALUE INTO @val2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE
VARIABLE_NAME LIKE 'Opened_tables';
# The below select should return '1'
SELECT @val1 = @val2;
@val1 = @val2
1
#
2093 2094
# End of 5.5 tests
#
2095 2096 2097 2098
# 
# MDEV-5723: mysqldump -uroot unusable for multi-database operations, checks all databases
# 
drop database if exists db1;
2099 2100
connect  con1,localhost,root,,;
connection con1;
2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138
create database db1;
use db1;
create table t1 (a int);
create table t2 (a int);
create table t3 (a int);
create database mysqltest;
use mysqltest;
create table t1 (a int);
create table t2 (a int);
create table t3 (a int);
flush tables;
flush status;
SELECT 
LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA 
FROM 
INFORMATION_SCHEMA.FILES 
WHERE 
FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND 
LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME 
FROM INFORMATION_SCHEMA.FILES 
WHERE 
FILE_TYPE = 'DATAFILE' AND 
TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME 
FROM INFORMATION_SCHEMA.PARTITIONS 
WHERE TABLE_SCHEMA IN ('db1')
)
) 
GROUP BY 
LOGFILE_GROUP_NAME, FILE_NAME, ENGINE 
ORDER BY 
LOGFILE_GROUP_NAME;
LOGFILE_GROUP_NAME	FILE_NAME	TOTAL_EXTENTS	INITIAL_SIZE	ENGINE	EXTRA
# This must have Opened_tables=3, not 6.
show status like 'Opened_tables';
Variable_name	Value
Opened_tables	3
drop database mysqltest;
drop database db1;
2139 2140
connection default;
disconnect con1;
2141
set global sql_mode=default;