1
# Test for data_dictionary.schemas &
1
# check that CSV engine was compiled in, as the result of the test depends
2
# on the presence of the log tables (which are CSV-based).
3
--source include/have_csv.inc
5
# Test for information_schema.schemata &
5
9
DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
8
# Test for data_dictionary.tables &
13
show variables where variable_name like "skip_show_database";
16
select * from information_schema.SCHEMATA where schema_name > 'm';
17
select schema_name from information_schema.schemata;
18
show databases like 't%';
20
show databases where `database` = 't%';
22
# Test for information_schema.tables &
11
25
create database mysqltest;
16
30
create table t5 (id int auto_increment primary key);
17
31
insert into t5 values (10);
20
select table_name from data_dictionary.tables
33
select table_name from information_schema.TABLES
21
34
where table_schema = "mysqltest" and table_name like "t%";
23
select * from data_dictionary.indexes where TABLE_SCHEMA = "mysqltest";
36
select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
37
show keys from t3 where Key_name = "a_data";
25
39
show tables like 't%';
26
--replace_column 1 # 6 # 7 # 8 # 9 # 10 #
40
--replace_column 8 # 12 # 13 #
28
show columns from t3 like "a%";
30
select * from data_dictionary.columns where table_name="t1"
42
show full columns from t3 like "a%";
43
show full columns from mysql.db like "Insert%";
44
select * from information_schema.COLUMNS where table_name="t1"
31
45
and column_name= "a";
46
show columns from mysqltest.t1 where field like "%a%";
33
48
connect (user3,localhost,mysqltest_2,,);
36
select table_name, column_name from data_dictionary.columns
50
select table_name, column_name, privileges from information_schema.columns
37
51
where table_schema = 'mysqltest' and table_name = 't1';
38
52
show columns from mysqltest.t1;
39
53
connect (user4,localhost,mysqltest_3,,mysqltest);
43
57
drop tables mysqltest.t4, mysqltest.t1, t2, t3, t5;
44
58
drop database mysqltest;
60
# Test for information_schema.CHARACTER_SETS &
63
select * from information_schema.CHARACTER_SETS
64
where CHARACTER_SET_NAME like 'latin1%';
65
SHOW CHARACTER SET LIKE 'latin1%';
66
SHOW CHARACTER SET WHERE charset like 'latin1%';
68
# Test for information_schema.COLLATIONS &
72
select * from information_schema.COLLATIONS
73
where COLLATION_NAME like 'latin1%';
75
SHOW COLLATION LIKE 'latin1%';
77
SHOW COLLATION WHERE collation like 'latin1%';
79
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
80
where COLLATION_NAME like 'latin1%';
83
# Bug#7213: information_schema: redundant non-standard TABLE_NAMES table
86
select * from information_schema.table_names;
47
89
# Bug#2719 information_schema: errors in "columns"
50
select column_type from data_dictionary.columns
51
where table_schema="data_dictionary" and table_name="COLUMNS" and
91
select column_type from information_schema.columns
92
where table_schema="information_schema" and table_name="COLUMNS" and
52
93
(column_name="character_set_name" or column_name="collation_name");
55
96
# Bug#2718 information_schema: errors in "tables"
59
select count(*) from data_dictionary.tables where
60
table_schema="data_dictionary" and table_name="COLUMNS";
64
select count(*) from data_dictionary.tables
98
select TABLE_ROWS from information_schema.tables where
99
table_schema="information_schema" and table_name="COLUMNS";
100
select table_type from information_schema.tables
65
101
where table_schema="mysql" and table_name="user";
103
# test for 'show open tables ... where'
104
show open tables where `table` like "user";
105
# test for 'show status ... where'
106
show status where variable_name like "%database%";
107
# test for 'show variables ... where'
108
show variables where variable_name like "skip_show_databas";
111
# Bug #7981:SHOW GLOBAL STATUS crashes server
113
# We don't actually care about the value, just that it doesn't crash.
115
show global status like "Threads_running";
68
118
# Bug #7215 information_schema: columns are longtext instead of varchar
69
119
# Bug #7217 information_schema: columns are varbinary() instead of timestamp
72
select table_schema, table_name, column_name from data_dictionary.columns where data_type = 'longtext';
74
select table_name, column_name, data_type from data_dictionary.columns where data_type = 'datetime';
121
select table_schema,table_name, column_name from
122
information_schema.columns
123
where data_type = 'longtext';
124
select table_name, column_name, data_type from information_schema.columns
125
where data_type = 'datetime';
77
# Bug #8164 subquery with data_dictionary.COLUMNS, 100 % CPU
128
# Bug #8164 subquery with INFORMATION_SCHEMA.COLUMNS, 100 % CPU
80
SELECT COUNT(*) FROM data_dictionary.tables A
130
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
82
(SELECT * FROM data_dictionary.columns B
132
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS B
83
133
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
84
134
AND A.TABLE_NAME = B.TABLE_NAME);
106
155
# Bug #9404 information_schema: Weird error messages
107
156
# with SELECT SUM() ... GROUP BY queries
110
SELECT table_schema, count(*) FROM data_dictionary.tables
111
WHERE table_name NOT LIKE 'ndb_%' AND
112
table_name NOT LIKE 'falcon%'
113
GROUP BY TABLE_SCHEMA ORDER BY table_schema;
158
SELECT table_schema, count(*) FROM information_schema.TABLES
159
WHERE table_name NOT LIKE 'ndb_%' AND table_name NOT LIKE 'falcon%' GROUP BY TABLE_SCHEMA;
162
# Bug #9434 SHOW CREATE DATABASE information_schema;
164
show create database information_schema;
116
167
# Bug #11057 information_schema: columns table has some questionable contents
117
168
# Bug #12301 information_schema: NUMERIC_SCALE must be 0 for integer columns
119
170
create table t1(f1 LONGBLOB, f2 LONGTEXT);
121
171
select column_name,data_type,CHARACTER_OCTET_LENGTH,
122
172
CHARACTER_MAXIMUM_LENGTH
123
from data_dictionary.columns
173
from information_schema.columns
124
174
where table_name='t1';
126
create table t1(f1 int, f2 int, f3 BIGINT, f4 int,
127
f5 BIGINT, f6 int, f7 int);
176
create table t1(f1 tinyint, f2 SMALLINT, f3 mediumint, f4 int,
177
f5 BIGINT, f6 BIT, f7 bit(64));
129
178
select column_name, NUMERIC_PRECISION, NUMERIC_SCALE
130
from data_dictionary.columns
179
from information_schema.columns
131
180
where table_name='t1';
135
184
# Bug#12518 COLUMN_DEFAULT has wrong value if NOT NULL is set
137
186
create table t1 (a int not null, b int);
139
select column_name, column_default from data_dictionary.columns
187
use information_schema;
188
select column_name, column_default from columns
140
189
where table_schema='test' and table_name='t1';
142
191
show columns from t1;
195
# Bug #12636: SHOW TABLE STATUS with where condition containing a subquery
196
# over information schema
199
CREATE TABLE t1 (a int);
200
CREATE TABLE t2 (b int);
202
--replace_column 8 # 12 # 13 #
203
SHOW TABLE STATUS FROM test
204
WHERE name IN ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
205
WHERE TABLE_SCHEMA='test' AND TABLE_TYPE='BASE TABLE');
210
# Bug #9846 Inappropriate error displayed while dropping table from 'INFORMATION_SCHEMA'
212
--error ER_PARSE_ERROR
213
alter database information_schema;
214
--error ER_DBACCESS_DENIED_ERROR
215
drop database information_schema;
217
drop table information_schema.tables;
219
alter table information_schema.tables;
221
# Bug #9683 INFORMATION_SCH: Creation of temporary table allowed in Information_schema DB
223
use information_schema;
225
create temporary table schemata(f1 char(10));
147
228
# Bug#14089 FROM list subquery always fails when information_schema is current database
150
231
create table t1(id int);
151
232
insert into t1(id) values (1);
153
233
select 1 from (select 1 from test.t1) a;
234
use information_schema;
156
235
select 1 from (select 1 from test.t1) a;
239
# Bug #14387 SHOW COLUMNS doesn't work on temporary tables
240
# Bug #15224 SHOW INDEX from temporary table doesn't work
241
# Bug #12770 DESC cannot display the info. about temporary table
243
create temporary table t1(f1 int, index(f1));
244
show columns from t1;
246
show indexes from t1;
161
250
# Bug#14271 I_S: columns has no size for (var)binary columns
163
create table t1(f1 varbinary(32), f2 varbinary(64));
252
create table t1(f1 binary(32), f2 varbinary(64));
165
253
select character_maximum_length, character_octet_length
166
from data_dictionary.columns where table_name='t1';
254
from information_schema.columns where table_name='t1';
170
## Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema
258
# Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema
172
260
select column_type, group_concat(table_schema, '.', table_name), count(*) as num
173
from data_dictionary.columns where
174
table_schema='data_dictionary' and
261
from information_schema.columns where
262
table_schema='information_schema' and
175
263
(column_type = 'varchar(7)' or column_type = 'varchar(20)'
176
264
or column_type = 'varchar(27)')
177
group by column_type order by column_type, num;
265
group by column_type order by num;
180
268
# Bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH
182
create table t1(f1 char(1) not null, f2 char(9) not null);
270
create table t1(f1 char(1) not null, f2 char(9) not null)
271
default character set utf8;
184
272
select CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH from
185
data_dictionary.columns where table_schema='test' and table_name = 't1';
273
information_schema.columns where table_schema='test' and table_name = 't1';
203
290
SELECT t.table_name, c1.column_name
204
FROM data_dictionary.tables t
291
FROM information_schema.tables t
206
data_dictionary.columns c1
293
information_schema.columns c1
207
294
ON t.table_schema = c1.table_schema AND
208
295
t.table_name = c1.table_name
209
WHERE t.table_schema = 'data_dictionary' AND
296
WHERE t.table_schema = 'information_schema' AND
210
297
c1.ordinal_position =
211
298
( SELECT COALESCE(MIN(c2.ordinal_position),1)
212
FROM data_dictionary.columns c2
299
FROM information_schema.columns c2
213
300
WHERE c2.table_schema = t.table_schema AND
214
301
c2.table_name = t.table_name AND
215
302
c2.column_name LIKE '%SCHEMA%'
217
AND t.table_name NOT LIKE 'falcon%'
218
ORDER BY t.table_name, c1.column_name;
304
AND t.table_name NOT LIKE 'falcon%';
220
305
SELECT t.table_name, c1.column_name
221
FROM data_dictionary.tables t
306
FROM information_schema.tables t
223
data_dictionary.columns c1
308
information_schema.columns c1
224
309
ON t.table_schema = c1.table_schema AND
225
310
t.table_name = c1.table_name
226
WHERE t.table_schema = 'data_dictionary' AND
311
WHERE t.table_schema = 'information_schema' AND
227
312
c1.ordinal_position =
228
313
( SELECT COALESCE(MIN(c2.ordinal_position),1)
229
FROM data_dictionary.columns c2
230
WHERE c2.table_schema = 'data_dictionary' AND
314
FROM information_schema.columns c2
315
WHERE c2.table_schema = 'information_schema' AND
231
316
c2.table_name = t.table_name AND
232
317
c2.column_name LIKE '%SCHEMA%'
234
AND t.table_name NOT LIKE 'falcon%'
235
ORDER BY t.table_name, c1.column_name;
319
AND t.table_name NOT LIKE 'falcon%';
238
322
# Bug#21231: query with a simple non-correlated subquery over
239
323
# INFORMARTION_SCHEMA.TABLES
242
SELECT MAX(table_name) FROM data_dictionary.tables;
243
SELECT table_name from data_dictionary.tables
326
SELECT MAX(table_name) FROM information_schema.tables;
327
SELECT table_name from information_schema.tables
244
328
WHERE table_name=(SELECT MAX(table_name)
245
FROM data_dictionary.tables)
329
FROM information_schema.tables);
248
331
# Bug#23299 Some queries against INFORMATION_SCHEMA with subqueries fail
250
create table t1 (f1 int);
251
create table t2 (f1 int, f2 int);
253
#select table_name from data_dictionary.tables
254
#where table_schema = 'test' and table_name not in
255
#(select table_name from data_dictionary.columns
256
# where table_schema = 'test' and column_name = 'f3')
257
#ORDER BY table_name;
333
create table t1 (f1 int(11));
334
create table t2 (f1 int(11), f2 int(11));
336
select table_name from information_schema.tables
337
where table_schema = 'test' and table_name not in
338
(select table_name from information_schema.columns
339
where table_schema = 'test' and column_name = 'f3');
259
340
drop table t1,t2;
263
344
# Bug#24630 Subselect query crashes mysqld
266
select 1 as f1 from data_dictionary.tables where "CHARACTER_SETS"=
267
(select cast(table_name as char) from data_dictionary.tables
346
select 1 as f1 from information_schema.tables where "CHARACTER_SETS"=
347
(select cast(table_name as char) from information_schema.tables
268
348
order by table_name limit 1) limit 1;
270
350
select t.table_name, group_concat(t.table_schema, '.', t.table_name),
272
from data_dictionary.tables t
273
inner join data_dictionary.columns c1
352
from information_schema.tables t
353
inner join information_schema.columns c1
274
354
on t.table_schema = c1.table_schema AND t.table_name = c1.table_name
275
where t.table_schema = 'data_dictionary' AND
355
where t.table_schema = 'information_schema' AND
276
356
t.table_name not like 'falcon%' AND
277
357
c1.ordinal_position =
278
358
(select isnull(c2.column_type) -
279
359
isnull(group_concat(c2.table_schema, '.', c2.table_name)) +
281
from data_dictionary.columns c2 where
282
c2.table_schema='data_dictionary' and
361
from information_schema.columns c2 where
362
c2.table_schema='information_schema' and
283
363
(c2.column_type = 'varchar(7)' or c2.column_type = 'varchar(20)')
284
364
group by c2.column_type order by num limit 1)
285
365
group by t.table_name order by num1, t.table_name;
305
385
f7 datetime not null,
306
386
f8 datetime default '2006-01-01'
308
#select column_default from data_dictionary.columns where table_name= 't1' ORDER BY column_default;
388
select column_default from information_schema.columns where table_name= 't1';
309
389
show columns from t1;
393
# Bug#30079 A check for "hidden" I_S tables is flawed
396
show fields from information_schema.table_names;
398
show keys from information_schema.table_names;
312
400
SET max_heap_table_size = DEFAULT;
315
403
--echo End of 5.0 tests.
318
# Bug#30795 Query on data_dictionary.schemas, wrong result
406
# Bug#30795 Query on INFORMATION_SCHEMA.SCHEMATA, wrong result
321
SELECT SCHEMA_NAME FROM data_dictionary.schemas
322
WHERE SCHEMA_NAME ='data_dictionary';
408
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
409
WHERE SCHEMA_NAME ='information_schema';
325
412
# Bug#31381 Error in retrieving Data from INFORMATION_SCHEMA
328
SELECT TABLE_COLLATION FROM data_dictionary.tables
414
SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES
329
415
WHERE TABLE_SCHEMA='mysql' and TABLE_NAME= 'db';
332
--echo # Test that the query is visible to self and others.
336
SELECT info FROM data_dictionary.processlist WHERE id = CONNECTION_ID();
339
# do a query on the PROCESSLIST table in I_S to ensure it works correctly
342
SELECT info, command, db
343
FROM data_dictionary.processlist
344
WHERE id = CONNECTION_ID();
349
#SELECT table_schema, table_name
350
#FROM data_dictionary.tables
351
#WHERE table_schema="data_dictionary"
352
#ORDER BY table_name;
418
# Bug#31633 Information schema = NULL queries crash the server
420
select * from information_schema.columns where table_schema = NULL;
421
select * from `information_schema`.`COLUMNS` where `TABLE_NAME` = NULL;
422
select * from `information_schema`.`KEY_COLUMN_USAGE` where `TABLE_SCHEMA` = NULL;
423
select * from `information_schema`.`KEY_COLUMN_USAGE` where `TABLE_NAME` = NULL;
424
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `CONSTRAINT_SCHEMA` = NULL;
425
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `TABLE_NAME` = NULL;
426
select * from information_schema.schemata where schema_name = NULL;
427
select * from `information_schema`.`STATISTICS` where `TABLE_SCHEMA` = NULL;
428
select * from `information_schema`.`STATISTICS` where `TABLE_NAME` = NULL;
429
select * from information_schema.tables where table_schema = NULL;
430
select * from information_schema.tables where table_catalog = NULL;
431
select * from information_schema.tables where table_name = NULL;
432
select * from `information_schema`.`TABLE_CONSTRAINTS` where `TABLE_SCHEMA` = NULL;
433
select * from `information_schema`.`TABLE_CONSTRAINTS` where `TABLE_NAME` = NULL;