~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/information_schema.test

  • Committer: Monty Taylor
  • Date: 2008-10-16 09:12:23 UTC
  • mto: (511.1.6 codestyle)
  • mto: This revision was merged to the branch mainline in revision 521.
  • Revision ID: monty@inaugust.com-20081016091223-17ngih0qu9vssjs3
We pass -Wunused-macros now!

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
4
 
 
5
# Test for information_schema.schemata &
2
6
# show databases
3
7
 
4
8
--disable_warnings
5
9
DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5;
6
10
--enable_warnings
7
11
 
8
 
# Test for data_dictionary.tables &
 
12
 
 
13
select * from information_schema.SCHEMATA where schema_name > 'm';
 
14
select schema_name from information_schema.schemata;
 
15
show databases like 't%';
 
16
show databases;
 
17
 
 
18
# Test for information_schema.tables &
9
19
# show tables
10
20
 
11
21
create database mysqltest;
16
26
create table t5 (id int auto_increment primary key);
17
27
insert into t5 values (10);
18
28
 
19
 
--sorted_result
20
 
select table_name from data_dictionary.tables
 
29
select table_name from information_schema.TABLES
21
30
where table_schema = "mysqltest" and table_name like "t%";
22
31
 
23
 
select * from data_dictionary.indexes where TABLE_SCHEMA = "mysqltest";
 
32
select * from information_schema.STATISTICS where TABLE_SCHEMA = "mysqltest";
24
33
 
25
34
show tables like 't%';
26
 
--replace_column 1 #  6 # 7 # 8 # 9 # 10 #
 
35
--replace_column 8 # 12 # 13 #
27
36
show table status;
28
 
show columns from t3 like "a%";
29
 
--sorted_result
30
 
select * from data_dictionary.columns where table_name="t1"
 
37
show full columns from t3 like "a%";
 
38
select * from information_schema.COLUMNS where table_name="t1"
31
39
and column_name= "a";
32
40
 
33
41
connect (user3,localhost,mysqltest_2,,);
34
42
connection user3;
35
 
--sorted_result
36
 
select table_name, column_name from data_dictionary.columns 
 
43
select table_name, column_name, privileges from information_schema.columns 
37
44
where table_schema = 'mysqltest' and table_name = 't1';
38
45
show columns from mysqltest.t1;
39
46
connect (user4,localhost,mysqltest_3,,mysqltest);
43
50
drop tables mysqltest.t4, mysqltest.t1, t2, t3, t5;
44
51
drop database mysqltest;
45
52
 
 
53
# Test for information_schema.CHARACTER_SETS &
 
54
# SHOW CHARACTER SET
 
55
 
 
56
select * from information_schema.CHARACTER_SETS
 
57
where CHARACTER_SET_NAME like 'latin1%';
 
58
 
 
59
# Test for information_schema.COLLATIONS &
 
60
# SHOW COLLATION
 
61
 
 
62
--replace_column 5 #
 
63
select * from information_schema.COLLATIONS
 
64
where COLLATION_NAME like 'latin1%';
 
65
 
 
66
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
 
67
where COLLATION_NAME like 'latin1%';
 
68
 
 
69
#
 
70
# Bug#7213: information_schema: redundant non-standard TABLE_NAMES table
 
71
#
 
72
--error 1109
 
73
select * from information_schema.table_names;
 
74
 
46
75
#
47
76
# Bug#2719 information_schema: errors in "columns"
48
77
#
49
 
--sorted_result
50
 
select column_type from data_dictionary.columns
51
 
where table_schema="data_dictionary" and table_name="COLUMNS" and
 
78
select column_type from information_schema.columns
 
79
where table_schema="information_schema" and table_name="COLUMNS" and
52
80
(column_name="character_set_name" or column_name="collation_name");
53
81
 
54
82
#
55
83
# Bug#2718 information_schema: errors in "tables"
56
84
#
57
 
--replace_column 1 #
58
 
--sorted_result
59
 
select count(*) from data_dictionary.tables where 
60
 
table_schema="data_dictionary" and table_name="COLUMNS";
61
 
 
62
 
--replace_column 1 #
63
 
--sorted_result
64
 
select count(*) from data_dictionary.tables
 
85
select TABLE_ROWS from information_schema.tables where 
 
86
table_schema="information_schema" and table_name="COLUMNS";
 
