33
33
create table mysqltest.t4(a int);
34
34
create table t5 (id int auto_increment primary key);
35
35
insert into t5 values (10);
36
create view v1 (c) as select table_name from information_schema.TABLES where table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status';
36
create view v1 (c) as select table_name
37
from information_schema.TABLES
38
where table_name not like 'ndb_%' and
39
table_name not like 'falcon%';
841
844
grant select on test.* to mysqltest_4@localhost;
842
845
SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGES FROM INFORMATION_SCHEMA.COLUMNS
843
where COLUMN_NAME='TABLE_NAME';
846
WHERE COLUMN_NAME='TABLE_NAME' AND TABLE_NAME NOT LIKE 'FALCON%';
844
847
TABLE_NAME COLUMN_NAME PRIVILEGES
845
848
COLUMNS TABLE_NAME select
846
849
COLUMN_PRIVILEGES TABLE_NAME select
1230
1234
DROP FUNCTION f1;
1231
1235
DROP PROCEDURE p1;
1232
1236
DROP USER mysql_bug20230@localhost;
1233
SELECT t.table_name, c1.column_name
1234
FROM information_schema.tables t
1236
information_schema.columns c1
1237
ON t.table_schema = c1.table_schema AND
1238
t.table_name = c1.table_name
1239
WHERE t.table_schema = 'information_schema' AND
1240
c1.ordinal_position =
1241
( SELECT COALESCE(MIN(c2.ordinal_position),1)
1242
FROM information_schema.columns c2
1243
WHERE c2.table_schema = t.table_schema AND
1244
c2.table_name = t.table_name AND
1245
c2.column_name LIKE '%SCHEMA%'
1247
table_name column_name
1248
CHARACTER_SETS CHARACTER_SET_NAME
1249
COLLATIONS COLLATION_NAME
1250
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
1251
COLUMNS TABLE_SCHEMA
1252
COLUMN_PRIVILEGES TABLE_SCHEMA
1256
GLOBAL_STATUS VARIABLE_NAME
1257
GLOBAL_VARIABLES VARIABLE_NAME
1258
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
1259
PARAMETERS SPECIFIC_SCHEMA
1260
PARTITIONS TABLE_SCHEMA
1264
REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
1265
ROUTINES ROUTINE_SCHEMA
1266
SCHEMATA SCHEMA_NAME
1267
SCHEMA_PRIVILEGES TABLE_SCHEMA
1268
SESSION_STATUS VARIABLE_NAME
1269
SESSION_VARIABLES VARIABLE_NAME
1270
STATISTICS TABLE_SCHEMA
1272
TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
1273
TABLE_PRIVILEGES TABLE_SCHEMA
1274
TRIGGERS TRIGGER_SCHEMA
1275
USER_PRIVILEGES GRANTEE
1277
SELECT t.table_name, c1.column_name
1278
FROM information_schema.tables t
1280
information_schema.columns c1
1281
ON t.table_schema = c1.table_schema AND
1282
t.table_name = c1.table_name
1283
WHERE t.table_schema = 'information_schema' AND
1284
c1.ordinal_position =
1285
( SELECT COALESCE(MIN(c2.ordinal_position),1)
1286
FROM information_schema.columns c2
1287
WHERE c2.table_schema = 'information_schema' AND
1288
c2.table_name = t.table_name AND
1289
c2.column_name LIKE '%SCHEMA%'
1291
table_name column_name
1292
CHARACTER_SETS CHARACTER_SET_NAME
1293
COLLATIONS COLLATION_NAME
1294
COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME
1295
COLUMNS TABLE_SCHEMA
1296
COLUMN_PRIVILEGES TABLE_SCHEMA
1300
GLOBAL_STATUS VARIABLE_NAME
1301
GLOBAL_VARIABLES VARIABLE_NAME
1302
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
1303
PARAMETERS SPECIFIC_SCHEMA
1304
PARTITIONS TABLE_SCHEMA
1308
REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
1309
ROUTINES ROUTINE_SCHEMA
1310
SCHEMATA SCHEMA_NAME
1311
SCHEMA_PRIVILEGES TABLE_SCHEMA
1312
SESSION_STATUS VARIABLE_NAME
1313
SESSION_VARIABLES VARIABLE_NAME
1314
STATISTICS TABLE_SCHEMA
1316
TABLE_CONSTRAINTS CONSTRAINT_SCHEMA
1317
TABLE_PRIVILEGES TABLE_SCHEMA
1318
TRIGGERS TRIGGER_SCHEMA
1319
USER_PRIVILEGES GRANTEE
1321
1237
SELECT MAX(table_name) FROM information_schema.tables;
1322
1238
MAX(table_name)
1373
1289
from information_schema.tables t
1374
1290
inner join information_schema.columns c1
1375
1291
on t.table_schema = c1.table_schema AND t.table_name = c1.table_name
1376
where t.table_schema = 'information_schema' and
1292
where t.table_schema = 'information_schema' AND
1293
t.table_name not like 'falcon%' AND
1377
1294
c1.ordinal_position =
1378
1295
(select isnull(c2.column_type) -
1379
1296
isnull(group_concat(c2.table_schema, '.', c2.table_name)) +
1688
1605
drop procedure p1;
1689
1606
drop procedure p2;
1690
1607
drop function f1;
1609
# Bug#35955 Regression: I_S table cause reduced privilege requirements in SELECT.
1611
DROP DATABASE IF EXISTS testdb1;
1612
CREATE DATABASE testdb1;
1614
CREATE TABLE t1 (c1 int);
1615
CREATE TABLE t2 (c2 int);
1616
GRANT SELECT ON testdb1.t1 TO mysqluser_35955@localhost;
1617
SELECT * FROM INFORMATION_SCHEMA.tables, t1;
1618
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 c1
1620
ERROR 42000: SELECT command denied to user 'mysqluser_35955'@'localhost' for table 't2'
1621
SELECT * FROM t2, INFORMATION_SCHEMA.tables;
1622
ERROR 42000: SELECT command denied to user 'mysqluser_35955'@'localhost' for table 't2'
1623
SELECT * FROM INFORMATION_SCHEMA.tables, t2;
1624
ERROR 42000: SELECT command denied to user 'mysqluser_35955'@'localhost' for table 't2'
1626
DROP DATABASE testdb1;
1627
DROP USER mysqluser_35955@localhost;
1630
# Additional test for WL#3726 "DDL locking for all metadata objects"
1631
# To avoid possible deadlocks process of filling of I_S tables should
1632
# use high-priority metadata lock requests when opening tables.
1633
# Below we just test that we really use high-priority lock request
1634
# since reproducing a deadlock will require much more complex test.
1636
drop tables if exists t1, t2, t3;
1637
create table t1 (i int);
1638
create table t2 (j int primary key auto_increment);
1639
# Switching to connection 'con3726_1'
1641
# Switching to connection 'con3726_2'
1642
# RENAME below will be blocked by 'lock table t2 read' above but
1643
# will add two pending requests for exclusive metadata locks.
1644
rename table t2 to t3;
1645
# Switching to connection 'default'
1646
# These statements should not be blocked by pending lock requests
1647
select table_name, column_name, data_type from information_schema.columns
1648
where table_schema = 'test' and table_name in ('t1', 't2');
1649
table_name column_name data_type
1652
select table_name, auto_increment from information_schema.tables
1653
where table_schema = 'test' and table_name in ('t1', 't2');
1654
table_name auto_increment
1657
# Switching to connection 'con3726_1'
1659
# Switching to connection 'con3726_2'
1660
# Switching to connection 'default'