mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 01:34:17 +01:00
a411d7f4f6
otherwise we'd need to store sql_mode *per vcol* (consider CREATE INDEX...) and how SHOW CREATE TABLE would support that? Additionally, get rid of vcol::expr_str, just to make sure the string is always generated and never leaked in the original form.
494 lines
20 KiB
Text
494 lines
20 KiB
Text
SHOW TABLES FROM information_schema LIKE 'COLUMNS';
|
|
Tables_in_information_schema (COLUMNS)
|
|
COLUMNS
|
|
#######################################################################
|
|
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
|
|
#######################################################################
|
|
DROP VIEW IF EXISTS test.v1;
|
|
DROP PROCEDURE IF EXISTS test.p1;
|
|
DROP FUNCTION IF EXISTS test.f1;
|
|
CREATE VIEW test.v1 AS SELECT * FROM information_schema.COLUMNS;
|
|
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.COLUMNS;
|
|
CREATE FUNCTION test.f1() returns BIGINT
|
|
BEGIN
|
|
DECLARE counter BIGINT DEFAULT NULL;
|
|
SELECT COUNT(*) INTO counter FROM information_schema.COLUMNS;
|
|
RETURN counter;
|
|
END//
|
|
# Attention: The printing of the next result sets is disabled.
|
|
SELECT * FROM information_schema.COLUMNS;
|
|
SELECT * FROM test.v1;
|
|
CALL test.p1;
|
|
SELECT test.f1();
|
|
DROP VIEW test.v1;
|
|
DROP PROCEDURE test.p1;
|
|
DROP FUNCTION test.f1;
|
|
#########################################################################
|
|
# Testcase 3.2.6.1: INFORMATION_SCHEMA.COLUMNS layout
|
|
#########################################################################
|
|
DESCRIBE information_schema.COLUMNS;
|
|
Field Type Null Key Default Extra
|
|
TABLE_CATALOG varchar(512) NO
|
|
TABLE_SCHEMA varchar(64) NO
|
|
TABLE_NAME varchar(64) NO
|
|
COLUMN_NAME varchar(64) NO
|
|
ORDINAL_POSITION bigint(21) unsigned NO 0
|
|
COLUMN_DEFAULT longtext YES NULL
|
|
IS_NULLABLE varchar(3) NO
|
|
DATA_TYPE varchar(64) NO
|
|
CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL
|
|
CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL
|
|
NUMERIC_PRECISION bigint(21) unsigned YES NULL
|
|
NUMERIC_SCALE bigint(21) unsigned YES NULL
|
|
DATETIME_PRECISION bigint(21) unsigned YES NULL
|
|
CHARACTER_SET_NAME varchar(32) YES NULL
|
|
COLLATION_NAME varchar(32) YES NULL
|
|
COLUMN_TYPE longtext NO
|
|
COLUMN_KEY varchar(3) NO
|
|
EXTRA varchar(30) NO
|
|
PRIVILEGES varchar(80) NO
|
|
COLUMN_COMMENT varchar(1024) NO
|
|
SHOW CREATE TABLE information_schema.COLUMNS;
|
|
Table Create Table
|
|
COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
|
|
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
|
|
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
|
|
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
|
|
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
|
|
`ORDINAL_POSITION` bigint(21) unsigned NOT NULL DEFAULT 0,
|
|
`COLUMN_DEFAULT` longtext DEFAULT NULL,
|
|
`IS_NULLABLE` varchar(3) NOT NULL DEFAULT '',
|
|
`DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
|
|
`CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
|
`CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
|
`NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL,
|
|
`NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL,
|
|
`DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL,
|
|
`CHARACTER_SET_NAME` varchar(32) DEFAULT NULL,
|
|
`COLLATION_NAME` varchar(32) DEFAULT NULL,
|
|
`COLUMN_TYPE` longtext NOT NULL DEFAULT '',
|
|
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT '',
|
|
`EXTRA` varchar(30) NOT NULL DEFAULT '',
|
|
`PRIVILEGES` varchar(80) NOT NULL DEFAULT '',
|
|
`COLUMN_COMMENT` varchar(1024) NOT NULL DEFAULT ''
|
|
) DEFAULT CHARSET=utf8
|
|
SHOW COLUMNS FROM information_schema.COLUMNS;
|
|
Field Type Null Key Default Extra
|
|
TABLE_CATALOG varchar(512) NO
|
|
TABLE_SCHEMA varchar(64) NO
|
|
TABLE_NAME varchar(64) NO
|
|
COLUMN_NAME varchar(64) NO
|
|
ORDINAL_POSITION bigint(21) unsigned NO 0
|
|
COLUMN_DEFAULT longtext YES NULL
|
|
IS_NULLABLE varchar(3) NO
|
|
DATA_TYPE varchar(64) NO
|
|
CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL
|
|
CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL
|
|
NUMERIC_PRECISION bigint(21) unsigned YES NULL
|
|
NUMERIC_SCALE bigint(21) unsigned YES NULL
|
|
DATETIME_PRECISION bigint(21) unsigned YES NULL
|
|
CHARACTER_SET_NAME varchar(32) YES NULL
|
|
COLLATION_NAME varchar(32) YES NULL
|
|
COLUMN_TYPE longtext NO
|
|
COLUMN_KEY varchar(3) NO
|
|
EXTRA varchar(30) NO
|
|
PRIVILEGES varchar(80) NO
|
|
COLUMN_COMMENT varchar(1024) NO
|
|
SELECT table_catalog, table_schema, table_name, column_name
|
|
FROM information_schema.columns WHERE table_catalog IS NULL OR table_catalog <> 'def';
|
|
table_catalog table_schema table_name column_name
|
|
###############################################################################
|
|
# Testcase 3.2.6.2 + 3.2.6.3: INFORMATION_SCHEMA.COLUMNS accessible information
|
|
###############################################################################
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
CREATE DATABASE db_datadict;
|
|
DROP USER 'testuser1'@'localhost';
|
|
CREATE USER 'testuser1'@'localhost';
|
|
DROP USER 'testuser2'@'localhost';
|
|
CREATE USER 'testuser2'@'localhost';
|
|
CREATE TABLE db_datadict.t1
|
|
(f1 CHAR(10), f2 TEXT, f3 DATE, f4 INT AUTO_INCREMENT,
|
|
UNIQUE INDEX MUL_IDX(f1,f3), PRIMARY KEY (f4))
|
|
ENGINE = <other_engine_type>;
|
|
CREATE VIEW db_datadict.v1 AS SELECT 1 AS f1, 1 AS f2;
|
|
GRANT SELECT(f1, f2) ON db_datadict.t1 TO 'testuser1'@'localhost';
|
|
GRANT SELECT(f2) ON db_datadict.v1 TO 'testuser1'@'localhost';
|
|
CREATE TABLE db_datadict.t2
|
|
(f1 CHAR(10), f2 TEXT, f3 DATE, f4 INT, PRIMARY KEY (f1,f4))
|
|
ENGINE = <other_engine_type>;
|
|
GRANT INSERT(f1, f2) ON db_datadict.t2 TO 'testuser2'@'localhost';
|
|
SELECT * FROM information_schema.columns
|
|
WHERE table_schema = 'db_datadict'
|
|
ORDER BY table_schema, table_name, ordinal_position;
|
|
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
|
|
def db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL NULL latin1 latin1_swedish_ci char(10) MUL select,insert,update,references
|
|
def db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
|
|
def db_datadict t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
|
def db_datadict t1 f4 4 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) PRI auto_increment select,insert,update,references
|
|
def db_datadict t2 f1 1 NULL NO char 10 10 NULL NULL NULL latin1 latin1_swedish_ci char(10) PRI select,insert,update,references
|
|
def db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
|
|
def db_datadict t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL NULL date select,insert,update,references
|
|
def db_datadict t2 f4 4 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) PRI select,insert,update,references
|
|
def db_datadict v1 f1 1 0 NO int NULL NULL 10 0 NULL NULL NULL int(1) select,insert,update,references
|
|
def db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL NULL int(1) select,insert,update,references
|
|
SHOW COLUMNS FROM db_datadict.t1;
|
|
Field Type Null Key Default Extra
|
|
f1 char(10) YES MUL NULL
|
|
f2 text YES NULL
|
|
f3 date YES NULL
|
|
f4 int(11) NO PRI NULL auto_increment
|
|
SHOW COLUMNS FROM db_datadict.t2;
|
|
Field Type Null Key Default Extra
|
|
f1 char(10) NO PRI NULL
|
|
f2 text YES NULL
|
|
f3 date YES NULL
|
|
f4 int(11) NO PRI NULL
|
|
SHOW COLUMNS FROM db_datadict.v1;
|
|
Field Type Null Key Default Extra
|
|
f1 int(1) NO 0
|
|
f2 int(1) NO 0
|
|
connect testuser1, localhost, testuser1, , db_datadict;
|
|
SELECT * FROM information_schema.columns
|
|
WHERE table_schema = 'db_datadict'
|
|
ORDER BY table_schema, table_name, ordinal_position;
|
|
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
|
|
def db_datadict t1 f1 1 NULL YES char 10 10 NULL NULL NULL latin1 latin1_swedish_ci char(10) MUL select
|
|
def db_datadict t1 f2 2 NULL YES text 65535 65535 NULL NULL NULL latin1 latin1_swedish_ci text select
|
|
def db_datadict v1 f2 2 0 NO int NULL NULL 10 0 NULL NULL NULL int(1) select
|
|
SHOW COLUMNS FROM db_datadict.t1;
|
|
Field Type Null Key Default Extra
|
|
f1 char(10) YES MUL NULL
|
|
f2 text YES NULL
|
|
SHOW COLUMNS FROM db_datadict.t2;
|
|
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 't2'
|
|
SHOW COLUMNS FROM db_datadict.v1;
|
|
Field Type Null Key Default Extra
|
|
f2 int(1) NO 0
|
|
connect testuser2, localhost, testuser2, , db_datadict;
|
|
SELECT * FROM information_schema.columns
|
|
WHERE table_schema = 'db_datadict'
|
|
ORDER BY table_schema, table_name, ordinal_position;
|
|
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
|
|
def db_datadict t2 f1 1 NULL NO char 10 10 NULL NULL NULL latin1 latin1_swedish_ci char(10) PRI insert
|
|
def db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL NULL latin1 latin1_swedish_ci text insert
|
|
SHOW COLUMNS FROM db_datadict.t1;
|
|
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 't1'
|
|
SHOW COLUMNS FROM db_datadict.t2;
|
|
Field Type Null Key Default Extra
|
|
f1 char(10) NO PRI NULL
|
|
f2 text YES NULL
|
|
SHOW COLUMNS FROM db_datadict.v1;
|
|
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 'v1'
|
|
connection default;
|
|
disconnect testuser1;
|
|
disconnect testuser2;
|
|
DROP USER 'testuser1'@'localhost';
|
|
DROP USER 'testuser2'@'localhost';
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
###############################################################################
|
|
# Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.COLUMNS modifications
|
|
###############################################################################
|
|
DROP TABLE IF EXISTS test.t1_my_table;
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
CREATE DATABASE db_datadict;
|
|
SELECT table_name FROM information_schema.columns
|
|
WHERE table_name LIKE 't1_my_table%';
|
|
table_name
|
|
CREATE TABLE test.t1_my_table (f1 CHAR(12))
|
|
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
|
|
ENGINE = <engine_type>;
|
|
SELECT * FROM information_schema.columns
|
|
WHERE table_name = 't1_my_table';
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME t1_my_table
|
|
COLUMN_NAME f1
|
|
ORDINAL_POSITION 1
|
|
COLUMN_DEFAULT NULL
|
|
IS_NULLABLE YES
|
|
DATA_TYPE char
|
|
CHARACTER_MAXIMUM_LENGTH 12
|
|
CHARACTER_OCTET_LENGTH 12
|
|
NUMERIC_PRECISION NULL
|
|
NUMERIC_SCALE NULL
|
|
DATETIME_PRECISION NULL
|
|
CHARACTER_SET_NAME latin1
|
|
COLLATION_NAME latin1_swedish_ci
|
|
COLUMN_TYPE char(12)
|
|
COLUMN_KEY
|
|
EXTRA
|
|
PRIVILEGES select,insert,update,references
|
|
COLUMN_COMMENT
|
|
SELECT table_name FROM information_schema.columns
|
|
WHERE table_name LIKE 't1_my_table%';
|
|
table_name
|
|
t1_my_table
|
|
RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
|
|
SELECT table_name FROM information_schema.columns
|
|
WHERE table_name LIKE 't1_my_table%';
|
|
table_name
|
|
t1_my_tablex
|
|
SELECT table_schema,table_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_schema table_name
|
|
test t1_my_tablex
|
|
RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
|
|
SELECT table_schema,table_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_schema table_name
|
|
db_datadict t1_my_tablex
|
|
SELECT table_name, column_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex f1
|
|
ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
|
|
SELECT table_name, column_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex first_col
|
|
SELECT table_name, column_name, character_maximum_length,
|
|
character_octet_length, column_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name character_maximum_length character_octet_length column_type
|
|
t1_my_tablex first_col 12 12 char(12)
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col CHAR(20);
|
|
SELECT table_name, column_name, character_maximum_length,
|
|
character_octet_length, column_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name character_maximum_length character_octet_length column_type
|
|
t1_my_tablex first_col 20 20 char(20)
|
|
SELECT table_name, column_name, character_maximum_length,
|
|
character_octet_length, column_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name character_maximum_length character_octet_length column_type
|
|
t1_my_tablex first_col 20 20 char(20)
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col VARCHAR(20);
|
|
SELECT table_name, column_name, character_maximum_length,
|
|
character_octet_length, column_type
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name character_maximum_length character_octet_length column_type
|
|
t1_my_tablex first_col 20 20 varchar(20)
|
|
SELECT table_name, column_name, column_default
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name column_default
|
|
t1_my_tablex first_col NULL
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col CHAR(10) DEFAULT 'hello';
|
|
SELECT table_name, column_name, column_default
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name column_default
|
|
t1_my_tablex first_col hello
|
|
SELECT table_name, column_name, is_nullable
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name is_nullable
|
|
t1_my_tablex first_col YES
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col CHAR(10) NOT NULL;
|
|
SELECT table_name, column_name, is_nullable
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name is_nullable
|
|
t1_my_tablex first_col NO
|
|
SELECT table_name, column_name, collation_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name collation_name
|
|
t1_my_tablex first_col latin1_swedish_ci
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col CHAR(10) COLLATE 'latin1_general_cs';
|
|
SELECT table_name, column_name, collation_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name collation_name
|
|
t1_my_tablex first_col latin1_general_cs
|
|
SELECT table_name, column_name, character_maximum_length,
|
|
character_octet_length, character_set_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name character_maximum_length character_octet_length character_set_name
|
|
t1_my_tablex first_col 10 10 latin1
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col CHAR(10) CHARACTER SET utf8;
|
|
SELECT table_name, column_name, character_maximum_length,
|
|
character_octet_length, character_set_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name character_maximum_length character_octet_length character_set_name
|
|
t1_my_tablex first_col 10 30 utf8
|
|
SELECT table_name, column_name, column_comment
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name column_comment
|
|
t1_my_tablex first_col
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN first_col CHAR(10) COMMENT 'Hello';
|
|
SELECT table_name, column_name, column_comment
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name column_comment
|
|
t1_my_tablex first_col Hello
|
|
SELECT table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex first_col
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
ADD COLUMN second_col CHAR(10);
|
|
SELECT table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex first_col
|
|
t1_my_tablex second_col
|
|
SELECT table_name, column_name, ordinal_position
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex'
|
|
ORDER BY table_name, column_name;
|
|
table_name column_name ordinal_position
|
|
t1_my_tablex first_col 1
|
|
t1_my_tablex second_col 2
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
MODIFY COLUMN second_col CHAR(10) FIRST;
|
|
SELECT table_name, column_name, ordinal_position
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex'
|
|
ORDER BY table_name, column_name;
|
|
table_name column_name ordinal_position
|
|
t1_my_tablex first_col 2
|
|
t1_my_tablex second_col 1
|
|
SELECT table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex second_col
|
|
t1_my_tablex first_col
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
DROP COLUMN first_col;
|
|
SELECT table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex second_col
|
|
SELECT table_name, column_name, column_key
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name column_key
|
|
t1_my_tablex second_col
|
|
ALTER TABLE db_datadict.t1_my_tablex
|
|
ADD UNIQUE INDEX IDX(second_col);
|
|
SELECT table_name, column_name, column_key
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name column_key
|
|
t1_my_tablex second_col UNI
|
|
SELECT table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
t1_my_tablex second_col
|
|
DROP TABLE db_datadict.t1_my_tablex;
|
|
SELECT table_name, column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name column_name
|
|
CREATE VIEW test.t1_my_tablex
|
|
AS SELECT 1 AS "col1", 'A' collate latin1_german1_ci AS "col2";
|
|
SELECT * FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex'
|
|
ORDER BY table_name, column_name;
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME t1_my_tablex
|
|
COLUMN_NAME col1
|
|
ORDINAL_POSITION 1
|
|
COLUMN_DEFAULT 0
|
|
IS_NULLABLE NO
|
|
DATA_TYPE int
|
|
CHARACTER_MAXIMUM_LENGTH NULL
|
|
CHARACTER_OCTET_LENGTH NULL
|
|
NUMERIC_PRECISION 10
|
|
NUMERIC_SCALE 0
|
|
DATETIME_PRECISION NULL
|
|
CHARACTER_SET_NAME NULL
|
|
COLLATION_NAME NULL
|
|
COLUMN_TYPE int(1)
|
|
COLUMN_KEY
|
|
EXTRA
|
|
PRIVILEGES select,insert,update,references
|
|
COLUMN_COMMENT
|
|
TABLE_CATALOG def
|
|
TABLE_SCHEMA test
|
|
TABLE_NAME t1_my_tablex
|
|
COLUMN_NAME col2
|
|
ORDINAL_POSITION 2
|
|
COLUMN_DEFAULT
|
|
IS_NULLABLE NO
|
|
DATA_TYPE varchar
|
|
CHARACTER_MAXIMUM_LENGTH 1
|
|
CHARACTER_OCTET_LENGTH 1
|
|
NUMERIC_PRECISION NULL
|
|
NUMERIC_SCALE NULL
|
|
DATETIME_PRECISION NULL
|
|
CHARACTER_SET_NAME latin1
|
|
COLLATION_NAME latin1_german1_ci
|
|
COLUMN_TYPE varchar(1)
|
|
COLUMN_KEY
|
|
EXTRA
|
|
PRIVILEGES select,insert,update,references
|
|
COLUMN_COMMENT
|
|
DROP VIEW test.t1_my_tablex;
|
|
SELECT table_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name
|
|
CREATE TABLE db_datadict.t1_my_tablex
|
|
ENGINE = <engine_type> AS
|
|
SELECT 1;
|
|
SELECT table_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name
|
|
t1_my_tablex
|
|
DROP DATABASE db_datadict;
|
|
SELECT table_name FROM information_schema.columns
|
|
WHERE table_name = 't1_my_tablex';
|
|
table_name
|
|
########################################################################
|
|
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
|
# DDL on INFORMATION_SCHEMA table are not supported
|
|
########################################################################
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
DROP TABLE IF EXISTS test.t1;
|
|
CREATE DATABASE db_datadict;
|
|
CREATE TABLE test.t1 (f1 BIGINT);
|
|
INSERT INTO information_schema.columns (table_schema,table_name,column_name)
|
|
VALUES('test','t1', 'f2');
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
INSERT INTO information_schema.columns (table_schema,table_name,column_name)
|
|
VALUES('test','t2', 'f1');
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
UPDATE information_schema.columns SET table_name = 't4' WHERE table_name = 't1';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
DELETE FROM information_schema.columns WHERE table_name = 't1';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
TRUNCATE information_schema.columns;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE INDEX i3 ON information_schema.columns(table_name);
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
ALTER TABLE information_schema.columns ADD f1 INT;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
DROP TABLE information_schema.columns;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
ALTER TABLE information_schema.columns RENAME db_datadict.columns;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
ALTER TABLE information_schema.columns RENAME information_schema.xcolumns;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
DROP TABLE test.t1;
|
|
DROP DATABASE db_datadict;
|