87
select table_type from information_schema.tables
65
88
where table_schema="mysql" and table_name="user";
66
89
 
67
90
#
 
91
# Bug #7981:SHOW GLOBAL STATUS crashes server
 
92
#
 
93
# We don't actually care about the value, just that it doesn't crash.
 
94
--replace_column 2 #
 
95
show global status like "Threads_running";
 
96
 
 
97
#
68
98
# Bug #7215  information_schema: columns are longtext instead of varchar
69
99
# Bug #7217  information_schema: columns are varbinary() instead of timestamp
70
100
#
71
 
--sorted_result
72
 
select table_schema, table_name, column_name from data_dictionary.columns where data_type = 'longtext';
73
 
--sorted_result
74
 
select table_name, column_name, data_type from data_dictionary.columns where data_type = 'datetime';
 
101
select table_schema,table_name, column_name from
 
102
information_schema.columns 
 
103
where data_type = 'longtext';
 
104
select table_name, column_name, data_type from information_schema.columns
 
105
where data_type = 'datetime';
75
106
 
76
107
#
77
 
# Bug #8164  subquery with data_dictionary.COLUMNS, 100 % CPU
 
108
# Bug #8164  subquery with INFORMATION_SCHEMA.COLUMNS, 100 % CPU
78
109
#
79
 
--sorted_result
80
 
SELECT COUNT(*) FROM data_dictionary.tables A
 
110
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
81
111
WHERE NOT EXISTS 
82
 
(SELECT * FROM data_dictionary.columns B
 
112
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS B
83
113
  WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
84
114
  AND A.TABLE_NAME = B.TABLE_NAME);
85
115
 
96
126
  x_real REAL,
97
127
  x_float FLOAT,
98
128
  x_double_precision DOUBLE PRECISION );
99
 
--sorted_result
100
129
SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH
101
 
FROM data_dictionary.columns
 
130
FROM INFORMATION_SCHEMA.COLUMNS
102
131
WHERE TABLE_NAME= 't1';
103
132
drop table t1;
104
133
 
106
135
# Bug #9404  information_schema: Weird error messages
107
136
# with SELECT SUM() ... GROUP BY queries
108
137
#
109
 
SELECT table_schema, count(*) FROM data_dictionary.tables
110
 
WHERE table_name NOT LIKE 'ndb_%' AND 
111
 
table_name NOT LIKE 'falcon%'
112
 
GROUP BY TABLE_SCHEMA ORDER BY table_schema;
 
138
SELECT table_schema, count(*) FROM information_schema.TABLES
 
139
WHERE table_name NOT LIKE 'ndb_%' AND table_name NOT LIKE 'falcon%' GROUP BY TABLE_SCHEMA;
 
140
 
 
141
#
 
142
# Bug #9434 SHOW CREATE DATABASE information_schema;
 
143
#
 
144
show create database information_schema;
113
145
 
114
146
#
115
147
# Bug #11057 information_schema: columns table has some questionable contents
116
148
# Bug #12301 information_schema: NUMERIC_SCALE must be 0 for integer columns
117
149
#
118
150
create table t1(f1 LONGBLOB, f2 LONGTEXT);
119
 
--sorted_result
120
151
select column_name,data_type,CHARACTER_OCTET_LENGTH,
121
152
       CHARACTER_MAXIMUM_LENGTH
122
 
from data_dictionary.columns
 
153
from information_schema.columns
123
154
where table_name='t1';
124
155
drop table t1;
125
156
create table t1(f1 int, f2 int, f3 BIGINT, f4 int,
126
157
                f5 BIGINT, f6 int, f7 int);
127
 
--sorted_result
128
158
select column_name, NUMERIC_PRECISION, NUMERIC_SCALE
129
 
from data_dictionary.columns
 
159
from information_schema.columns
130
160
where table_name='t1';
131
161
drop table t1;
132
162
 
134
164
# Bug#12518 COLUMN_DEFAULT has wrong value if NOT NULL is set
135
165
#
136
166
create table t1 (a int not null, b int);
137
 
--sorted_result
138
 
select column_name, column_default from data_dictionary.columns
 
167
use information_schema;
 
168
select column_name, column_default from columns
139
169
  where table_schema='test' and table_name='t1';
140
170
use test;
141
171
show columns from t1;
142
172
drop table t1;
143
173
 
144
174
#
 
175
# Bug #9846 Inappropriate error displayed while dropping table from 'INFORMATION_SCHEMA'
 
176
#
 
177
--error ER_PARSE_ERROR
 
178
alter database information_schema;
 
179
--error ER_DBACCESS_DENIED_ERROR
 
180
drop database information_schema;
 
181
--error 1044
 
182
drop table information_schema.tables;
 
183
--error 1044
 
184
alter table information_schema.tables;
 
185
#
 
186
# Bug #9683 INFORMATION_SCH: Creation of temporary table allowed in Information_schema DB
 
187
#
 
188
use information_schema;
 
189
--error 1044
 
190
create temporary table schemata(f1 char(10));
 
191
#
145
192
#
146
193
# Bug#14089 FROM list subquery always fails when information_schema is current database
147
194
#
148
195
use test;
149
196
create table t1(id int);
150
197
insert into t1(id) values (1);
151
 
--sorted_result
152
198
select 1 from (select 1 from test.t1) a;
153
 
use data_dictionary;
154
 
--sorted_result
 
199
use information_schema;
155
200
select 1 from (select 1 from test.t1) a;
156
201
use test;
157
202
drop table t1;
158
203
 
 
204
# Bug #14387 SHOW COLUMNS doesn't work on temporary tables
 
205
# Bug #15224 SHOW INDEX from temporary table doesn't work
 
206
# Bug #12770 DESC cannot display the info. about temporary table
 
207
#
 
208
create temporary table t1(f1 int, index(f1));
 
209
show columns from t1;
 
210
describe t1;
 
211
show indexes from t1;
 
212
drop table t1;
 
213
 
159
214
#
160
215
# Bug#14271 I_S: columns has no size for (var)binary columns
161
216
#
162
217
create table t1(f1 varbinary(32), f2 varbinary(64));
163
 
--sorted_result
164
218
select character_maximum_length, character_octet_length
165
 
from data_dictionary.columns where table_name='t1';
 
219
from information_schema.columns where table_name='t1';
166
220
drop table t1;
167
221
 
168
 
##
169
 
## Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema
170
 
##
 
222
#
 
223
# Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema
 
224
#
171
225
select column_type, group_concat(table_schema, '.', table_name), count(*) as num
172
 
from data_dictionary.columns where
173
 
table_schema='data_dictionary' and
 
226
from information_schema.columns where
 
227
table_schema='information_schema' and
174
228
(column_type = 'varchar(7)' or column_type = 'varchar(20)'
175
229
 or column_type = 'varchar(27)')
176
 
group by column_type order by column_type, num;
 
230
group by column_type order by num;
177
231
 
178
232
#
179
233
# Bug#19236 bad COLUMNS.CHARACTER_MAXIMUM_LENGHT and CHARACTER_OCTET_LENGTH
180
234
#
181
235
create table t1(f1 char(1) not null, f2 char(9) not null);
182
 
--sorted_result
183
236
select CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH from
184
 
data_dictionary.columns where table_schema='test' and table_name = 't1';
 
237
information_schema.columns where table_schema='test' and table_name = 't1';
185
238
drop table t1;
186
239
 
187
240
#
190
243
set @a:= '.';
191
244
create table t1(f1 char(5));
192
245
create table t2(f1 char(5));
193
 
--sorted_result
194
246
select concat(@a, table_name), @a, table_name
195
 
from data_dictionary.tables where table_schema = 'test';
 
247
from information_schema.tables where table_schema = 'test';
196
248
drop table t1,t2;
197
249
 
198
250
#
200
252
#
201
253
 
202
254
SELECT t.table_name, c1.column_name
203
 
  FROM data_dictionary.tables t
 
255
  FROM information_schema.tables t
204
256
       INNER JOIN
205
 
       data_dictionary.columns c1
 
257
       information_schema.columns c1
206
258
       ON t.table_schema = c1.table_schema AND
207
259
          t.table_name = c1.table_name
208
 
  WHERE t.table_schema = 'data_dictionary' AND
 
260
  WHERE t.table_schema = 'information_schema' AND
209
261
        c1.ordinal_position =
210
262
        ( SELECT COALESCE(MIN(c2.ordinal_position),1)
211
 
            FROM data_dictionary.columns c2
 
263
            FROM information_schema.columns c2
212
264
            WHERE c2.table_schema = t.table_schema AND
213
265
                  c2.table_name = t.table_name AND
214
266
                  c2.column_name LIKE '%SCHEMA%'
215
267
        )
216
 
  AND t.table_name NOT LIKE 'falcon%'
217
 
  ORDER BY t.table_name, c1.column_name;
218
 
 
 
268
  AND t.table_name NOT LIKE 'falcon%';
219
269
SELECT t.table_name, c1.column_name
220
 
  FROM data_dictionary.tables t
 
270
  FROM information_schema.tables t
221
271
       INNER JOIN
222
 
       data_dictionary.columns c1
 
272
       information_schema.columns c1
223
273
       ON t.table_schema = c1.table_schema AND
224
274
          t.table_name = c1.table_name
225
 
  WHERE t.table_schema = 'data_dictionary' AND
 
275
  WHERE t.table_schema = 'information_schema' AND
226
276
        c1.ordinal_position =
227
277
        ( SELECT COALESCE(MIN(c2.ordinal_position),1)
228
 
            FROM data_dictionary.columns c2
229
 
            WHERE c2.table_schema = 'data_dictionary' AND
 
278
            FROM information_schema.columns c2
 
279
            WHERE c2.table_schema = 'information_schema' AND
230
280
                  c2.table_name = t.table_name AND
231
281
                  c2.column_name LIKE '%SCHEMA%'
232
282
        )
233
 
  AND t.table_name NOT LIKE 'falcon%'
234
 
  ORDER BY t.table_name, c1.column_name;
 
283
  AND t.table_name NOT LIKE 'falcon%';
235
284
 
236
285
#
237
286
# Bug#21231: query with a simple non-correlated subquery over
238
287
#            INFORMARTION_SCHEMA.TABLES 
239
288
#
240
289
 
241
 
SELECT MAX(table_name) FROM data_dictionary.tables;
242
 
SELECT table_name from data_dictionary.tables
 
290
SELECT MAX(table_name) FROM information_schema.tables;
 
291
SELECT table_name from information_schema.tables
243
292
  WHERE table_name=(SELECT MAX(table_name)
244
 
                      FROM data_dictionary.tables)
245
 
  ORDER BY table_name;
246
 
 
 
293
                      FROM information_schema.tables);
 
294
#
247
295
# Bug#23299 Some queries against INFORMATION_SCHEMA with subqueries fail
248
296
#
249
297
create table t1 (f1 int);
250
298
create table t2 (f1 int, f2 int);
251
299
 
252
 
#select table_name from data_dictionary.tables
253
 
#where table_schema = 'test' and table_name not in
254
 
#(select table_name from data_dictionary.columns
255
 
# where table_schema = 'test' and column_name = 'f3')
256
 
#ORDER BY table_name;
257
 
 
 
300
select table_name from information_schema.tables
 
301
where table_schema = 'test' and table_name not in
 
302
(select table_name from information_schema.columns
 
303
 where table_schema = 'test' and column_name = 'f3');
258
304
drop table t1,t2;
259
305
 
260
306
 
261
307
#
262
308
# Bug#24630  Subselect query crashes mysqld
263
309
#
264
 
--sorted_result
265
 
select 1 as f1 from data_dictionary.tables  where "CHARACTER_SETS"=
266
 
(select cast(table_name as char)  from data_dictionary.tables
 
310
select 1 as f1 from information_schema.tables  where "CHARACTER_SETS"=
 
311
(select cast(table_name as char)  from information_schema.tables
267
312
 order by table_name limit 1) limit 1;
268
313
 
269
314
select t.table_name, group_concat(t.table_schema, '.', t.table_name),
270
315
       count(*) as num1
271
 
from data_dictionary.tables t
272
 
inner join data_dictionary.columns c1
 
316
from information_schema.tables t
 
317
inner join information_schema.columns c1
273
318
on t.table_schema = c1.table_schema AND t.table_name = c1.table_name
274
 
where t.table_schema = 'data_dictionary' AND
 
319
where t.table_schema = 'information_schema' AND
275
320
      t.table_name not like 'falcon%' AND
276
321
        c1.ordinal_position =
277
322
        (select isnull(c2.column_type) -
278
323
         isnull(group_concat(c2.table_schema, '.', c2.table_name)) +
279
324
         count(*) as num
280
 
         from data_dictionary.columns c2 where
281
 
         c2.table_schema='data_dictionary' and
 
325
         from information_schema.columns c2 where
 
326
         c2.table_schema='information_schema' and
282
327
         (c2.column_type = 'varchar(7)' or c2.column_type = 'varchar(20)')
283
328
          group by c2.column_type order by num limit 1)
284
329
group by t.table_name order by num1, t.table_name;
304
349
  f7 datetime not null,
305
350
  f8 datetime default '2006-01-01'
306
351
);
307
 
#select column_default from data_dictionary.columns where table_name= 't1' ORDER BY column_default;
 
352
select column_default from information_schema.columns where table_name= 't1';
308
353
show columns from t1;
309
354
drop table t1;
310
355
 
 
356
#
 
357
# Bug#30079 A check for "hidden" I_S tables is flawed
 
358
#
 
359
--error 1109
 
360
show fields from information_schema.table_names;
 
361
--error 1109
 
362
show keys from information_schema.table_names;
 
363
 
311
364
SET max_heap_table_size = DEFAULT;
312
365
USE test;
313
366
 
314
367
--echo End of 5.0 tests.
315
368
 
316
369
#
317
 
# Bug#30795 Query on data_dictionary.schemas, wrong result
 
370
# Bug#30795 Query on INFORMATION_SCHEMA.SCHEMATA, wrong result
318
371
#
319
 
--sorted_result
320
 
SELECT SCHEMA_NAME FROM data_dictionary.schemas
321
 
WHERE SCHEMA_NAME ='data_dictionary';
 
372
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
 
373
WHERE SCHEMA_NAME ='information_schema';
322
374
                                                                                                 
323
375
#
324
376
# Bug#31381 Error in retrieving Data from INFORMATION_SCHEMA
325
377
#
326
 
--sorted_result
327
 
SELECT TABLE_COLLATION FROM data_dictionary.tables
 
378
SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES
328
379
WHERE TABLE_SCHEMA='mysql' and TABLE_NAME= 'db';
329
380
 
330
 
--echo #
331
 
--echo # Test that the query is visible to self and others.
332
 
--echo #
333
 
 
334
 
--sorted_result
335
 
SELECT info FROM data_dictionary.processlist WHERE id = CONNECTION_ID();
336
 
 
337
 
#
338
 
# do a query on the PROCESSLIST table in I_S to ensure it works correctly
339
 
#
340
 
--sorted_result
341
 
SELECT info, command, db
342
 
FROM data_dictionary.processlist
343
 
WHERE id = CONNECTION_ID();
344
 
 
345
 
#
346
 
# query TABLES
347
 
#
348
 
#SELECT table_schema, table_name
349
 
#FROM data_dictionary.tables
350
 
#WHERE table_schema="data_dictionary"
351
 
#ORDER BY table_name;
 
381
#
 
382
# Bug#31633 Information schema = NULL queries crash the server
 
383
#
 
384
select * from information_schema.columns where table_schema = NULL;
 
385
select * from `information_schema`.`COLUMNS` where `TABLE_NAME` = NULL;
 
386
select * from `information_schema`.`KEY_COLUMN_USAGE` where `TABLE_SCHEMA` = NULL;
 
387
select * from `information_schema`.`KEY_COLUMN_USAGE` where `TABLE_NAME` = NULL;
 
388
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `CONSTRAINT_SCHEMA` = NULL;
 
389
select * from `information_schema`.`REFERENTIAL_CONSTRAINTS` where `TABLE_NAME` = NULL;
 
390
select * from information_schema.schemata where schema_name = NULL;
 
391
select * from `information_schema`.`STATISTICS` where `TABLE_SCHEMA` = NULL;
 
392
select * from `information_schema`.`STATISTICS` where `TABLE_NAME` = NULL;
 
393
select * from information_schema.tables where table_schema = NULL;
 
394
select * from information_schema.tables where table_catalog = NULL;
 
395
select * from information_schema.tables where table_name = NULL;
 
396
select * from `information_schema`.`TABLE_CONSTRAINTS` where `TABLE_SCHEMA` = NULL;
 
397
select * from `information_schema`.`TABLE_CONSTRAINTS` where `TABLE_NAME` = NULL;