summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Leich mleich@mysql.com <Unknown>2008-06-16 20:39:58 +0200
committerMatthias Leich mleich@mysql.com <Unknown>2008-06-16 20:39:58 +0200
commit28f9704737def200d6e608bce07cf2d437cc872e (patch)
tree8cd4d523083caecd55a18062b41b2911d0b054be
parent15440264430b8dd7c10d950926a34f8f20f14427 (diff)
downloadmariadb-git-28f9704737def200d6e608bce07cf2d437cc872e.tar.gz
Fix for
Bug#37167 funcs_1: Many tests fail if the embedded server is used. Bug#37164 funcs_1: Some tests fail if an optional character set is missing. + some cleanup within the testsuite related to the fixes above + some adjustments to open bugs on Mac OS X Details: - Remove the initial loading of data from tests if these data are not somewhere retrieved - Remove any use of columns with attribute unicode (-> UCS2 is no more needed) from tests where unicode properties are not checked or somehow required - Create a separate branch of the Character maximum length test (CML). If UCS2 is available than this test gets applied to every available type of string column with attribute unicode This prevents any loss of coverage by the points above. - Disable the execution of is_tables_ndb which gives wrong results because of a bug. Correct the exepected results of this test. - In case of tests failing when applied to the embedded server 1) Create a variant of this test for the embedded server or 2) Skip the test in case of embedded server depending on purpose and complexity of test. - Skip the tests which could suffer from Bug 28309 First insert violates unique constraint - was "memory" table empty ? Bug 37380 Test funcs_1.is_columns_myisam_embedded fails on OS X (both bugs Mac OS X, embedded server, MySQL 5.0 only) - Minor improvements like remove typos
-rw-r--r--mysql-test/suite/funcs_1/datadict/columns.inc1
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc344
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_routines.inc472
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_schemata.inc247
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_tables.inc475
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_triggers.inc254
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_views.inc306
-rw-r--r--mysql-test/suite/funcs_1/datadict/tables.inc55
-rw-r--r--mysql-test/suite/funcs_1/datadict/tables1.inc15
-rw-r--r--mysql-test/suite/funcs_1/datadict/tables2.inc3
-rw-r--r--mysql-test/suite/funcs_1/include/bug28309_skip.inc13
-rw-r--r--mysql-test/suite/funcs_1/include/innodb_tb1.inc2
-rw-r--r--mysql-test/suite/funcs_1/include/innodb_tb3.inc2
-rw-r--r--mysql-test/suite/funcs_1/include/innodb_tb4.inc6
-rw-r--r--mysql-test/suite/funcs_1/include/memory_tb4.inc6
-rw-r--r--mysql-test/suite/funcs_1/include/myisam_tb1.inc2
-rw-r--r--mysql-test/suite/funcs_1/include/myisam_tb3.inc2
-rw-r--r--mysql-test/suite/funcs_1/include/myisam_tb4.inc6
-rw-r--r--mysql-test/suite/funcs_1/r/innodb_trig_frkey.result152
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_innodb.result97
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_memory.result82
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_myisam.result98
-rw-r--r--mysql-test/suite/funcs_1/r/is_cml_ndb.result97
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_innodb.result36
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is_embedded.result380
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_memory.result21
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_myisam.result35
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result1214
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result361
-rw-r--r--mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result372
-rw-r--r--mysql-test/suite/funcs_1/r/is_routines_embedded.result620
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata_embedded.result187
-rw-r--r--mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result103
-rw-r--r--mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result57
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_embedded.result427
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_innodb.result958
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_is.result8
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_memory.result946
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_myisam.result990
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result192
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_mysql.result8
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result815
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_ndb.result460
-rw-r--r--mysql-test/suite/funcs_1/r/is_triggers_embedded.result208
-rw-r--r--mysql-test/suite/funcs_1/r/is_views_embedded.result241
-rw-r--r--mysql-test/suite/funcs_1/storedproc/storedproc_06.inc6
-rw-r--r--mysql-test/suite/funcs_1/storedproc/storedproc_10.inc6
-rw-r--r--mysql-test/suite/funcs_1/t/disabled.def1
-rw-r--r--mysql-test/suite/funcs_1/t/innodb_trig_frkey.test6
-rw-r--r--mysql-test/suite/funcs_1/t/is_basics_mixed.test13
-rw-r--r--mysql-test/suite/funcs_1/t/is_cml_innodb.test41
-rw-r--r--mysql-test/suite/funcs_1/t/is_cml_memory.test37
-rw-r--r--mysql-test/suite/funcs_1/t/is_cml_myisam.test41
-rw-r--r--mysql-test/suite/funcs_1/t/is_cml_ndb.test41
-rw-r--r--mysql-test/suite/funcs_1/t/is_column_privileges.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_innodb.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_is.test7
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_is_embedded.test23
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_memory.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_myisam.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test30
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_mysql.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_mysql_embedded.test19
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_ndb.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_key_column_usage.test339
-rw-r--r--mysql-test/suite/funcs_1/t/is_key_column_usage_embedded.test20
-rw-r--r--mysql-test/suite/funcs_1/t/is_routines.test466
-rw-r--r--mysql-test/suite/funcs_1/t/is_routines_embedded.test20
-rw-r--r--mysql-test/suite/funcs_1/t/is_schema_privileges.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_schemata.test241
-rw-r--r--mysql-test/suite/funcs_1/t/is_schemata_embedded.test20
-rw-r--r--mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_statistics.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_statistics_mysql.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_statistics_mysql_embedded.test19
-rw-r--r--mysql-test/suite/funcs_1/t/is_table_constraints.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_table_constraints_mysql_embedded.test18
-rw-r--r--mysql-test/suite/funcs_1/t/is_table_privileges.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables.test469
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_embedded.test20
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_innodb.test12
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_memory.test12
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_myisam.test13
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_myisam_embedded.test22
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_mysql.test5
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_mysql_embedded.test18
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_ndb.test24
-rw-r--r--mysql-test/suite/funcs_1/t/is_triggers.test248
-rw-r--r--mysql-test/suite/funcs_1/t/is_triggers_embedded.test20
-rw-r--r--mysql-test/suite/funcs_1/t/is_user_privileges.test4
-rw-r--r--mysql-test/suite/funcs_1/t/is_views.test300
-rw-r--r--mysql-test/suite/funcs_1/t/is_views_embedded.test20
-rw-r--r--mysql-test/suite/funcs_1/t/memory_trig_0102.test1
-rw-r--r--mysql-test/suite/funcs_1/t/memory_trig_0407.test1
-rw-r--r--mysql-test/suite/funcs_1/t/memory_trig_1011ext.test1
-rw-r--r--mysql-test/suite/funcs_1/t/memory_views.test1
-rw-r--r--mysql-test/suite/funcs_1/triggers/trig_frkey.inc147
-rw-r--r--mysql-test/suite/funcs_1/triggers/triggers_03.inc4
-rw-r--r--mysql-test/suite/funcs_1/views/func_view.inc21
-rw-r--r--mysql-test/suite/funcs_1/views/views_master.inc2
104 files changed, 8633 insertions, 5593 deletions
diff --git a/mysql-test/suite/funcs_1/datadict/columns.inc b/mysql-test/suite/funcs_1/datadict/columns.inc
index 86f8afeff73..64318492b00 100644
--- a/mysql-test/suite/funcs_1/datadict/columns.inc
+++ b/mysql-test/suite/funcs_1/datadict/columns.inc
@@ -84,4 +84,3 @@ SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
FROM information_schema.columns
$my_where
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
-
diff --git a/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc b/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
new file mode 100644
index 00000000000..46d828b2e72
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
@@ -0,0 +1,344 @@
+# suite/funcs_1/datadict/is_key_column_usage.inc
+#
+# Check the layout of information_schema.key_column_usage and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA/COLUMN ... on it.
+#
+# Note:
+# This test is not intended
+# - to show information about the all time existing tables
+# within the databases information_schema and mysql
+# - for checking storage engine properties
+# Therefore please do not alter $engine_type.
+#
+# Author:
+# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
+# testsuite funcs_1
+# Create this script based on older scripts and new code.
+# Last Change:
+# 2008-06-11 mleich Move t/is_key_column_usage.test to this file and
+# create variants for embedded/non embedded server.
+#
+
+let $engine_type = MEMORY;
+
+let $is_table = KEY_COLUMN_USAGE;
+
+# The table INFORMATION_SCHEMA.KEY_COLUMN_USAGE must exist
+eval SHOW TABLES FROM information_schema LIKE '$is_table';
+
+--echo #######################################################################
+--echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
+--echo #######################################################################
+# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
+# statement, just as if it were an ordinary user-defined table.
+#
+--source suite/funcs_1/datadict/is_table_query.inc
+
+
+--echo #########################################################################
+--echo # Testcase 3.2.7.1: INFORMATION_SCHEMA.KEY_COLUMN_USAGE layout
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.KEY_COLUMN_USAGE table has the following
+# columns, in the following order:
+#
+# CONSTRAINT_CATALOG (always shows NULL),
+# CONSTRAINT_SCHEMA (shows the database, or schema, in which an accessible
+# constraint, or index, resides),
+# CONSTRAINT_NAME (shows the name of the accessible constraint),
+# TABLE_CATALOG (always shows NULL),
+# TABLE_SCHEMA (shows the database, or schema, in which the table constrained
+# by that constraint resides),
+# TABLE_NAME (shows the name of the table constrained by the constraint),
+# COLUMN_NAME (shows the name of a column that is the index key, or part of
+# the index key),
+# ORDINAL_POSITION (shows the ordinal position of the column within the
+# constraint index),
+# POSITION_IN_UNIQUE_CONSTRAINT (shows, for a foreign key column, the ordinal
+# position of the referenced column within the referenced unique index;
+# otherwise NULL).
+# added with 5.0.6:
+# REFERENCED_TABLE_SCHEMA,
+# REFERENCED_TABLE_NAME,
+# REFERENCED_COLUMN_NAME
+#
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval DESCRIBE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW CREATE TABLE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+# Note: Retrieval of information within information_schema.columns about
+# information_schema.key_column_usage is in is_columns_is.test.
+
+# Show that CONSTRAINT_CATALOG and TABLE_CATALOG are always NULL.
+SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
+ table_schema, table_name, column_name
+FROM information_schema.key_column_usage
+WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
+
+
+--echo ########################################################################################
+--echo # Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
+--echo ########################################################################################
+# 3.2.7.2: Ensure that the table shows the relevant information on every column, defined to
+# be part of an index key, which is accessible to the current user or to PUBLIC.
+# 3.2.7.3: Ensure that the table does not show any information on any indexed column that is
+# not accessible to the current user or PUBLIC.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+
+USE db_datadict;
+
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE t1_1
+ (f1 INT NOT NULL, PRIMARY KEY(f1),
+ f2 INT, INDEX f2_ind(f2))
+ENGINE = $engine_type;
+GRANT SELECT ON t1_1 to 'testuser1'@'localhost';
+
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE t1_2
+ (f1 INT NOT NULL, PRIMARY KEY(f1),
+ f2 INT, INDEX f2_ind(f2))
+ENGINE = $engine_type;
+GRANT SELECT ON t1_2 to 'testuser2'@'localhost';
+#FIXME: add foreign keys
+
+let $select= SELECT * FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_%'
+ORDER BY constraint_catalog, constraint_schema, constraint_name,
+ table_catalog, table_schema, table_name, ordinal_position;
+
+# show view of user root
+eval $select;
+
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1, localhost, testuser1, , db_datadict);
+eval $select;
+
+--echo # Establish connection testuser2 (user=testuser2)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser2, localhost, testuser2, , db_datadict);
+eval $select;
+
+# Cleanup
+--echo # Switch to connection default and close connections testuser1, testuser2
+connection default;
+disconnect testuser1;
+disconnect testuser2;
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP TABLE t1_1;
+DROP TABLE t1_2;
+DROP DATABASE IF EXISTS db_datadict;
+
+
+--echo ########################################################################################
+--echo # Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.KEY_COLUMN_USAGE modifications
+--echo ########################################################################################
+# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
+# column) automatically inserts all relevant information on that
+# object into every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.14: Ensure that the alteration of any existing database object
+# automatically updates all relevant information on that object in
+# every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.15: Ensure that the dropping of any existing database object
+# automatically deletes all relevant information on that object from
+# every appropriate INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+DROP TABLE IF EXISTS test.t1_my_table;
+--enable_warnings
+CREATE DATABASE db_datadict;
+
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_my_table%';
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE test.t1_my_table
+ (f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
+ENGINE = $engine_type;
+# Settings used in CREATE TABLE must be visible
+# in information_schema.key_column_usage.
+--vertical_results
+SELECT * FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_table';
+--horizontal_results
+#
+# Check modification of TABLE_NAME
+SELECT DISTINCT table_name FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_my_table%';
+RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
+SELECT DISTINCT table_name FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_my_table%';
+#
+# Check modification of TABLE_SCHEMA
+SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
+SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+#
+# Check modification of COLUMN_NAME
+SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY table_name, column_name;
+ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
+SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY table_name, column_name;
+#
+# Note: The size of the column list and the not very selective qualification
+# is intended. I want to see that the schema names are equal and
+# all records about 't1_my_tablex'.
+let $my_select = SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+ table_name, ordinal_position;
+#
+# Check ADD INDEX being not UNIQUE (does not show up in key_column_usage)
+eval $my_select;
+CREATE INDEX f2 ON db_datadict.t1_my_tablex(f2);
+eval $my_select;
+DROP INDEX f2 ON db_datadict.t1_my_tablex;
+#
+# Check ADD UNIQUE INDEX without name explicit assigned
+eval $my_select;
+ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE (f2);
+eval $my_select;
+DROP INDEX f2 ON db_datadict.t1_my_tablex;
+#
+# Check ADD UNIQUE INDEX with name explicit assigned
+eval $my_select;
+ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f2);
+eval $my_select;
+DROP INDEX my_idx ON db_datadict.t1_my_tablex;
+eval $my_select;
+ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
+eval $my_select;
+#
+# Check DROP COLUMN
+eval $my_select;
+ALTER TABLE db_datadict.t1_my_tablex
+DROP COLUMN first_col;
+eval $my_select;
+#
+# Check impact of DROP TABLE
+SELECT table_name, column_name
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY table_name, column_name;
+DROP TABLE db_datadict.t1_my_tablex;
+SELECT table_name, column_name
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+#
+# No UNIQUE CONSTRAINT -> no entry in key_column_usage
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1_my_tablex
+ENGINE = $engine_type AS
+SELECT 1 AS f1;
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+# UNIQUE CONSTRAINT -> entry in key_column_usage
+ALTER TABLE db_datadict.t1_my_tablex ADD PRIMARY KEY(f1);
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+#
+# Check impact of DROP SCHEMA
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+DROP DATABASE db_datadict;
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+#
+
+
+--echo ########################################################################
+--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
+--echo # DDL on INFORMATION_SCHEMA table are not supported
+--echo ########################################################################
+# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.8: Ensure that no user may create an index on an
+# INFORMATION_SCHEMA table.
+# 3.2.1.9: Ensure that no user may alter the definition of an
+# INFORMATION_SCHEMA table.
+# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
+# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
+# other database.
+# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
+# in an INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+DROP TABLE IF EXISTS db_datadict.t1;
+--enable_warnings
+CREATE DATABASE db_datadict;
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1 (f1 BIGINT)
+ENGINE = $engine_type;
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.key_column_usage
+ (constraint_schema, constraint_name, table_name)
+VALUES ( 'mysql', 'primary', 'db');
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.key_column_usage
+SELECT * FROM information_schema.key_column_usage;
+
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.key_column_usage
+SET table_name = 'db1' WHERE constraint_name = 'primary';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.key_column_usage;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX i3 ON information_schema.key_column_usage(table_name);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.key_column_usage ADD f1 INT;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.key_column_usage;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.key_column_usage
+RENAME db_datadict.key_column_usage;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.key_column_usage
+RENAME information_schema.xkey_column_usage;
+
+# Cleanup
+DROP TABLE db_datadict.t1;
+DROP DATABASE db_datadict;
+
diff --git a/mysql-test/suite/funcs_1/datadict/is_routines.inc b/mysql-test/suite/funcs_1/datadict/is_routines.inc
new file mode 100644
index 00000000000..3e9aa874a66
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/is_routines.inc
@@ -0,0 +1,472 @@
+# suite/funcs_1/datadict/is_routines.inc
+#
+# Check the layout of information_schema.routines and the impact of
+# CREATE/ALTER/DROP PROCEDURE/FUNCTION ... on it.
+#
+# Note:
+# This test is not intended
+# - to show information about the all time existing routines (there are no
+# in the moment) within the databases information_schema and mysql
+# - for checking storage engine properties
+# Therefore please do not alter $engine_type and $other_engine_type.
+#
+# Author:
+# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
+# testsuite funcs_1
+# Create this script based on older scripts and new code.
+# Last Change:
+# 2008-06-11 mleich Move t/is_routines.test to this file and
+# create variants for embedded/non embedded server.
+#
+
+let $engine_type = MEMORY;
+let $other_engine_type = MyISAM;
+
+let $is_table = ROUTINES;
+
+# The table INFORMATION_SCHEMA.TABLES must exist
+eval SHOW TABLES FROM information_schema LIKE '$is_table';
+
+--echo #######################################################################
+--echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
+--echo #######################################################################
+# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
+# statement, just as if it were an ordinary user-defined table.
+#
+--source suite/funcs_1/datadict/is_table_query.inc
+
+
+--echo #########################################################################
+--echo # Testcase 3.2.8.1: INFORMATION_SCHEMA.ROUTINES layout
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.ROUTINES table has the following columns,
+# in the following order:
+#
+# SPECIFIC_NAME (shows the name of an accessible stored procedure, or routine),
+# ROUTINE_CATALOG (always shows NULL),
+# ROUTINE_SCHEMA (shows the database, or schema, in which the routine resides),
+# ROUTINE_NAME (shows the same stored procedure name),
+# ROUTINE_TYPE (shows whether the stored procedure is a procedure or a function),
+# DTD_IDENTIFIER (shows, for a function, the complete data type definition of
+# the value the function will return; otherwise NULL),
+# ROUTINE_BODY (shows the language in which the stored procedure is written;
+# currently always SQL),
+# ROUTINE_DEFINITION (shows as much of the routine body as is possible in the
+# allotted space),
+# EXTERNAL_NAME (always shows NULL),
+# EXTERNAL_LANGUAGE (always shows NULL),
+# PARAMETER_STYLE (shows the routine's parameter style; always SQL),
+# IS_DETERMINISTIC (shows whether the routine is deterministic),
+# SQL_DATA_ACCESS (shows the routine's defined sql-data-access clause value),
+# SQL_PATH (always shows NULL),
+# SECURITY_TYPE (shows whether the routine's defined security_type is 'definer'
+# or 'invoker'),
+# CREATED (shows the timestamp of the time the routine was created),
+# LAST_ALTERED (shows the timestamp of the time the routine was last altered),
+# SQL_MODE (shows the sql_mode setting at the time the routine was created),
+# ROUTINE_COMMENT (shows the comment, if any, defined for the routine;
+# otherwise NULL),
+# DEFINER (shows the user who created the routine).
+#
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval DESCRIBE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW CREATE TABLE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+USE test;
+--disable_warnings
+DROP PROCEDURE IF EXISTS sp_for_routines;
+DROP FUNCTION IF EXISTS function_for_routines;
+--enable_warnings
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
+
+# Show that the column values of
+# ROUTINE_CATALOG, EXTERNAL_NAME, EXTERNAL_LANGUAGE, SQL_PATH are always NULL
+# and
+# ROUTINE_BODY, PARAMETER_STYLE are 'SQL'
+# and
+# SPECIFIC_NAME = ROUTINE_NAME.
+SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
+ routine_body,external_name,external_language,parameter_style,sql_path
+FROM information_schema.routines
+WHERE routine_catalog IS NOT NULL OR external_name IS NOT NULL
+ OR external_language IS NOT NULL OR sql_path IS NOT NULL
+ OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
+ OR specific_name <> routine_name;
+
+DROP PROCEDURE sp_for_routines;
+DROP FUNCTION function_for_routines;
+
+
+--echo ################################################################################
+--echo # Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
+--echo ################################################################################
+# 3.2.8.2: Ensure that the table shows the relevant information on every SQL-invoked
+# routine (i.e. stored procedure) which is accessible to the current user
+# or to PUBLIC.
+# 3.2.8.3: Ensure that the table does not show any information on any stored procedure
+# that is not accessible to the current user or PUBLIC.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+DROP DATABASE IF EXISTS db_datadict_2;
+--enable_warnings
+
+CREATE DATABASE db_datadict;
+USE db_datadict;
+--replace_result $other_engine_type <other_engine_type>
+eval
+CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
+ENGINE = $other_engine_type;
+INSERT INTO res_6_408002_1(f1, f2, f3, f4)
+VALUES('abc', 'xyz', '1989-11-09', 0815);
+--disable_warnings
+DROP PROCEDURE IF EXISTS sp_6_408002_1;
+--enable_warnings
+delimiter //;
+CREATE PROCEDURE sp_6_408002_1()
+BEGIN
+ SELECT * FROM db_datadict.res_6_408002_1;
+END//
+delimiter ;//
+
+CREATE DATABASE db_datadict_2;
+USE db_datadict_2;
+--replace_result $other_engine_type <other_engine_type>
+eval
+CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
+ENGINE = $other_engine_type;
+INSERT INTO res_6_408002_2(f1, f2, f3, f4)
+VALUES('abc', 'xyz', '1990-10-03', 4711);
+--disable_warnings
+DROP PROCEDURE IF EXISTS sp_6_408002_2;
+--enable_warnings
+delimiter //;
+CREATE PROCEDURE sp_6_408002_2()
+BEGIN
+ SELECT * FROM db_datadict_2.res_6_408002_2;
+END//
+delimiter ;//
+
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+
+
+GRANT SELECT ON db_datadict_2.* TO 'testuser1'@'localhost';
+GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
+
+GRANT EXECUTE ON db_datadict.* TO 'testuser1'@'localhost';
+GRANT SELECT ON db_datadict.* TO 'testuser2'@'localhost';
+
+GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
+TO 'testuser2'@'localhost';
+GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
+FLUSH PRIVILEGES;
+
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1, localhost, testuser1, , db_datadict);
+--replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+SELECT * FROM information_schema.routines;
+
+--echo # Establish connection testuser2 (user=testuser2)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser2, localhost, testuser2, , db_datadict);
+--replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+SELECT * FROM information_schema.routines;
+
+--echo # Establish connection testuser3 (user=testuser3)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser3, localhost, testuser3, , test);
+--replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+SELECT * FROM information_schema.routines;
+
+# Cleanup
+--echo # Switch to connection default and close connections testuser1,testuser2,testuser3
+connection default;
+disconnect testuser1;
+disconnect testuser2;
+disconnect testuser3;
+
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+
+USE test;
+DROP DATABASE db_datadict;
+DROP DATABASE db_datadict_2;
+
+
+--echo #########################################################################
+--echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
+--echo #########################################################################
+# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
+# column) automatically inserts all relevant information on that
+# object into every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.14: Ensure that the alteration of any existing database object
+# automatically updates all relevant information on that object in
+# every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.15: Ensure that the dropping of any existing database object
+# automatically deletes all relevant information on that object from
+# every appropriate INFORMATION_SCHEMA table.
+#
+# Some more tests are in t/information_schema_routines.test which exists
+# in MySQL 5.1 and up only.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
+USE db_datadict;
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
+--vertical_results
+--replace_column 16 <created> 17 <modified>
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
+ORDER BY routine_name;
+--horizontal_results
+
+ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
+ALTER FUNCTION function_for_routines COMMENT 'updated comments';
+--vertical_results
+--replace_column 16 <created> 17 <modified>
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
+ORDER BY routine_name;
+--horizontal_results
+
+DROP PROCEDURE sp_for_routines;
+DROP FUNCTION function_for_routines;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
+
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
+--vertical_results
+--replace_column 16 <created> 17 <modified>
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
+ORDER BY routine_name;
+--horizontal_results
+use test;
+DROP DATABASE db_datadict;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
+
+
+--echo #########################################################################
+--echo # 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
+--echo # ROUTINE_DEFINITION column
+--echo #########################################################################
+# Ensure that a stored procedure with a routine body that is too large to fit
+# into the INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION column correctly shows
+# as much of the information as is possible within the allotted size.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+USE db_datadict;
+#
+--replace_result $other_engine_type <other_engine_type>
+eval
+CREATE TABLE db_datadict.res_6_408004_1
+ (f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
+ENGINE = $other_engine_type;
+INSERT INTO db_datadict.res_6_408004_1
+VALUES ('abc', 98765 , 99999999 , 98765, 10);
+#
+--replace_result $other_engine_type <other_engine_type>
+eval
+CREATE TABLE db_datadict.res_6_408004_2
+ (f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
+ENGINE = $other_engine_type;
+INSERT INTO db_datadict.res_6_408004_2
+VALUES ('abc', 98765 , 99999999 , 98765, 10);
+
+--echo # Checking the max. possible length of (currently) 4 GByte is not
+--echo # in this environment here.
+
+delimiter //;
+CREATE PROCEDURE sp_6_408004 ()
+BEGIN
+ DECLARE done INTEGER DEFAULt 0;
+ DECLARE variable_number_1 LONGTEXT;
+ DECLARE variable_number_2 MEDIUMINT;
+ DECLARE variable_number_3 LONGBLOB;
+ DECLARE variable_number_4 REAL;
+ DECLARE variable_number_5 YEAR;
+ DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+ DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+ DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+ DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+ DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+ DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
+ BEGIN
+ OPEN cursor_number_1;
+ WHILE done <> 1 DO
+ FETCH cursor_number_1
+ INTO variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5;
+ IF done <> 0 THEN
+ INSERT INTO res_6_408004_2
+ VALUES (variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5);
+ END IF;
+ END WHILE;
+ BEGIN
+ BEGIN
+ SET done = 0;
+ OPEN cursor_number_2;
+ WHILE done <> 1 DO
+ FETCH cursor_number_2
+ INTO variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5;
+ IF done <> 0 THEN
+ INSERT INTO res_6_408004_2
+ VALUES(variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5);
+ END IF;
+ END WHILE;
+ END;
+ SET done = 0;
+ OPEN cursor_number_3;
+ WHILE done <> 1 DO
+ FETCH cursor_number_3
+ INTO variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5;
+ IF done <> 0 THEN
+ INSERT INTO res_6_408004_2
+ VALUES(variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5);
+ END IF;
+ END WHILE;
+ END;
+ END;
+ BEGIN
+ SET done = 0;
+ OPEN cursor_number_4;
+ WHILE done <> 1 DO
+ FETCH cursor_number_4
+ INTO variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5;
+ IF done <> 0 THEN
+ INSERT INTO res_6_408004_2
+ VALUES (variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5);
+ END IF;
+ END WHILE;
+ END;
+ BEGIN
+ SET @a='test row';
+ SELECT @a;
+ SELECT @a;
+ SELECT @a;
+ END;
+ BEGIN
+ SET done = 0;
+ OPEN cursor_number_5;
+ WHILE done <> 1 DO
+ FETCH cursor_number_5
+ INTO variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5;
+ IF done <> 0 THEN
+ INSERT INTO res_6_408004_2
+ VALUES (variable_number_1, variable_number_2, variable_number_3,
+ variable_number_4, variable_number_5);
+ END IF;
+ END WHILE;
+ END;
+ BEGIN
+ SET @a='test row';
+ SELECT @a;
+ SELECT @a;
+ SELECT @a;
+ END;
+END//
+delimiter ;//
+
+CALL db_datadict.sp_6_408004 ();
+SELECT * FROM db_datadict.res_6_408004_2;
+
+--vertical_results
+--replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
+SELECT *, LENGTH(routine_definition) FROM information_schema.routines
+WHERE routine_schema = 'db_datadict';
+--horizontal_results
+
+# Cleanup
+DROP DATABASE db_datadict;
+# ----------------------------------------------------------------------------------------------
+
+
+--echo ########################################################################
+--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
+--echo # DDL on INFORMATION_SCHEMA table are not supported
+--echo ########################################################################
+# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.8: Ensure that no user may create an index on an INFORMATION_SCHEMA table.
+# 3.2.1.9: Ensure that no user may alter the definition of an
+# INFORMATION_SCHEMA table.
+# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
+# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
+# other database.
+# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
+# in an INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+USE db_datadict;
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+USE test;
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.routines (routine_name, routine_type )
+VALUES ('p2', 'procedure');
+
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.routines SET routine_name = 'p2'
+WHERE routine_body = 'sql';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.routines ;
+#
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.routines ;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX i7 ON information_schema.routines (routine_name);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.routines ADD f1 INT;
+#
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.routines DISCARD TABLESPACE;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.routines ;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.routines RENAME db_datadict.routines;
+#
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
+
+# Cleanup
+DROP DATABASE db_datadict;
+
diff --git a/mysql-test/suite/funcs_1/datadict/is_schemata.inc b/mysql-test/suite/funcs_1/datadict/is_schemata.inc
new file mode 100644
index 00000000000..b2a6139b839
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/is_schemata.inc
@@ -0,0 +1,247 @@
+# suite/funcs_1/datadict/is_schemata.inc
+#
+# Check the layout of information_schema.schemata, permissions and the impact of
+# CREATE/ALTER/DROP SCHEMA on it.
+#
+# Note:
+# This test is not intended
+# - to show information about the all time existing databases
+# information_schema and mysql
+# - for checking storage engine properties
+#
+# Author:
+# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
+# testsuite funcs_1
+# Create this script based on older scripts and new code.
+# Last Change:
+# 2008-06-11 mleich Move t/is_schemata.test to this file and
+# create variants for embedded/non embedded server.
+#
+
+let $is_table = SCHEMATA;
+
+# The table INFORMATION_SCHEMA.SCHEMATA must exist
+eval SHOW TABLES FROM information_schema LIKE '$is_table';
+
+--echo #######################################################################
+--echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
+--echo #######################################################################
+# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
+# statement, just as if it were an ordinary user-defined table.
+#
+--source suite/funcs_1/datadict/is_table_query.inc
+
+
+--echo #########################################################################
+--echo # Testcase 3.2.9.1: INFORMATION_SCHEMA.SCHEMATA layout;
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.SCHEMATA table has the following columns,
+# in the following order:
+#
+# CATALOG_NAME (always shows NULL),
+# SCHEMA_NAME (shows the name of a database, or schema, on which the current
+# user or PUBLIC has privileges),
+# DEFAULT_CHARACTER_SET_NAME (shows the name of that database's default
+# character set),
+# DEFAULT_COLLATION_NAME (shows the database defaul collation)
+# SQL_PATH (always shows NULL).
+#
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval DESCRIBE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW CREATE TABLE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+# Note: Retrieval of information within information_schema.columns about
+# information_schema.schemata is in is_columns_is.test.
+
+# Show that CATALOG_NAME and SQL_PATH are always NULL.
+SELECT catalog_name, schema_name, sql_path
+FROM information_schema.schemata
+WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
+
+
+--echo ###############################################################################
+--echo # Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
+--echo ###############################################################################
+# 3.2.9.2 Ensure that the table shows the relevant information for every
+# database on which the current user or PUBLIC have privileges.
+# 3.2.9.3 Ensure that the table does not show any information on any databases
+# on which the current user and PUBLIC have no privileges.
+#
+# Note: Check of content within information_schema.schemata about the databases
+# information_schema and mysql is in
+# suite/funcs_1/t/is_schemata_is_mysql.test.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict_1;
+DROP DATABASE IF EXISTS db_datadict_2;
+--enable_warnings
+CREATE DATABASE db_datadict_1;
+CREATE DATABASE db_datadict_2;
+
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+
+GRANT SELECT ON db_datadict_1.* to 'testuser1'@'localhost';
+GRANT SELECT ON db_datadict_1.* to 'testuser2'@'localhost';
+GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
+
+let $my_select = SELECT * FROM information_schema.schemata
+WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
+let $my_show = SHOW DATABASES LIKE 'db_datadict_%';
+
+eval $my_select;
+--sorted_result
+eval $my_show;
+
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1, localhost, testuser1, , db_datadict_1);
+# Shows db_datadict_1
+eval $my_select;
+--sorted_result
+eval $my_show;
+
+--echo # Establish connection testuser2 (user=testuser2)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser2, localhost, testuser2, , db_datadict_2);
+# Shows db_datadict_1 and db_datadict_2
+eval $my_select;
+--sorted_result
+eval $my_show;
+
+--echo # Establish connection testuser3 (user=testuser3)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser3, localhost, testuser3, , test);
+# Shows neither db_datadict_1 nor db_datadict_2
+eval $my_select;
+--sorted_result
+eval $my_show;
+
+# Cleanup
+--echo # Switch to connection default and close connections testuser1,testuser2,testuser3
+connection default;
+disconnect testuser1;
+disconnect testuser2;
+disconnect testuser3;
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+DROP DATABASE db_datadict_1;
+DROP DATABASE db_datadict_2;
+
+
+--echo #################################################################################
+--echo # Testcases 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.SCHEMATA modifications
+--echo #################################################################################
+# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
+# column) automatically inserts all relevant information on that
+# object into every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.14: Ensure that the alteration of any existing database object
+# automatically updates all relevant information on that object in
+# every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.15: Ensure that the dropping of any existing database object
+# automatically deletes all relevant information on that object from
+# every appropriate INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+
+SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
+SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+
+# Check modify default CHARACTER SET
+SELECT schema_name, default_character_set_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+ALTER SCHEMA db_datadict CHARACTER SET 'utf8';
+SELECT schema_name, default_character_set_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+ALTER SCHEMA db_datadict CHARACTER SET 'latin1';
+
+# Check modify default COLLATION
+SELECT schema_name, default_collation_name FROM information_schema.schemata
+WHERE schema_name = 'db_datadict';
+ALTER SCHEMA db_datadict COLLATE 'latin1_general_cs';
+SELECT schema_name, default_collation_name FROM information_schema.schemata
+WHERE schema_name = 'db_datadict';
+
+# Check DROP DATABASE
+SELECT schema_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+DROP DATABASE db_datadict;
+SELECT schema_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+
+
+--echo ########################################################################
+--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
+--echo # DDL on INFORMATION_SCHEMA tables are not supported
+--echo ########################################################################
+# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.8: Ensure that no user may create an index on an INFORMATION_SCHEMA table.
+# 3.2.1.9: Ensure that no user may alter the definition of an
+# INFORMATION_SCHEMA table.
+# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
+# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
+# other database.
+# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
+# in an INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.schemata
+ (catalog_name, schema_name, default_character_set_name, sql_path)
+VALUES (NULL, 'db1', 'latin1', NULL);
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.schemata
+SELECT * FROM information_schema.schemata;
+
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.schemata
+SET default_character_set_name = 'utf8'
+WHERE schema_name = 'db_datadict';
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.schemata SET catalog_name = 't_4711';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.schemata;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX i1 ON information_schema.schemata(schema_name);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.schemata ADD f1 INT;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.schemata;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.schemata RENAME db_datadict.schemata;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.schemata RENAME information_schema.xschemata;
+
+# Cleanup
+DROP DATABASE db_datadict;
+
diff --git a/mysql-test/suite/funcs_1/datadict/is_tables.inc b/mysql-test/suite/funcs_1/datadict/is_tables.inc
new file mode 100644
index 00000000000..6d47c33e715
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/is_tables.inc
@@ -0,0 +1,475 @@
+# suite/funcs_1/datadict/is_tables.inc
+#
+# Check the layout of information_schema.tables and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+#
+# Note:
+# This test is not intended
+# - to show information about the all time existing tables
+# within the databases information_schema and mysql
+# - for checking storage engine properties
+# Therefore please do not alter $engine_type and $other_engine_type.
+# Some results of the subtests depend on the storage engines assigned.
+#
+# Author:
+# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
+# testsuite funcs_1
+# Create this script based on older scripts and new code.
+# Last Change:
+# 2008-06-11 mleich Move t/is_tables.test to this file and
+# create variants for embedded/non embedded server.
+#
+
+let $engine_type = MEMORY;
+let $other_engine_type = MyISAM;
+
+let $is_table = TABLES;
+
+# The table INFORMATION_SCHEMA.TABLES must exist
+eval SHOW TABLES FROM information_schema LIKE '$is_table';
+
+--echo #######################################################################
+--echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
+--echo #######################################################################
+# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
+# statement, just as if it were an ordinary user-defined table.
+#
+--source suite/funcs_1/datadict/is_table_query.inc
+
+
+--echo #########################################################################
+--echo # Testcase 3.2.12.1: INFORMATION_SCHEMA.TABLES layout
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.TABLES table has the following columns,
+# in the following order:
+#
+# TABLE_CATALOG (always shows NULL),
+# TABLE_SCHEMA (shows the name of the database, or schema, in which an
+# accessible table resides),
+# TABLE_NAME (shows the name of a table which the current user may access),
+# TABLE_TYPE (shows whether the table is a BASE TABLE, a TEMPORARY table,
+# or a VIEW),
+# ENGINE (shows the storage engine used for the table),
+# VERSION (shows the version number of the table's .frm file),
+# ROW_FORMAT (shows the table's row storage format; either FIXED, DYNAMIC
+# or COMPRESSED),
+# TABLE_ROWS (shows the number of rows in the table),
+# AVG_ROW_LENGTH (shows the average length of the table's rows),
+# DATA_LENGTH (shows the length of the table's data file),
+# MAX_DATA_LENGTH (shows the maximum length of the table's data file),
+# INDEX_LENGTH (shows the length of the index file associated with the table),
+# DATA_FREE (shows the number of allocated, unused bytes),
+# AUTO_INCREMENT (shows the next AUTO_INCREMENT value, where applicable),
+# CREATE_TIME (shows the timestamp of the time the table was created),
+# UPDATE_TIME (shows the timestamp of the time the table's data file was
+# last updated),
+# CHECK_TIME (shows the timestamp of the time the table was last checked),
+# TABLE_COLLATION (shows the table's default collation),
+# CHECKSUM (shows the live checksum value for the table, if any; otherwise NULL),
+# CREATE_OPTIONS (shows any additional options used in the table's definition;
+# otherwise NULL),
+# TABLE_COMMENT (shows the comment added to the table's definition;
+# otherwise NULL).
+#
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval DESCRIBE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW CREATE TABLE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+# Note: Retrieval of information within information_schema.columns about
+# information_schema.tables is in is_columns_is.test.
+
+# Show that TABLE_CATALOG is always NULL.
+SELECT table_catalog, table_schema, table_name
+FROM information_schema.tables WHERE table_catalog IS NOT NULL;
+
+
+--echo ################################################################################
+--echo # Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
+--echo ################################################################################
+# 3.2.12.2: Ensure that the table shows the relevant information on every base table
+# and view on which the current user or PUBLIC has privileges.
+# 3.2.12.3: Ensure that the table does not show any information on any tables
+# on which the current user and public have no privileges.
+#
+# Note: Check of content within information_schema.tables about tables within
+# database is in
+# mysql is_tables_mysql.test
+# information_schema is_tables_is.test
+# test% is_tables_<engine>.test
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+GRANT CREATE, CREATE VIEW, INSERT, SELECT ON db_datadict.*
+ TO 'testuser1'@'localhost' WITH GRANT OPTION;
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.tb1 (f1 INT, f2 INT, f3 INT)
+ENGINE = $engine_type;
+
+GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
+GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
+
+let $my_select = SELECT * FROM information_schema.tables
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+let $my_show = SHOW TABLES FROM db_datadict;
+
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1, localhost, testuser1, , db_datadict);
+# tb2 is not granted to anyone
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE tb2 (f1 DECIMAL)
+ENGINE = $engine_type;
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE tb3 (f1 VARCHAR(200))
+ENGINE = $engine_type;
+GRANT SELECT ON db_datadict.tb3 to 'testuser3'@'localhost';
+GRANT INSERT ON db_datadict.tb3 to 'testuser2'@'localhost';
+CREATE VIEW v3 AS SELECT * FROM tb3;
+GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
+
+if ($have_bug_32285)
+{
+--disable_ps_protocol
+}
+# We do not want to check here values affected by
+# - the storage engine used
+# - Operating system / Filesystem
+# - start time of test
+# 1 TABLE_CATALOG
+# 2 TABLE_SCHEMA
+# 3 TABLE_NAME
+# 4 TABLE_TYPE
+# 5 ENGINE affected by storage engine used
+# 6 VERSION
+# 7 ROW_FORMAT affected by storage engine used
+# 8 TABLE_ROWS
+# 9 AVG_ROW_LENGTH affected by storage engine used
+# 10 DATA_LENGTH affected by storage engine used and maybe OS
+# 11 MAX_DATA_LENGTH affected by storage engine used and maybe OS
+# 12 INDEX_LENGTH affected by storage engine used and maybe OS
+# 13 DATA_FREE affected by storage engine used and maybe OS
+# 14 AUTO_INCREMENT
+# 15 CREATE_TIME depends roughly on start time of test (*)
+# 16 UPDATE_TIME depends roughly on start time of test (*)
+# 17 CHECK_TIME depends roughly on start time of test and storage engine (*)
+# 18 TABLE_COLLATION
+# 19 CHECKSUM affected by storage engine used
+# 20 CREATE_OPTIONS
+# 21 TABLE_COMMENT affected by some storage engines
+# (*) In case of view or temporary table NULL.
+--replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
+eval $my_select;
+--enable_ps_protocol
+--sorted_result
+eval $my_show;
+
+--echo # Establish connection testuser2 (user=testuser2)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser2, localhost, testuser2, , db_datadict);
+if ($have_bug_32285)
+{
+--disable_ps_protocol
+}
+--replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
+eval $my_select;
+--enable_ps_protocol
+--sorted_result
+eval $my_show;
+
+--echo # Establish connection testuser3 (user=testuser3)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser3, localhost, testuser3, , db_datadict);
+if ($have_bug_32285)
+{
+--disable_ps_protocol
+}
+--replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
+eval $my_select;
+--enable_ps_protocol
+--sorted_result
+eval $my_show;
+
+--echo # Switch to connection default (user=root)
+connection default;
+# we see only 'public' tables
+if ($have_bug_32285)
+{
+--disable_ps_protocol
+}
+--replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
+eval $my_select;
+--enable_ps_protocol
+--sorted_result
+eval $my_show;
+
+# Cleanup
+--echo # Close connection testuser1, testuser2, testuser3
+disconnect testuser1;
+disconnect testuser2;
+disconnect testuser3;
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+DROP DATABASE db_datadict;
+
+
+--echo #########################################################################
+--echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLES modifications
+--echo #########################################################################
+# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
+# column) automatically inserts all relevant information on that
+# object into every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.14: Ensure that the alteration of any existing database object
+# automatically updates all relevant information on that object in
+# every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.15: Ensure that the dropping of any existing database object
+# automatically deletes all relevant information on that object from
+# every appropriate INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP TABLE IF EXISTS test.t1_my_table;
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE test.t1_my_table (f1 BIGINT)
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
+COMMENT = 'Initial Comment' ENGINE = $engine_type;
+# Settings used in CREATE TABLE must be visible in information_schema.tables.
+--vertical_results
+--replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
+SELECT * FROM information_schema.tables
+WHERE table_name = 't1_my_table';
+--horizontal_results
+#
+# Check modification of TABLE_NAME
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+#
+# Check modification of TABLE_SCHEMA
+SELECT table_schema,table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
+SELECT table_schema,table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check modification of ENGINE
+--replace_result $engine_type <engine_type>
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+--replace_result $other_engine_type <other_engine_type>
+eval
+ALTER TABLE db_datadict.t1_my_tablex
+ENGINE = $other_engine_type;
+--replace_result $other_engine_type <other_engine_type>
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check modification of TABLE_ROWS
+SELECT table_name, table_rows FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+INSERT INTO db_datadict.t1_my_tablex VALUES(1),(2);
+SELECT table_name, table_rows FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check indirect modification of TABLE_COLLATION
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+ALTER TABLE db_datadict.t1_my_tablex DEFAULT CHARACTER SET utf8;
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+# Check direct modification of TABLE_COLLATION
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+ALTER TABLE db_datadict.t1_my_tablex
+DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check modification of TABLE_COMMENT
+SELECT table_name, TABLE_COMMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+ALTER TABLE db_datadict.t1_my_tablex COMMENT 'Changed Comment';
+SELECT table_name, TABLE_COMMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check modification of AUTO_INCREMENT
+SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+ALTER TABLE db_datadict.t1_my_tablex
+ADD f2 BIGINT AUTO_INCREMENT, ADD PRIMARY KEY (f2);
+SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check modification of ROW_FORMAT
+SELECT table_name, ROW_FORMAT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+ALTER TABLE db_datadict.t1_my_tablex ROW_FORMAT = dynamic;
+SELECT table_name, ROW_FORMAT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check "growth" of UPDATE_TIME and modification of CHECKSUM
+SELECT table_name, checksum FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+ALTER TABLE db_datadict.t1_my_tablex CHECKSUM = 1;
+SELECT table_name, checksum IS NOT NULL FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+# Enforce a time difference bigger than the smallest unit (1 second).
+--real_sleep 1.1
+INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
+SELECT UPDATE_TIME > @UPDATE_TIME
+ AS "Is current UPDATE_TIME bigger than before last INSERT?"
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+SELECT checksum <> @checksum
+ AS "Is current CHECKSUM different than before last INSERT?"
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Information is used later
+SELECT CREATE_TIME INTO @CREATE_TIME FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check impact of DROP TABLE
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+DROP TABLE db_datadict.t1_my_tablex;
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+#
+# Check "growth" of CREATE_TIME
+--replace_result $other_engine_type <other_engine_type>
+eval
+CREATE TABLE test.t1_my_tablex (f1 BIGINT)
+ENGINE = $other_engine_type;
+SELECT CREATE_TIME > @CREATE_TIME
+ AS "Is current CREATE_TIME bigger than for the old dropped table?"
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+DROP TABLE test.t1_my_tablex;
+#
+# Check a VIEW
+CREATE VIEW test.t1_my_tablex AS SELECT 1;
+--vertical_results
+SELECT * FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+--horizontal_results
+DROP VIEW test.t1_my_tablex;
+SELECT table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+#
+# Check a temporary table
+--replace_result $other_engine_type <other_engine_type>
+eval
+CREATE TEMPORARY TABLE test.t1_my_tablex
+ENGINE = $other_engine_type
+ AS SELECT 1;
+--vertical_results
+SELECT table_name, table_type FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+--horizontal_results
+DROP TEMPORARY TABLE test.t1_my_tablex;
+#
+# Check impact of DROP SCHEMA
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1_my_tablex
+ENGINE = $engine_type AS
+SELECT 1;
+SELECT table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+DROP DATABASE db_datadict;
+SELECT table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+
+
+--echo ########################################################################
+--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
+--echo # DDL on INFORMATION_SCHEMA tables are not supported
+--echo ########################################################################
+# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.8: Ensure that no user may create an index on an
+# INFORMATION_SCHEMA table.
+# 3.2.1.9: Ensure that no user may alter the definition of an
+# INFORMATION_SCHEMA table.
+# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
+# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
+# other database.
+# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
+# in an INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1 (f1 BIGINT)
+ENGINE = $engine_type;
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.tables
+SELECT * FROM information_schema.tables;
+
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.tables SET table_schema = 'test'
+WHERE table_name = 't1';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.tables WHERE table_name = 't1';
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.tables;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX my_idx_on_tables ON information_schema.tables(table_schema);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.tables DROP PRIMARY KEY;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.tables ADD f1 INT;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.tables;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.tables RENAME db_datadict.tables;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.tables RENAME information_schema.xtables;
+
+# Cleanup
+DROP DATABASE db_datadict;
+
diff --git a/mysql-test/suite/funcs_1/datadict/is_triggers.inc b/mysql-test/suite/funcs_1/datadict/is_triggers.inc
new file mode 100644
index 00000000000..1e659f00485
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/is_triggers.inc
@@ -0,0 +1,254 @@
+# suite/funcs_1/datadict/is_triggers.inc
+#
+# Check the layout of information_schema.triggers and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+#
+# Note:
+# This test is not intended
+# - to show information about the all time existing triggers
+# (there are no in the moment) within the databases information_schema
+# and mysql
+# - for checking storage engine properties
+# Therefore please do not alter $engine_type and $other_engine_type.
+#
+# Author:
+# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
+# testsuite funcs_1
+# Create this script based on older scripts and new code.
+# Last Change:
+# 2008-06-11 mleich Move t/is_triggers.test to this file and
+# create variants for embedded/non embedded server.
+#
+
+let $engine_type = MEMORY;
+let $other_engine_type = MyISAM;
+
+let $is_table = TRIGGERS;
+
+# The table INFORMATION_SCHEMA.TRIGGERS must exist
+eval SHOW TABLES FROM information_schema LIKE '$is_table';
+
+--echo #######################################################################
+--echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
+--echo #######################################################################
+# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
+# statement, just as if it were an ordinary user-defined table.
+#
+--source suite/funcs_1/datadict/is_table_query.inc
+
+
+--echo #########################################################################
+--echo # Testcase 3.2.12.1: INFORMATION_SCHEMA.TRIGGERS layout
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.TRIGGERS table has the following columns,
+# in the following order:
+#
+# TRIGGER_CATALOG NULL
+# TRIGGER_SCHEMA name of the database in which the trigger occurs
+# TRIGGER_NAME
+# EVENT_MANIPULATION event associated with the trigger
+# ('INSERT', 'DELETE', or 'UPDATE')
+# EVENT_OBJECT_CATALOG NULL
+# EVENT_OBJECT_SCHEMA database in which the table associated with the
+# trigger occurs
+# EVENT_OBJECT_TABLE name of the table associated with the trigger
+# ACTION_ORDER 0
+# ACTION_CONDITION NULL
+# ACTION_STATEMENT
+# ACTION_ORIENTATION ROW
+# ACTION_TIMING 'BEFORE' or 'AFTER'
+# ACTION_REFERENCE_OLD_TABLE NULL
+# ACTION_REFERENCE_NEW_TABLE NULL
+# ACTION_REFERENCE_OLD_ROW OLD
+# ACTION_REFERENCE_NEW_ROW NEW
+# CREATED NULL (0)
+# SQL_MODE server SQL mode that was in effect at the time
+# when the trigger was created
+# (also used during trigger execution)
+# DEFINER who defined the trigger
+#
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval DESCRIBE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW CREATE TABLE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+
+# Note: Retrieval of information within information_schema.columns about
+# information_schema.tables is in is_columns_is.test.
+
+# Show that several columns are always NULL.
+SELECT * FROM information_schema.triggers
+WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
+ OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
+ OR action_reference_new_table IS NOT NULL;
+
+
+--echo ##################################################################################
+--echo # Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
+--echo ##################################################################################
+# 3.2.18.2: Ensure that the table shows the relevant information on every
+# trigger on which the current user or PUBLIC has privileges.
+# 3.2.18.3: Ensure that the table does not show any information on any trigger
+# on which the current user and public have no privileges.
+# The SUPER privilege is required for
+# - creation of triggers
+# - retrieval in INFORMATION_SCHEMA.TRIGGERS (affects size of result set)
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser4'@'localhost';
+CREATE USER 'testuser4'@'localhost';
+
+GRANT SUPER ON *.* TO 'testuser1'@'localhost';
+GRANT SUPER ON *.* TO 'testuser3'@'localhost';
+GRANT SUPER ON *.* TO 'testuser4'@'localhost';
+GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
+
+let $my_select = SELECT * FROM information_schema.triggers
+WHERE trigger_name = 'trg1';
+let $my_show = SHOW TRIGGERS FROM db_datadict;
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1, localhost, testuser1, , db_datadict);
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
+ENGINE = $engine_type;
+CREATE TRIGGER trg1 BEFORE INSERT
+ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
+GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
+GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
+eval $my_select;
+eval $my_show;
+
+--echo # Establish connection testuser2 (user=testuser2)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser2, localhost, testuser2, , db_datadict);
+SHOW GRANTS FOR 'testuser2'@'localhost';
+--echo # No SUPER Privilege --> no result for query
+eval $my_select;
+eval $my_show;
+
+--echo # Establish connection testuser3 (user=testuser3)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser3, localhost, testuser3, , test);
+SHOW GRANTS FOR 'testuser3'@'localhost';
+--echo # SUPER Privilege + SELECT Privilege on t1 --> result for query
+eval $my_select;
+eval $my_show;
+
+--echo # Establish connection testuser4 (user=testuser4)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser4, localhost, testuser4, , test);
+SHOW GRANTS FOR 'testuser4'@'localhost';
+--echo # SUPER Privilege + no SELECT Privilege on t1 --> no result for query
+eval $my_select;
+eval $my_show;
+
+--echo # Switch to connection default and close connections testuser1 - testuser4
+connection default;
+disconnect testuser1;
+disconnect testuser2;
+disconnect testuser3;
+disconnect testuser4;
+eval $my_select;
+eval $my_show;
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+DROP USER 'testuser4'@'localhost';
+DROP DATABASE db_datadict;
+
+
+--echo #########################################################################
+--echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TRIGGERS modifications
+--echo #########################################################################
+# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
+# column) automatically inserts all relevant information on that
+# object into every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.14: Ensure that the alteration of any existing database object
+# automatically updates all relevant information on that object in
+# every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.15: Ensure that the dropping of any existing database object
+# automatically deletes all relevant information on that object from
+# every appropriate INFORMATION_SCHEMA table.
+# FIXME: To be implemented
+
+
+--echo ########################################################################
+--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
+--echo # DDL on INFORMATION_SCHEMA tables are not supported
+--echo ########################################################################
+# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.8: Ensure that no user may create an index on an
+# INFORMATION_SCHEMA table.
+# 3.2.1.9: Ensure that no user may alter the definition of an
+# INFORMATION_SCHEMA table.
+# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
+# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
+# other database.
+# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
+# in an INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1 (f1 BIGINT)
+ENGINE = $engine_type;
+CREATE TRIGGER db_datadict.trg1 BEFORE INSERT
+ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.triggers
+SELECT * FROM information_schema.triggers;
+
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.triggers SET trigger_schema = 'test'
+WHERE table_name = 't1';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.triggers;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX my_idx_on_triggers ON information_schema.triggers(trigger_schema);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.triggers DROP PRIMARY KEY;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.triggers ADD f1 INT;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.triggers;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.triggers RENAME db_datadict.triggers;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
+
+# Cleanup
+DROP DATABASE db_datadict;
+
diff --git a/mysql-test/suite/funcs_1/datadict/is_views.inc b/mysql-test/suite/funcs_1/datadict/is_views.inc
new file mode 100644
index 00000000000..32e66e4f684
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/is_views.inc
@@ -0,0 +1,306 @@
+# suite/funcs_1/datadict/is_views.inc
+#
+# Check the layout of information_schema.views and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+#
+# Note:
+# - This test should not check storage engine properties.
+# - Please do not change the storage engines used within this test
+# except you know that the impact is acceptable.
+# Some storage engines might not support the modification of
+# properties like in the following tests.
+#
+# Author:
+# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
+# testsuite funcs_1
+# Create this script based on older scripts and new code.
+# Last Change:
+# 2008-06-11 mleich Move t/is_views.test to this file and
+# create variants for embedded/non embedded server.
+#
+
+let $engine_type = MEMORY;
+let $other_engine_type = MyISAM;
+
+let $is_table = VIEWS;
+
+# The table INFORMATION_SCHEMA.VIEWS must exist
+eval SHOW TABLES FROM information_schema LIKE '$is_table';
+
+--echo #######################################################################
+--echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
+--echo #######################################################################
+# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
+# statement, just as if it were an ordinary user-defined table.
+#
+--source suite/funcs_1/datadict/is_table_query.inc
+
+
+--echo #########################################################################
+--echo # Testcase 3.2.13.1: INFORMATION_SCHEMA.VIEWS layout
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.VIEWS table has the following columns,
+# in the following order:
+#
+# TABLE_CATALOG (always shows NULL),
+# TABLE_SCHEMA (shows the database, or schema, in which an accessible
+# view resides),
+# TABLE_NAME (shows the name of a view accessible to the current user),
+# VIEW_DEFINITION (shows the SELECT statement that makes up the
+# view's definition),
+# CHECK_OPTION (shows the value of the WITH CHECK OPTION clause used to define
+# the view, either NONE, LOCAL or CASCADED),
+# IS_UPDATABLE (shows whether the view is an updatable view),
+# DEFINER (added with 5.0.14),
+# SECURITY_TYPE (added with 5.0.14).
+#
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval DESCRIBE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW CREATE TABLE information_schema.$is_table;
+--source suite/funcs_1/datadict/datadict_bug_12777.inc
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+# Note: Retrieval of information within information_schema.columns about
+# information_schema.views is in is_columns_is.test.
+
+# Show that TABLE_CATALOG is always NULL.
+SELECT table_catalog, table_schema, table_name
+FROM information_schema.views WHERE table_catalog IS NOT NULL;
+
+
+--echo ################################################################################
+--echo # Testcase 3.2.13.2 + 3.2.13.3: INFORMATION_SCHEMA.VIEWS accessible information
+--echo ################################################################################
+# 3.2.13.2: Ensure that the table shows the relevant information on every view for
+# which the current user or PUBLIC has the SHOW CREATE VIEW privilege.
+# 3.2.13.3: Ensure that the table does not show any information on any views for which
+# the current user and PUBLIC have no SHOW CREATE VIEW privilege.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+--error 0,ER_CANNOT_USER
+DROP USER 'test_no_views'@'localhost';
+CREATE USER 'test_no_views'@'localhost';
+
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE db_datadict.t1(f1 INT, f2 INT, f3 INT)
+ENGINE = $engine_type;
+CREATE VIEW db_datadict.v_granted_to_1 AS SELECT * FROM db_datadict.t1;
+CREATE VIEW db_datadict.v_granted_glob AS SELECT f2, f3 FROM db_datadict.t1;
+
+GRANT SELECT ON db_datadict.t1 TO 'testuser1'@'localhost';
+GRANT SELECT ON db_datadict.v_granted_to_1 TO 'testuser1'@'localhost';
+GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
+
+let $select = SELECT * FROM information_schema.views
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+eval $select;
+
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1, localhost, testuser1, , test);
+eval $select;
+
+--echo # Establish connection testuser2 (user=testuser2)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser2, localhost, testuser2, , test);
+eval $select;
+
+--echo # Establish connection test_no_views (user=test_no_views)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (test_no_views, localhost, test_no_views, , test);
+eval $select;
+
+# Cleanup
+--echo # Switch to connection default and close all other connections
+connection default;
+disconnect testuser1;
+disconnect testuser2;
+disconnect test_no_views;
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'test_no_views'@'localhost';
+DROP DATABASE db_datadict;
+
+--echo #########################################################################
+--echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.VIEWS modifications
+--echo #########################################################################
+# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
+# column) automatically inserts all relevant information on that
+# object into every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.14: Ensure that the alteration of any existing database object
+# automatically updates all relevant information on that object in
+# every appropriate INFORMATION_SCHEMA table.
+# 3.2.1.15: Ensure that the dropping of any existing database object
+# automatically deletes all relevant information on that object from
+# every appropriate INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP TABLE IF EXISTS test.t1_my_table;
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
+ENGINE = $engine_type;
+--error 0,ER_CANNOT_USER
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+
+# Check just created VIEW
+SELECT * FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
+SELECT * FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+#
+# Check modification of DEFINER, SECURITY_TYPE, IS_UPDATABLE, VIEW_DEFINITION,
+# CHECK_OPTION
+SELECT table_name,definer FROM information_schema.views
+WHERE table_name = 't1_view';
+ALTER DEFINER = 'testuser1'@'localhost' VIEW test.t1_view AS
+SELECT DISTINCT f1 FROM test.t1_table;
+# The next result set could suffer from
+# Bug#22763 Disrepancy between SHOW CREATE VIEW and I_S.VIEWS
+# because the VIEW definition is missing.
+# Therefore we exclude the problematic columns from the result set.
+SELECT table_name,definer,security_type FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+ALTER DEFINER = 'root'@'localhost' SQL SECURITY INVOKER VIEW test.t1_view AS
+SELECT f1 FROM test.t1_table WITH LOCAL CHECK OPTION;
+SELECT table_name,definer,security_type FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+#
+# Check modification of TABLE_SCHEMA
+SELECT table_schema,table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema,table_name;
+--error ER_FORBID_SCHEMA_CHANGE
+RENAME TABLE test.t1_view TO db_datadict.t1_view;
+# Workaround for missing move to another database
+DROP VIEW test.t1_view;
+CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
+SELECT table_schema,table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema,table_name;
+#
+# Check modification of TABLE_NAME
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+RENAME TABLE db_datadict.t1_view TO db_datadict.t1_viewx;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+#
+# Check impact of DROP VIEW
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+DROP VIEW db_datadict.t1_viewx;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
+#
+# Check impact of DROP base TABLE of VIEW
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+DROP TABLE test.t1_table;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+--replace_result $engine_type <engine_type>
+eval
+CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
+ENGINE = $engine_type;
+#
+# Check impact of DROP SCHEMA
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+DROP DATABASE db_datadict;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+
+# Cleanup
+DROP USER 'testuser1'@'localhost';
+DROP TABLE test.t1_table;
+
+--echo ########################################################################
+--echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
+--echo # DDL on INFORMATION_SCHEMA table are not supported
+--echo ########################################################################
+# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
+# INFORMATION_SCHEMA table.
+# 3.2.1.8: Ensure that no user may create an index on an
+# INFORMATION_SCHEMA table.
+# 3.2.1.9: Ensure that no user may alter the definition of an
+# INFORMATION_SCHEMA table.
+# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
+# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
+# other database.
+# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
+# in an INFORMATION_SCHEMA table.
+#
+--disable_warnings
+DROP DATABASE IF EXISTS db_datadict;
+--enable_warnings
+CREATE DATABASE db_datadict;
+CREATE VIEW db_datadict.v1 AS SELECT 1;
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.views
+SELECT * FROM information_schema.views;
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.views(table_schema, table_name)
+VALUES ('db2', 'v2');
+
+--error ER_DBACCESS_DENIED_ERROR
+UPDATE information_schema.views SET table_schema = 'test'
+WHERE table_name = 't1';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.views WHERE table_name = 't1';
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.views;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX my_idx_on_views ON information_schema.views(table_schema);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.views DROP PRIMARY KEY;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.views ADD f1 INT;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.views;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.views RENAME db_datadict.views;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.views RENAME information_schema.xviews;
+
+# Cleanup
+DROP DATABASE db_datadict;
+
diff --git a/mysql-test/suite/funcs_1/datadict/tables.inc b/mysql-test/suite/funcs_1/datadict/tables.inc
new file mode 100644
index 00000000000..5aa072d184c
--- /dev/null
+++ b/mysql-test/suite/funcs_1/datadict/tables.inc
@@ -0,0 +1,55 @@
+# suite/funcs_1/datadict/tables.inc
+#
+# Auxiliary script to be sourced by
+# is_tables_<engine>.test
+#
+# The variable $engine_type has to be assigned before sourcing ths script.
+#
+# Author:
+# 2008-06-04 mleich Create this script based on older scripts and new code.
+#
+
+# Just have some tables within different databases.
+--disable_warnings
+DROP DATABASE IF EXISTS test1;
+DROP DATABASE IF EXISTS test2;
+--enable_warnings
+CREATE DATABASE test1;
+CREATE DATABASE test2;
+
+--replace_result $engine_type <engine_to_be_used>
+eval CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = $engine_type;
+--replace_result $engine_type <engine_to_be_used>
+eval CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = $engine_type;
+--replace_result $engine_type <engine_to_be_used>
+eval CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = $engine_type;
+
+--source suite/funcs_1/datadict/tables2.inc
+SHOW TABLES FROM test1;
+SHOW TABLES FROM test2;
+
+# Create a low privileged user.
+# Note: The database db_datadict is just a "home" for the low privileged user
+# and not in the focus of testing.
+--error 0,ER_CANNOT_USER
+DROP USER testuser1@localhost;
+CREATE USER testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
+
+--echo # Establish connection testuser1 (user=testuser1)
+--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
+connect (testuser1,localhost,testuser1,,test1);
+--source suite/funcs_1/datadict/tables2.inc
+SHOW TABLES FROM test1;
+# The lowprivileged user testuser1 will get here an error.
+--disable_abort_on_error
+SHOW TABLES FROM test2;
+--enable_abort_on_error
+
+--echo # Switch to connection default and close connection testuser1
+connection default;
+disconnect testuser1;
+DROP USER testuser1@localhost;
+
+DROP DATABASE test1;
+DROP DATABASE test2;
diff --git a/mysql-test/suite/funcs_1/datadict/tables1.inc b/mysql-test/suite/funcs_1/datadict/tables1.inc
index a03304028f6..2e054a9dcfb 100644
--- a/mysql-test/suite/funcs_1/datadict/tables1.inc
+++ b/mysql-test/suite/funcs_1/datadict/tables1.inc
@@ -2,8 +2,8 @@
#
# Auxiliary script to be sourced by
# is_tables_mysql.test
+# is_tables_mysql_embedded.test
# is_tables_is.test
-# is_tables_<engine>.test
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -12,28 +12,27 @@
#
--disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
+DROP DATABASE IF EXISTS test1;
--enable_warnings
-CREATE DATABASE db_datadict;
+CREATE DATABASE test1;
--source suite/funcs_1/datadict/tables2.inc
# Create a low privileged user.
-# Note: The database db_datadict is just a "home" for the low privileged user
+# Note: The database test1 is just a "home" for the low privileged user
# and not in the focus of testing.
--error 0,ER_CANNOT_USER
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
--echo # Establish connection testuser1 (user=testuser1)
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1,localhost,testuser1,,db_datadict);
+connect (testuser1,localhost,testuser1,,test1);
--source suite/funcs_1/datadict/tables2.inc
--echo # Switch to connection default and close connection testuser1
connection default;
disconnect testuser1;
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
-
+DROP DATABASE test1;
diff --git a/mysql-test/suite/funcs_1/datadict/tables2.inc b/mysql-test/suite/funcs_1/datadict/tables2.inc
index 1066e52f8f0..6442aab493c 100644
--- a/mysql-test/suite/funcs_1/datadict/tables2.inc
+++ b/mysql-test/suite/funcs_1/datadict/tables2.inc
@@ -29,6 +29,8 @@
let $innodb_pattern = 'InnoDB free';
let $ndb_pattern = 'number_of_replicas';
--vertical_results
+# We do not unify the engine name here, because the rowformat is
+# specific to the engine.
--replace_column 8 "#TBLR#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT#" 16 "#UT#" 17 "#CT#" 20 "#CO#" 21 "#TC#"
eval
SELECT *,
@@ -44,4 +46,3 @@ FROM information_schema.tables
$my_where
ORDER BY table_schema,table_name;
--horizontal_results
-
diff --git a/mysql-test/suite/funcs_1/include/bug28309_skip.inc b/mysql-test/suite/funcs_1/include/bug28309_skip.inc
new file mode 100644
index 00000000000..18ba6641fad
--- /dev/null
+++ b/mysql-test/suite/funcs_1/include/bug28309_skip.inc
@@ -0,0 +1,13 @@
+# Skip tests which suffer from
+# Bug#28309 First insert violates unique constraint
+# - was "memory" table empty?
+# if the folowing conditions are fulfilled:
+# - MySQL Version is 5.0 (Bug is fixed in 5.1 and up)
+# - use of embedded server
+# - run on a case insensitive filesystem
+#
+let $value= query_get_value(SHOW VARIABLES LIKE 'lower_case_file_system', Value, 1);
+if (`SELECT '$value' = 'ON' AND VERSION() LIKE '5.0%embedded%'`)
+{
+ skip # Test requires backport of fix for Bug#28309 First insert violates unique constraint - was "memory" table empty ?;
+}
diff --git a/mysql-test/suite/funcs_1/include/innodb_tb1.inc b/mysql-test/suite/funcs_1/include/innodb_tb1.inc
index 4fede496478..c6b6395d91f 100644
--- a/mysql-test/suite/funcs_1/include/innodb_tb1.inc
+++ b/mysql-test/suite/funcs_1/include/innodb_tb1.inc
@@ -7,7 +7,7 @@ create table tb1 (
f1 char(0),
f2 char(0) binary,
f3 char(0) ascii,
-f4 tinytext unicode,
+f4 tinytext,
f5 text,
f6 mediumtext,
f7 longtext,
diff --git a/mysql-test/suite/funcs_1/include/innodb_tb3.inc b/mysql-test/suite/funcs_1/include/innodb_tb3.inc
index b8562d7acf2..ffdb20b7eef 100644
--- a/mysql-test/suite/funcs_1/include/innodb_tb3.inc
+++ b/mysql-test/suite/funcs_1/include/innodb_tb3.inc
@@ -10,7 +10,7 @@ f120 char ascii not null DEFAULT b'101',
f121 tinytext,
f122 text,
f123 mediumtext,
-f124 longtext unicode,
+f124 longtext,
f125 tinyblob,
f126 blob,
f127 mediumblob,
diff --git a/mysql-test/suite/funcs_1/include/innodb_tb4.inc b/mysql-test/suite/funcs_1/include/innodb_tb4.inc
index ef8fc240eca..c7c919c829d 100644
--- a/mysql-test/suite/funcs_1/include/innodb_tb4.inc
+++ b/mysql-test/suite/funcs_1/include/innodb_tb4.inc
@@ -55,13 +55,13 @@ f223 year(3),
f224 year(4),
f225 enum("1enum","2enum"),
f226 set("1set","2set"),
-f235 char(0) unicode,
+f235 char(0),
f236 char(90),
f237 char(255) ascii,
f238 varchar(0),
f239 varchar(20000) binary,
-f240 varchar(2000) unicode,
-f241 char(100) unicode
+f240 varchar(2000),
+f241 char(100)
) engine = innodb;
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
diff --git a/mysql-test/suite/funcs_1/include/memory_tb4.inc b/mysql-test/suite/funcs_1/include/memory_tb4.inc
index f9cc1d53c52..0cf17127d32 100644
--- a/mysql-test/suite/funcs_1/include/memory_tb4.inc
+++ b/mysql-test/suite/funcs_1/include/memory_tb4.inc
@@ -55,12 +55,12 @@ f223 year(3),
f224 year(4),
f225 enum("1enum","2enum"),
f226 set("1set","2set"),
-f236 char(95) unicode,
-f241 char(255) unicode,
+f236 char(95),
+f241 char(255),
f237 char(130) binary,
f238 varchar(25000) binary,
f239 varbinary(0),
-f240 varchar(1200) unicode
+f240 varchar(1200)
) engine = memory;
--replace_result $MYSQLTEST_VARDIR <MYSQLTEST_VARDIR>
diff --git a/mysql-test/suite/funcs_1/include/myisam_tb1.inc b/mysql-test/suite/funcs_1/include/myisam_tb1.inc
index da740cffaf3..1c95c6c53c0 100644
--- a/mysql-test/suite/funcs_1/include/myisam_tb1.inc
+++ b/mysql-test/suite/funcs_1/include/myisam_tb1.inc
@@ -7,7 +7,7 @@ create table tb1 (
f1 char,
f2 char binary,
f3 char ascii,
-f4 tinytext unicode,
+f4 tinytext,
f5 text,
f6 mediumtext,
f7 longtext,
diff --git a/mysql-test/suite/funcs_1/include/myisam_tb3.inc b/mysql-test/suite/funcs_1/include/myisam_tb3.inc
index 4ee6388f3bc..209c2e13fbf 100644
--- a/mysql-test/suite/funcs_1/include/myisam_tb3.inc
+++ b/mysql-test/suite/funcs_1/include/myisam_tb3.inc
@@ -10,7 +10,7 @@ f120 char ascii not null DEFAULT b'101',
f121 tinytext,
f122 text,
f123 mediumtext,
-f124 longtext unicode,
+f124 longtext,
f125 tinyblob,
f126 blob,
f127 mediumblob,
diff --git a/mysql-test/suite/funcs_1/include/myisam_tb4.inc b/mysql-test/suite/funcs_1/include/myisam_tb4.inc
index 1f7d19fd061..d7e3a966579 100644
--- a/mysql-test/suite/funcs_1/include/myisam_tb4.inc
+++ b/mysql-test/suite/funcs_1/include/myisam_tb4.inc
@@ -63,13 +63,13 @@ f231 VARBINARY(192),
f232 VARBINARY(27),
f233 VARBINARY(64),
f234 VARBINARY(192),
-f235 char(255) unicode,
+f235 char(255),
f236 char(60) ascii,
f237 char(255) binary,
f238 varchar(0) binary,
f239 varbinary(1000),
-f240 varchar(120) unicode,
-f241 char(100) unicode,
+f240 varchar(120),
+f241 char(100),
f242 bit(30)
) engine = myisam;
diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result
index fe341762047..019a76b951c 100644
--- a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result
@@ -1,141 +1,73 @@
-USE test;
-drop table if exists tb3 ;
-create table tb3 (
-f118 char not null DEFAULT 'a',
-f119 char binary not null DEFAULT b'101',
-f120 char ascii not null DEFAULT b'101',
-f121 tinytext,
-f122 text,
-f123 mediumtext,
-f124 longtext unicode,
-f125 tinyblob,
-f126 blob,
-f127 mediumblob,
-f128 longblob,
-f129 binary not null DEFAULT b'101',
-f130 tinyint not null DEFAULT 99,
-f131 tinyint unsigned not null DEFAULT 99,
-f132 tinyint zerofill not null DEFAULT 99,
-f133 tinyint unsigned zerofill not null DEFAULT 99,
-f134 smallint not null DEFAULT 999,
-f135 smallint unsigned not null DEFAULT 999,
-f136 smallint zerofill not null DEFAULT 999,
-f137 smallint unsigned zerofill not null DEFAULT 999,
-f138 mediumint not null DEFAULT 9999,
-f139 mediumint unsigned not null DEFAULT 9999,
-f140 mediumint zerofill not null DEFAULT 9999,
-f141 mediumint unsigned zerofill not null DEFAULT 9999,
-f142 int not null DEFAULT 99999,
-f143 int unsigned not null DEFAULT 99999,
-f144 int zerofill not null DEFAULT 99999,
-f145 int unsigned zerofill not null DEFAULT 99999,
-f146 bigint not null DEFAULT 999999,
-f147 bigint unsigned not null DEFAULT 999999,
-f148 bigint zerofill not null DEFAULT 999999,
-f149 bigint unsigned zerofill not null DEFAULT 999999,
-f150 decimal not null DEFAULT 999.999,
-f151 decimal unsigned not null DEFAULT 999.17,
-f152 decimal zerofill not null DEFAULT 999.999,
-f153 decimal unsigned zerofill,
-f154 decimal (0),
-f155 decimal (64),
-f156 decimal (0) unsigned,
-f157 decimal (64) unsigned,
-f158 decimal (0) zerofill,
-f159 decimal (64) zerofill,
-f160 decimal (0) unsigned zerofill,
-f161 decimal (64) unsigned zerofill,
-f162 decimal (0,0),
-f163 decimal (63,30),
-f164 decimal (0,0) unsigned,
-f165 decimal (63,30) unsigned,
-f166 decimal (0,0) zerofill,
-f167 decimal (63,30) zerofill,
-f168 decimal (0,0) unsigned zerofill,
-f169 decimal (63,30) unsigned zerofill,
-f170 numeric,
-f171 numeric unsigned,
-f172 numeric zerofill,
-f173 numeric unsigned zerofill,
-f174 numeric (0),
-f175 numeric (64)
-) engine = innodb;
-Warnings:
-Note 1265 Data truncated for column 'f150' at row 1
-Note 1265 Data truncated for column 'f151' at row 1
-Note 1265 Data truncated for column 'f152' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb3.txt'
-into table tb3;
Testcase x.x.x.1:
-----------------
DROP TABLE IF EXISTS t0, t1, t2;
-CREATE TABLE t0 (col1 char(50)) ENGINE=innodb;
-CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
-PRIMARY KEY (id)) ENGINE=innodb;
+CREATE TABLE t0 (col1 CHAR(50))
+ENGINE = <engine_to_be_tested>;
+CREATE TABLE t1 (id INT NOT NULL, col1 CHAR(50), PRIMARY KEY (id))
+ENGINE = <engine_to_be_tested>;
CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
-INDEX par_ind (f_id), col1 char(50),
-FOREIGN KEY (f_id) REFERENCES t1(id)
-ON DELETE SET NULL) ENGINE=innodb;
-insert into t1 values (1,'Department A');
-insert into t1 values (2,'Department B');
-insert into t1 values (3,'Department C');
-insert into t2 values (1,2,'Emp 1');
-insert into t2 values (2,2,'Emp 2');
-insert into t2 values (3,2,'Emp 3');
-create trigger trig after insert on t0 for each row
-delete from t1 where col1=new.col1;
-select * from t2;
+INDEX par_ind (f_id), col1 CHAR(50),
+FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL)
+ENGINE = <engine_to_be_tested>;
+INSERT INTO t1 VALUES (1,'Department A');
+INSERT INTO t1 VALUES (2,'Department B');
+INSERT INTO t1 VALUES (3,'Department C');
+INSERT INTO t2 VALUES (1,2,'Emp 1');
+INSERT INTO t2 VALUES (2,2,'Emp 2');
+INSERT INTO t2 VALUES (3,2,'Emp 3');
+CREATE TRIGGER trig AFTER INSERT ON t0 FOR EACH ROW
+DELETE FROM t1 WHERE col1 = new.col1;
+SELECT * FROM t2;
id f_id col1
1 2 Emp 1
2 2 Emp 2
3 2 Emp 3
-lock tables t0 write, t1 write;
-insert into t0 values ('Department B');
-unlock tables;
-select * from t2;
+LOCK TABLES t0 WRITE, t1 WRITE;
+INSERT INTO t0 VALUES ('Department B');
+UNLOCK TABLES;
+SELECT * FROM t2;
id f_id col1
1 NULL Emp 1
2 NULL Emp 2
3 NULL Emp 3
-drop trigger trig;
-drop table t2, t1;
+DROP TRIGGER trig;
+DROP TABLE t2, t1;
Testcase x.x.x.2:
-----------------
DROP TABLE IF EXISTS t1, t2;
-CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
-PRIMARY KEY (id)) ENGINE=innodb;
+CREATE TABLE t1 (id INT NOT NULL, col1 CHAR(50), PRIMARY KEY (id))
+ENGINE = <engine_to_be_tested>;
CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
-INDEX par_ind (f_id), col1 char(50),
-FOREIGN KEY (f_id) REFERENCES t1(id)
-ON UPDATE CASCADE) ENGINE=innodb;
-insert into t1 values (1,'Department A');
-insert into t1 values (2,'Department B');
-insert into t1 values (3,'Department C');
-insert into t2 values (1,2,'Emp 1');
-insert into t2 values (2,3,'Emp 2');
-insert into t2 values (3,4,'Emp 3');
+INDEX par_ind (f_id), col1 CHAR(50),
+FOREIGN KEY (f_id) REFERENCES t1(id) ON UPDATE CASCADE)
+ENGINE = <engine_to_be_tested>;
+INSERT INTO t1 VALUES (1,'Department A');
+INSERT INTO t1 VALUES (2,'Department B');
+INSERT INTO t1 VALUES (3,'Department C');
+INSERT INTO t2 VALUES (1,2,'Emp 1');
+INSERT INTO t2 VALUES (2,3,'Emp 2');
+insert into t2 VALUES (3,4,'Emp 3');
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f_id`) REFERENCES `t1` (`id`) ON UPDATE CASCADE)
-create trigger tr_t2 before insert on t2 for each row
-insert into t1 values(new.f_id, concat('New Department ', new.f_id));
-lock tables t1 write, t2 write;
-insert into t2 values (3,4,'Emp 3');
-unlock tables;
-select * from t1;
+CREATE TRIGGER tr_t2 BEFORE INSERT ON t2 FOR EACH ROW
+INSERT INTO t1 VALUES(new.f_id, CONCAT('New Department ', new.f_id));
+LOCK TABLES t1 WRITE, t2 WRITE;
+INSERT INTO t2 VALUES (3,4,'Emp 3');
+UNLOCK TABLES;
+SELECT * FROM t1;
id col1
1 Department A
2 Department B
3 Department C
4 New Department 4
-select * from t2;
+SELECT * FROM t2;
id f_id col1
1 2 Emp 1
2 3 Emp 2
3 4 Emp 3
-drop trigger tr_t2;
-drop table t2, t1, t0;
+DROP TRIGGER tr_t2;
+DROP TABLE t2, t1, t0;
Foreign Key tests disabled (bug 11472 - stored in trig_frkey2.test)
-------------------------------------------------------------------
-DROP TABLE test.tb3;
diff --git a/mysql-test/suite/funcs_1/r/is_cml_innodb.result b/mysql-test/suite/funcs_1/r/is_cml_innodb.result
new file mode 100644
index 00000000000..7c214cb770f
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_cml_innodb.result
@@ -0,0 +1,97 @@
+USE test;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1
+(
+f1 CHAR UNICODE,
+f2 CHAR(0) UNICODE,
+f3 CHAR(10) UNICODE,
+f5 VARCHAR(0) UNICODE,
+f6 VARCHAR(255) UNICODE,
+f7 VARCHAR(260) UNICODE,
+f8 TEXT UNICODE,
+f9 TINYTEXT UNICODE,
+f10 MEDIUMTEXT UNICODE,
+f11 LONGTEXT UNICODE
+) ENGINE = InnoDB;
+SELECT * FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
+NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
+NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+2.0000 char ucs2 ucs2_general_ci
+2.0000 longtext ucs2 ucs2_general_ci
+2.0000 mediumtext ucs2 ucs2_general_ci
+2.0000 text ucs2 ucs2_general_ci
+2.0000 varchar ucs2 ucs2_general_ci
+2.0079 tinytext ucs2 ucs2_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL char ucs2 ucs2_general_ci
+NULL varchar ucs2 ucs2_general_ci
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
+NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
+2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
+NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
+2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
+2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
+2.0000 test t1 f8 text 32767 65535 ucs2 ucs2_general_ci text
+2.0079 test t1 f9 tinytext 127 255 ucs2 ucs2_general_ci tinytext
+2.0000 test t1 f10 mediumtext 8388607 16777215 ucs2 ucs2_general_ci mediumtext
+2.0000 test t1 f11 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/r/is_cml_memory.result b/mysql-test/suite/funcs_1/r/is_cml_memory.result
new file mode 100644
index 00000000000..fe4b018cec3
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_cml_memory.result
@@ -0,0 +1,82 @@
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+USE test;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1
+(
+f1 CHAR UNICODE,
+f2 CHAR(0) UNICODE,
+f3 CHAR(10) UNICODE,
+f5 VARCHAR(0) UNICODE,
+f6 VARCHAR(255) UNICODE,
+f7 VARCHAR(260) UNICODE
+) ENGINE = MEMORY;
+SELECT * FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+2.0000 char ucs2 ucs2_general_ci
+2.0000 varchar ucs2 ucs2_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL char ucs2 ucs2_general_ci
+NULL varchar ucs2 ucs2_general_ci
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
+NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
+2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
+NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
+2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
+2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/r/is_cml_myisam.result b/mysql-test/suite/funcs_1/r/is_cml_myisam.result
new file mode 100644
index 00000000000..9808b1c1793
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_cml_myisam.result
@@ -0,0 +1,98 @@
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+USE test;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1
+(
+f1 CHAR UNICODE,
+f2 CHAR(0) UNICODE,
+f3 CHAR(10) UNICODE,
+f5 VARCHAR(0) UNICODE,
+f6 VARCHAR(255) UNICODE,
+f7 VARCHAR(260) UNICODE,
+f8 TEXT UNICODE,
+f9 TINYTEXT UNICODE,
+f10 MEDIUMTEXT UNICODE,
+f11 LONGTEXT UNICODE
+) ENGINE = MyISAM;
+SELECT * FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
+NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
+NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+2.0000 char ucs2 ucs2_general_ci
+2.0000 longtext ucs2 ucs2_general_ci
+2.0000 mediumtext ucs2 ucs2_general_ci
+2.0000 text ucs2 ucs2_general_ci
+2.0000 varchar ucs2 ucs2_general_ci
+2.0079 tinytext ucs2 ucs2_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL char ucs2 ucs2_general_ci
+NULL varchar ucs2 ucs2_general_ci
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
+NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
+2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
+NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
+2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
+2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
+2.0000 test t1 f8 text 32767 65535 ucs2 ucs2_general_ci text
+2.0079 test t1 f9 tinytext 127 255 ucs2 ucs2_general_ci tinytext
+2.0000 test t1 f10 mediumtext 8388607 16777215 ucs2 ucs2_general_ci mediumtext
+2.0000 test t1 f11 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/r/is_cml_ndb.result b/mysql-test/suite/funcs_1/r/is_cml_ndb.result
new file mode 100644
index 00000000000..ba6a0589ae0
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_cml_ndb.result
@@ -0,0 +1,97 @@
+USE test;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1
+(
+f1 CHAR UNICODE,
+f2 CHAR(0) UNICODE,
+f3 CHAR(10) UNICODE,
+f5 VARCHAR(0) UNICODE,
+f6 VARCHAR(255) UNICODE,
+f7 VARCHAR(260) UNICODE,
+f8 TEXT UNICODE,
+f9 TINYTEXT UNICODE,
+f10 MEDIUMTEXT UNICODE,
+f11 LONGTEXT UNICODE
+) ENGINE = NDB;
+SELECT * FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL test t1 f1 1 NULL YES char 1 2 NULL NULL ucs2 ucs2_general_ci char(1) select,insert,update,references
+NULL test t1 f10 9 NULL YES mediumtext 8388607 16777215 NULL NULL ucs2 ucs2_general_ci mediumtext select,insert,update,references
+NULL test t1 f11 10 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+NULL test t1 f2 2 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+NULL test t1 f3 3 NULL YES char 10 20 NULL NULL ucs2 ucs2_general_ci char(10) select,insert,update,references
+NULL test t1 f5 4 NULL YES varchar 0 0 NULL NULL ucs2 ucs2_general_ci varchar(0) select,insert,update,references
+NULL test t1 f6 5 NULL YES varchar 255 510 NULL NULL ucs2 ucs2_general_ci varchar(255) select,insert,update,references
+NULL test t1 f7 6 NULL YES varchar 260 520 NULL NULL ucs2 ucs2_general_ci varchar(260) select,insert,update,references
+NULL test t1 f8 7 NULL YES text 32767 65535 NULL NULL ucs2 ucs2_general_ci text select,insert,update,references
+NULL test t1 f9 8 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+2.0000 char ucs2 ucs2_general_ci
+2.0000 longtext ucs2 ucs2_general_ci
+2.0000 mediumtext ucs2 ucs2_general_ci
+2.0000 text ucs2 ucs2_general_ci
+2.0000 varchar ucs2 ucs2_general_ci
+2.0079 tinytext ucs2 ucs2_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL char ucs2 ucs2_general_ci
+NULL varchar ucs2 ucs2_general_ci
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+2.0000 test t1 f1 char 1 2 ucs2 ucs2_general_ci char(1)
+NULL test t1 f2 char 0 0 ucs2 ucs2_general_ci char(0)
+2.0000 test t1 f3 char 10 20 ucs2 ucs2_general_ci char(10)
+NULL test t1 f5 varchar 0 0 ucs2 ucs2_general_ci varchar(0)
+2.0000 test t1 f6 varchar 255 510 ucs2 ucs2_general_ci varchar(255)
+2.0000 test t1 f7 varchar 260 520 ucs2 ucs2_general_ci varchar(260)
+2.0000 test t1 f8 text 32767 65535 ucs2 ucs2_general_ci text
+2.0079 test t1 f9 tinytext 127 255 ucs2 ucs2_general_ci tinytext
+2.0000 test t1 f10 mediumtext 8388607 16777215 ucs2 ucs2_general_ci mediumtext
+2.0000 test t1 f11 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/r/is_columns_innodb.result b/mysql-test/suite/funcs_1/r/is_columns_innodb.result
index d80ab62a987..aaeb58a3475 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result
@@ -6,7 +6,7 @@ create table tb1 (
f1 char(0),
f2 char(0) binary,
f3 char(0) ascii,
-f4 tinytext unicode,
+f4 tinytext,
f5 text,
f6 mediumtext,
f7 longtext,
@@ -142,7 +142,7 @@ f120 char ascii not null DEFAULT b'101',
f121 tinytext,
f122 text,
f123 mediumtext,
-f124 longtext unicode,
+f124 longtext,
f125 tinyblob,
f126 blob,
f127 mediumblob,
@@ -254,13 +254,13 @@ f223 year(3),
f224 year(4),
f225 enum("1enum","2enum"),
f226 set("1set","2set"),
-f235 char(0) unicode,
+f235 char(0),
f236 char(90),
f237 char(255) ascii,
f238 varchar(0),
f239 varchar(20000) binary,
-f240 varchar(2000) unicode,
-f241 char(100) unicode
+f240 varchar(2000),
+f241 char(100)
) engine = innodb;
load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb4.txt'
into table tb4;
@@ -460,7 +460,7 @@ NULL test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0
NULL test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
NULL test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f4 4 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+NULL test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
NULL test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
NULL test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
NULL test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
@@ -542,7 +542,7 @@ NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
NULL test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
NULL test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
NULL test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
-NULL test tb3 f124 7 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+NULL test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
NULL test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
NULL test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
NULL test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
@@ -645,13 +645,13 @@ NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) sele
NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb4 f235 52 NULL YES char 0 0 NULL NULL ucs2 ucs2_general_ci char(0) select,insert,update,references
+NULL test tb4 f235 52 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
NULL test tb4 f236 53 NULL YES char 90 90 NULL NULL latin1 latin1_swedish_ci char(90) select,insert,update,references
NULL test tb4 f237 54 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
NULL test tb4 f238 55 NULL YES varchar 0 0 NULL NULL latin1 latin1_swedish_ci varchar(0) select,insert,update,references
NULL test tb4 f239 56 NULL YES varchar 20000 20000 NULL NULL latin1 latin1_bin varchar(20000) select,insert,update,references
-NULL test tb4 f240 57 NULL YES varchar 2000 4000 NULL NULL ucs2 ucs2_general_ci varchar(2000) select,insert,update,references
-NULL test tb4 f241 58 NULL YES char 100 200 NULL NULL ucs2 ucs2_general_ci char(100) select,insert,update,references
+NULL test tb4 f240 57 NULL YES varchar 2000 2000 NULL NULL latin1 latin1_swedish_ci varchar(2000) select,insert,update,references
+NULL test tb4 f241 58 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100) select,insert,update,references
NULL test1 tb2 f100 42 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
@@ -736,6 +736,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
1.0000 set latin1 latin1_swedish_ci
1.0000 text latin1 latin1_swedish_ci
1.0000 tinytext latin1 latin1_swedish_ci
+1.0000 varchar latin1 latin1_swedish_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -746,10 +747,6 @@ WHERE table_schema LIKE 'test%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
-2.0000 char ucs2 ucs2_general_ci
-2.0000 longtext ucs2 ucs2_general_ci
-2.0000 varchar ucs2 ucs2_general_ci
-2.0079 tinytext ucs2 ucs2_general_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -780,7 +777,6 @@ NULL year NULL NULL
NULL char latin1 latin1_bin
NULL char latin1 latin1_swedish_ci
NULL varchar latin1 latin1_swedish_ci
-NULL char ucs2 ucs2_general_ci
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
@@ -844,7 +840,7 @@ NULL test t9 f3 int NULL NULL NULL NULL int(11)
NULL test tb1 f1 char 0 0 latin1 latin1_swedish_ci char(0)
NULL test tb1 f2 char 0 0 latin1 latin1_bin char(0)
NULL test tb1 f3 char 0 0 latin1 latin1_swedish_ci char(0)
-2.0079 test tb1 f4 tinytext 127 255 ucs2 ucs2_general_ci tinytext
+1.0000 test tb1 f4 tinytext 255 255 latin1 latin1_swedish_ci tinytext
1.0000 test tb1 f5 text 65535 65535 latin1 latin1_swedish_ci text
1.0000 test tb1 f6 mediumtext 16777215 16777215 latin1 latin1_swedish_ci mediumtext
1.0000 test tb1 f7 longtext 4294967295 4294967295 latin1 latin1_swedish_ci longtext
@@ -956,7 +952,7 @@ NULL test tb2 f107 year NULL NULL NULL NULL year(4)
1.0000 test tb3 f121 tinytext 255 255 latin1 latin1_swedish_ci tinytext
1.0000 test tb3 f122 text 65535 65535 latin1 latin1_swedish_ci text
1.0000 test tb3 f123 mediumtext 16777215 16777215 latin1 latin1_swedish_ci mediumtext
-2.0000 test tb3 f124 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
+1.0000 test tb3 f124 longtext 4294967295 4294967295 latin1 latin1_swedish_ci longtext
1.0000 test tb3 f125 tinyblob 255 255 NULL NULL tinyblob
1.0000 test tb3 f126 blob 65535 65535 NULL NULL blob
1.0000 test tb3 f127 mediumblob 16777215 16777215 NULL NULL mediumblob
@@ -1059,13 +1055,13 @@ NULL test tb4 f223 year NULL NULL NULL NULL year(4)
NULL test tb4 f224 year NULL NULL NULL NULL year(4)
1.0000 test tb4 f225 enum 5 5 latin1 latin1_swedish_ci enum('1enum','2enum')
1.0000 test tb4 f226 set 9 9 latin1 latin1_swedish_ci set('1set','2set')
-NULL test tb4 f235 char 0 0 ucs2 ucs2_general_ci char(0)
+NULL test tb4 f235 char 0 0 latin1 latin1_swedish_ci char(0)
1.0000 test tb4 f236 char 90 90 latin1 latin1_swedish_ci char(90)
1.0000 test tb4 f237 char 255 255 latin1 latin1_swedish_ci char(255)
NULL test tb4 f238 varchar 0 0 latin1 latin1_swedish_ci varchar(0)
1.0000 test tb4 f239 varchar 20000 20000 latin1 latin1_bin varchar(20000)
-2.0000 test tb4 f240 varchar 2000 4000 ucs2 ucs2_general_ci varchar(2000)
-2.0000 test tb4 f241 char 100 200 ucs2 ucs2_general_ci char(100)
+1.0000 test tb4 f240 varchar 2000 2000 latin1 latin1_swedish_ci varchar(2000)
+1.0000 test tb4 f241 char 100 100 latin1 latin1_swedish_ci char(100)
NULL test1 tb2 f59 decimal NULL NULL NULL NULL decimal(10,0) unsigned
NULL test1 tb2 f60 decimal NULL NULL NULL NULL decimal(64,0) unsigned
NULL test1 tb2 f61 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
new file mode 100644
index 00000000000..6ad08c11c19
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
@@ -0,0 +1,380 @@
+SELECT * FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60)
+NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
+NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11)
+NULL information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3)
+NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
+NULL information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema COLUMNS COLUMN_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS EXTRA 17 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20)
+NULL information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+NULL information_schema COLUMNS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMN_PRIVILEGES COLUMN_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMN_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+NULL information_schema COLUMN_PRIVILEGES IS_GRANTABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(10)
+NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(10)
+NULL information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME 12 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES CREATED 16 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+NULL information_schema ROUTINES DEFINER 20 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
+NULL information_schema ROUTINES DTD_IDENTIFIER 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES EXTERNAL_LANGUAGE 10 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES EXTERNAL_NAME 9 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES IS_DETERMINISTIC 12 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema ROUTINES LAST_ALTERED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+NULL information_schema ROUTINES PARAMETER_STYLE 11 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+NULL information_schema ROUTINES ROUTINE_BODY 7 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+NULL information_schema ROUTINES ROUTINE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema ROUTINES ROUTINE_COMMENT 19 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES ROUTINE_DEFINITION 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema ROUTINES ROUTINE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES ROUTINE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
+NULL information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
+NULL information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema ROUTINES SQL_MODE 18 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema SCHEMATA CATALOG_NAME 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+NULL information_schema SCHEMA_PRIVILEGES IS_GRANTABLE 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1)
+NULL information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS COMMENT 15 NULL YES varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
+NULL information_schema STATISTICS INDEX_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS INDEX_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS INDEX_TYPE 14 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16)
+NULL information_schema STATISTICS NON_UNIQUE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(1)
+NULL information_schema STATISTICS NULLABLE 13 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema STATISTICS PACKED 12 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
+NULL information_schema STATISTICS SEQ_IN_INDEX 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(2)
+NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(3)
+NULL information_schema STATISTICS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+NULL information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255)
+NULL information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10)
+NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80)
+NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21)
+NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_CONSTRAINTS TABLE_NAME 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_CONSTRAINTS TABLE_SCHEMA 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+NULL information_schema TABLE_PRIVILEGES IS_GRANTABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema TRIGGERS ACTION_ORDER 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4)
+NULL information_schema TRIGGERS ACTION_ORIENTATION 11 NO varchar 9 27 NULL NULL utf8 utf8_general_ci varchar(9)
+NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW 15 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema TRIGGERS ACTION_TIMING 12 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
+NULL information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+NULL information_schema TRIGGERS DEFINER 19 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema TRIGGERS EVENT_MANIPULATION 4 NO varchar 6 18 NULL NULL utf8 utf8_general_ci varchar(6)
+NULL information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema TRIGGERS EVENT_OBJECT_SCHEMA 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS EVENT_OBJECT_TABLE 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS SQL_MODE 18 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+NULL information_schema TRIGGERS TRIGGER_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema TRIGGERS TRIGGER_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS TRIGGER_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81)
+NULL information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8)
+NULL information_schema VIEWS DEFINER 7 NO varchar 77 231 NULL NULL utf8 utf8_general_ci varchar(77)
+NULL information_schema VIEWS IS_UPDATABLE 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3)
+NULL information_schema VIEWS SECURITY_TYPE 8 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7)
+NULL information_schema VIEWS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512)
+NULL information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64)
+NULL information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+1.0000 longtext utf8 utf8_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+3.0000 varchar utf8 utf8_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL bigint NULL NULL
+NULL datetime NULL NULL
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
+NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
+3.0000 information_schema COLLATIONS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
+3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8 utf8_general_ci varchar(3)
+NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMNS COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(21)
+1.0000 information_schema COLUMNS COLUMN_DEFAULT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema COLUMNS IS_NULLABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema COLUMNS DATA_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21)
+3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMNS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema COLUMNS EXTRA varchar 20 60 utf8 utf8_general_ci varchar(20)
+3.0000 information_schema COLUMNS PRIVILEGES varchar 80 240 utf8 utf8_general_ci varchar(80)
+3.0000 information_schema COLUMNS COLUMN_COMMENT varchar 255 765 utf8 utf8_general_ci varchar(255)
+3.0000 information_schema COLUMN_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
+3.0000 information_schema COLUMN_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema COLUMN_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMN_PRIVILEGES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMN_PRIVILEGES COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema KEY_COLUMN_USAGE TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema KEY_COLUMN_USAGE TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema KEY_COLUMN_USAGE TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema KEY_COLUMN_USAGE COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema KEY_COLUMN_USAGE ORDINAL_POSITION bigint NULL NULL NULL NULL bigint(10)
+NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NULL NULL NULL NULL bigint(10)
+3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES ROUTINE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema ROUTINES ROUTINE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES ROUTINE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES ROUTINE_TYPE varchar 9 27 utf8 utf8_general_ci varchar(9)
+3.0000 information_schema ROUTINES DTD_IDENTIFIER varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES ROUTINE_BODY varchar 8 24 utf8 utf8_general_ci varchar(8)
+1.0000 information_schema ROUTINES ROUTINE_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema ROUTINES EXTERNAL_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES EXTERNAL_LANGUAGE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES PARAMETER_STYLE varchar 8 24 utf8 utf8_general_ci varchar(8)
+3.0000 information_schema ROUTINES IS_DETERMINISTIC varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema ROUTINES SQL_DATA_ACCESS varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES SQL_PATH varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
+NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime
+NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime
+1.0000 information_schema ROUTINES SQL_MODE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
+3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
+3.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema SCHEMA_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema STATISTICS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema STATISTICS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema STATISTICS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS NON_UNIQUE bigint NULL NULL NULL NULL bigint(1)
+3.0000 information_schema STATISTICS INDEX_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema STATISTICS INDEX_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema STATISTICS SEQ_IN_INDEX bigint NULL NULL NULL NULL bigint(2)
+3.0000 information_schema STATISTICS COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema STATISTICS COLLATION varchar 1 3 utf8 utf8_general_ci varchar(1)
+NULL information_schema STATISTICS CARDINALITY bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema STATISTICS SUB_PART bigint NULL NULL NULL NULL bigint(3)
+3.0000 information_schema STATISTICS PACKED varchar 10 30 utf8 utf8_general_ci varchar(10)
+3.0000 information_schema STATISTICS NULLABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema STATISTICS INDEX_TYPE varchar 16 48 utf8 utf8_general_ci varchar(16)
+3.0000 information_schema STATISTICS COMMENT varchar 16 48 utf8 utf8_general_ci varchar(16)
+3.0000 information_schema TABLES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema TABLES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLES TABLE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES VERSION bigint NULL NULL NULL NULL bigint(21)
+3.0000 information_schema TABLES ROW_FORMAT varchar 10 30 utf8 utf8_general_ci varchar(10)
+NULL information_schema TABLES TABLE_ROWS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES AVG_ROW_LENGTH bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES DATA_LENGTH bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES MAX_DATA_LENGTH bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES INDEX_LENGTH bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES DATA_FREE bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime
+NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime
+NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
+3.0000 information_schema TABLES TABLE_COLLATION varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21)
+3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255)
+3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
+3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_CONSTRAINTS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_CONSTRAINTS CONSTRAINT_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
+3.0000 information_schema TABLE_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema TABLE_PRIVILEGES TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_PRIVILEGES TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TRIGGERS EVENT_MANIPULATION varchar 6 18 utf8 utf8_general_ci varchar(6)
+3.0000 information_schema TRIGGERS EVENT_OBJECT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema TRIGGERS EVENT_OBJECT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TRIGGERS EVENT_OBJECT_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema TRIGGERS ACTION_ORDER bigint NULL NULL NULL NULL bigint(4)
+1.0000 information_schema TRIGGERS ACTION_CONDITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+1.0000 information_schema TRIGGERS ACTION_STATEMENT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema TRIGGERS ACTION_ORIENTATION varchar 9 27 utf8 utf8_general_ci varchar(9)
+3.0000 information_schema TRIGGERS ACTION_TIMING varchar 6 18 utf8 utf8_general_ci varchar(6)
+3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_TABLE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema TRIGGERS ACTION_REFERENCE_OLD_ROW varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema TRIGGERS ACTION_REFERENCE_NEW_ROW varchar 3 9 utf8 utf8_general_ci varchar(3)
+NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime
+1.0000 information_schema TRIGGERS SQL_MODE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+1.0000 information_schema TRIGGERS DEFINER longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
+3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
+3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+1.0000 information_schema VIEWS VIEW_DEFINITION longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+3.0000 information_schema VIEWS CHECK_OPTION varchar 8 24 utf8 utf8_general_ci varchar(8)
+3.0000 information_schema VIEWS IS_UPDATABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
+3.0000 information_schema VIEWS DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
+3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_memory.result b/mysql-test/suite/funcs_1/r/is_columns_memory.result
index ae7c5919447..2a715439e54 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_memory.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result
@@ -244,12 +244,12 @@ f223 year(3),
f224 year(4),
f225 enum("1enum","2enum"),
f226 set("1set","2set"),
-f236 char(95) unicode,
-f241 char(255) unicode,
+f236 char(95),
+f241 char(255),
f237 char(130) binary,
f238 varchar(25000) binary,
f239 varbinary(0),
-f240 varchar(1200) unicode
+f240 varchar(1200)
) engine = memory;
load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/memory_tb4.txt'
into table tb4;
@@ -620,12 +620,12 @@ NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4) sele
NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4) select,insert,update,references
NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum') select,insert,update,references
NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set') select,insert,update,references
-NULL test tb4 f236 52 NULL YES char 95 190 NULL NULL ucs2 ucs2_general_ci char(95) select,insert,update,references
+NULL test tb4 f236 52 NULL YES char 95 95 NULL NULL latin1 latin1_swedish_ci char(95) select,insert,update,references
NULL test tb4 f237 54 NULL YES char 130 130 NULL NULL latin1 latin1_bin char(130) select,insert,update,references
NULL test tb4 f238 55 NULL YES varchar 25000 25000 NULL NULL latin1 latin1_bin varchar(25000) select,insert,update,references
NULL test tb4 f239 56 NULL YES varbinary 0 0 NULL NULL NULL NULL varbinary(0) select,insert,update,references
-NULL test tb4 f240 57 NULL YES varchar 1200 2400 NULL NULL ucs2 ucs2_general_ci varchar(1200) select,insert,update,references
-NULL test tb4 f241 53 NULL YES char 255 510 NULL NULL ucs2 ucs2_general_ci char(255) select,insert,update,references
+NULL test tb4 f240 57 NULL YES varchar 1200 1200 NULL NULL latin1 latin1_swedish_ci varchar(1200) select,insert,update,references
+NULL test tb4 f241 53 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
NULL test1 tb2 f100 42 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time select,insert,update,references
@@ -702,6 +702,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
1.0000 char latin1 latin1_swedish_ci
1.0000 enum latin1 latin1_swedish_ci
1.0000 set latin1 latin1_swedish_ci
+1.0000 varchar latin1 latin1_swedish_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -712,8 +713,6 @@ WHERE table_schema LIKE 'test%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
-2.0000 char ucs2 ucs2_general_ci
-2.0000 varchar ucs2 ucs2_general_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -1006,12 +1005,12 @@ NULL test tb4 f223 year NULL NULL NULL NULL year(4)
NULL test tb4 f224 year NULL NULL NULL NULL year(4)
1.0000 test tb4 f225 enum 5 5 latin1 latin1_swedish_ci enum('1enum','2enum')
1.0000 test tb4 f226 set 9 9 latin1 latin1_swedish_ci set('1set','2set')
-2.0000 test tb4 f236 char 95 190 ucs2 ucs2_general_ci char(95)
-2.0000 test tb4 f241 char 255 510 ucs2 ucs2_general_ci char(255)
+1.0000 test tb4 f236 char 95 95 latin1 latin1_swedish_ci char(95)
+1.0000 test tb4 f241 char 255 255 latin1 latin1_swedish_ci char(255)
1.0000 test tb4 f237 char 130 130 latin1 latin1_bin char(130)
1.0000 test tb4 f238 varchar 25000 25000 latin1 latin1_bin varchar(25000)
NULL test tb4 f239 varbinary 0 0 NULL NULL varbinary(0)
-2.0000 test tb4 f240 varchar 1200 2400 ucs2 ucs2_general_ci varchar(1200)
+1.0000 test tb4 f240 varchar 1200 1200 latin1 latin1_swedish_ci varchar(1200)
NULL test1 tb2 f59 decimal NULL NULL NULL NULL decimal(10,0) unsigned
NULL test1 tb2 f60 decimal NULL NULL NULL NULL decimal(64,0) unsigned
NULL test1 tb2 f61 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam.result b/mysql-test/suite/funcs_1/r/is_columns_myisam.result
index 94574c33d74..9393d1638bd 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result
@@ -7,7 +7,7 @@ create table tb1 (
f1 char,
f2 char binary,
f3 char ascii,
-f4 tinytext unicode,
+f4 tinytext,
f5 text,
f6 mediumtext,
f7 longtext,
@@ -154,7 +154,7 @@ f120 char ascii not null DEFAULT b'101',
f121 tinytext,
f122 text,
f123 mediumtext,
-f124 longtext unicode,
+f124 longtext,
f125 tinyblob,
f126 blob,
f127 mediumblob,
@@ -274,13 +274,13 @@ f231 VARBINARY(192),
f232 VARBINARY(27),
f233 VARBINARY(64),
f234 VARBINARY(192),
-f235 char(255) unicode,
+f235 char(255),
f236 char(60) ascii,
f237 char(255) binary,
f238 varchar(0) binary,
f239 varbinary(1000),
-f240 varchar(120) unicode,
-f241 char(100) unicode,
+f240 varchar(120),
+f241 char(100),
f242 bit(30)
) engine = myisam;
load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb4.txt'
@@ -489,7 +489,7 @@ NULL test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0
NULL test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) select,insert,update,references
NULL test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
-NULL test tb1 f4 4 NULL YES tinytext 127 255 NULL NULL ucs2 ucs2_general_ci tinytext select,insert,update,references
+NULL test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
NULL test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned select,insert,update,references
NULL test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
NULL test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill select,insert,update,references
@@ -579,7 +579,7 @@ NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
NULL test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext select,insert,update,references
NULL test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text select,insert,update,references
NULL test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext select,insert,update,references
-NULL test tb3 f124 7 NULL YES longtext 2147483647 4294967295 NULL NULL ucs2 ucs2_general_ci longtext select,insert,update,references
+NULL test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext select,insert,update,references
NULL test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob select,insert,update,references
NULL test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob select,insert,update,references
NULL test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob select,insert,update,references
@@ -690,13 +690,13 @@ NULL test tb4 f231 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(1
NULL test tb4 f232 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27) select,insert,update,references
NULL test tb4 f233 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64) select,insert,update,references
NULL test tb4 f234 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192) select,insert,update,references
-NULL test tb4 f235 60 NULL YES char 255 510 NULL NULL ucs2 ucs2_general_ci char(255) select,insert,update,references
+NULL test tb4 f235 60 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255) select,insert,update,references
NULL test tb4 f236 61 NULL YES char 60 60 NULL NULL latin1 latin1_swedish_ci char(60) select,insert,update,references
NULL test tb4 f237 62 NULL YES char 255 255 NULL NULL latin1 latin1_bin char(255) select,insert,update,references
NULL test tb4 f238 63 NULL YES varchar 0 0 NULL NULL latin1 latin1_bin varchar(0) select,insert,update,references
NULL test tb4 f239 64 NULL YES varbinary 1000 1000 NULL NULL NULL NULL varbinary(1000) select,insert,update,references
-NULL test tb4 f240 65 NULL YES varchar 120 240 NULL NULL ucs2 ucs2_general_ci varchar(120) select,insert,update,references
-NULL test tb4 f241 66 NULL YES char 100 200 NULL NULL ucs2 ucs2_general_ci char(100) select,insert,update,references
+NULL test tb4 f240 65 NULL YES varchar 120 120 NULL NULL latin1 latin1_swedish_ci varchar(120) select,insert,update,references
+NULL test tb4 f241 66 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100) select,insert,update,references
NULL test tb4 f242 67 NULL YES bit NULL NULL 30 NULL NULL NULL bit(30) select,insert,update,references
NULL test1 tb2 f100 42 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill select,insert,update,references
NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date select,insert,update,references
@@ -790,6 +790,7 @@ COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
1.0000 set latin1 latin1_swedish_ci
1.0000 text latin1 latin1_swedish_ci
1.0000 tinytext latin1 latin1_swedish_ci
+1.0000 varchar latin1 latin1_swedish_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -800,10 +801,6 @@ WHERE table_schema LIKE 'test%'
AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
-2.0000 char ucs2 ucs2_general_ci
-2.0000 longtext ucs2 ucs2_general_ci
-2.0000 varchar ucs2 ucs2_general_ci
-2.0079 tinytext ucs2 ucs2_general_ci
SELECT DISTINCT
CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
DATA_TYPE,
@@ -896,7 +893,7 @@ NULL test t9 f3 int NULL NULL NULL NULL int(11)
1.0000 test tb1 f1 char 1 1 latin1 latin1_swedish_ci char(1)
1.0000 test tb1 f2 char 1 1 latin1 latin1_bin char(1)
1.0000 test tb1 f3 char 1 1 latin1 latin1_swedish_ci char(1)
-2.0079 test tb1 f4 tinytext 127 255 ucs2 ucs2_general_ci tinytext
+1.0000 test tb1 f4 tinytext 255 255 latin1 latin1_swedish_ci tinytext
1.0000 test tb1 f5 text 65535 65535 latin1 latin1_swedish_ci text
1.0000 test tb1 f6 mediumtext 16777215 16777215 latin1 latin1_swedish_ci mediumtext
1.0000 test tb1 f7 longtext 4294967295 4294967295 latin1 latin1_swedish_ci longtext
@@ -1016,7 +1013,7 @@ NULL test tb2 f107 year NULL NULL NULL NULL year(4)
1.0000 test tb3 f121 tinytext 255 255 latin1 latin1_swedish_ci tinytext
1.0000 test tb3 f122 text 65535 65535 latin1 latin1_swedish_ci text
1.0000 test tb3 f123 mediumtext 16777215 16777215 latin1 latin1_swedish_ci mediumtext
-2.0000 test tb3 f124 longtext 2147483647 4294967295 ucs2 ucs2_general_ci longtext
+1.0000 test tb3 f124 longtext 4294967295 4294967295 latin1 latin1_swedish_ci longtext
1.0000 test tb3 f125 tinyblob 255 255 NULL NULL tinyblob
1.0000 test tb3 f126 blob 65535 65535 NULL NULL blob
1.0000 test tb3 f127 mediumblob 16777215 16777215 NULL NULL mediumblob
@@ -1127,13 +1124,13 @@ NULL test tb4 f224 year NULL NULL NULL NULL year(4)
1.0000 test tb4 f232 varbinary 27 27 NULL NULL varbinary(27)
1.0000 test tb4 f233 varbinary 64 64 NULL NULL varbinary(64)
1.0000 test tb4 f234 varbinary 192 192 NULL NULL varbinary(192)
-2.0000 test tb4 f235 char 255 510 ucs2 ucs2_general_ci char(255)
+1.0000 test tb4 f235 char 255 255 latin1 latin1_swedish_ci char(255)
1.0000 test tb4 f236 char 60 60 latin1 latin1_swedish_ci char(60)
1.0000 test tb4 f237 char 255 255 latin1 latin1_bin char(255)
NULL test tb4 f238 varchar 0 0 latin1 latin1_bin varchar(0)
1.0000 test tb4 f239 varbinary 1000 1000 NULL NULL varbinary(1000)
-2.0000 test tb4 f240 varchar 120 240 ucs2 ucs2_general_ci varchar(120)
-2.0000 test tb4 f241 char 100 200 ucs2 ucs2_general_ci char(100)
+1.0000 test tb4 f240 varchar 120 120 latin1 latin1_swedish_ci varchar(120)
+1.0000 test tb4 f241 char 100 100 latin1 latin1_swedish_ci char(100)
NULL test tb4 f242 bit NULL NULL NULL NULL bit(30)
NULL test1 tb2 f59 decimal NULL NULL NULL NULL decimal(10,0) unsigned
NULL test1 tb2 f60 decimal NULL NULL NULL NULL decimal(64,0) unsigned
diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
new file mode 100644
index 00000000000..ffc6683b099
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
@@ -0,0 +1,1214 @@
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+DROP DATABASE IF EXISTS test1;
+CREATE DATABASE test1;
+USE test;
+drop table if exists tb1 ;
+create table tb1 (
+f1 char,
+f2 char binary,
+f3 char ascii,
+f4 tinytext,
+f5 text,
+f6 mediumtext,
+f7 longtext,
+f8 tinyblob,
+f9 blob,
+f10 mediumblob,
+f11 longblob,
+f12 binary,
+f13 tinyint,
+f14 tinyint unsigned,
+f15 tinyint zerofill,
+f16 tinyint unsigned zerofill,
+f17 smallint,
+f18 smallint unsigned,
+f19 smallint zerofill,
+f20 smallint unsigned zerofill,
+f21 mediumint,
+f22 mediumint unsigned,
+f23 mediumint zerofill,
+f24 mediumint unsigned zerofill,
+f25 int,
+f26 int unsigned,
+f27 int zerofill,
+f28 int unsigned zerofill,
+f29 bigint,
+f30 bigint unsigned,
+f31 bigint zerofill,
+f32 bigint unsigned zerofill,
+f33 decimal not null DEFAULT 9.9,
+f34 decimal unsigned not null DEFAULT 9.9,
+f35 decimal zerofill not null DEFAULT 9.9,
+f36 decimal unsigned zerofill not null DEFAULT 9.9,
+f37 decimal (0) not null DEFAULT 9.9,
+f38 decimal (64) not null DEFAULT 9.9,
+f39 decimal (0) unsigned not null DEFAULT 9.9,
+f40 decimal (64) unsigned not null DEFAULT 9.9,
+f41 decimal (0) zerofill not null DEFAULT 9.9,
+f42 decimal (64) zerofill not null DEFAULT 9.9,
+f43 decimal (0) unsigned zerofill not null DEFAULT 9.9,
+f44 decimal (64) unsigned zerofill not null DEFAULT 9.9,
+f45 decimal (0,0) not null DEFAULT 9.9,
+f46 decimal (63,30) not null DEFAULT 9.9,
+f47 decimal (0,0) unsigned not null DEFAULT 9.9,
+f48 decimal (63,30) unsigned not null DEFAULT 9.9,
+f49 decimal (0,0) zerofill not null DEFAULT 9.9,
+f50 decimal (63,30) zerofill not null DEFAULT 9.9,
+f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9,
+f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9,
+f53 numeric not null DEFAULT 99,
+f54 numeric unsigned not null DEFAULT 99,
+f55 numeric zerofill not null DEFAULT 99,
+f56 numeric unsigned zerofill not null DEFAULT 99,
+f57 numeric (0) not null DEFAULT 99,
+f58 numeric (64) not null DEFAULT 99
+) engine = myisam;
+Warnings:
+Note 1265 Data truncated for column 'f33' at row 1
+Note 1265 Data truncated for column 'f34' at row 1
+Note 1265 Data truncated for column 'f35' at row 1
+Note 1265 Data truncated for column 'f36' at row 1
+Note 1265 Data truncated for column 'f37' at row 1
+Note 1265 Data truncated for column 'f38' at row 1
+Note 1265 Data truncated for column 'f39' at row 1
+Note 1265 Data truncated for column 'f40' at row 1
+Note 1265 Data truncated for column 'f41' at row 1
+Note 1265 Data truncated for column 'f42' at row 1
+Note 1265 Data truncated for column 'f43' at row 1
+Note 1265 Data truncated for column 'f44' at row 1
+Note 1265 Data truncated for column 'f45' at row 1
+Note 1265 Data truncated for column 'f47' at row 1
+Note 1265 Data truncated for column 'f49' at row 1
+Note 1265 Data truncated for column 'f51' at row 1
+load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb1.txt'
+into table tb1;
+drop table if exists tb2 ;
+create table tb2 (
+f59 numeric (0) unsigned,
+f60 numeric (64) unsigned,
+f61 numeric (0) zerofill,
+f62 numeric (64) zerofill,
+f63 numeric (0) unsigned zerofill,
+f64 numeric (64) unsigned zerofill,
+f65 numeric (0,0),
+f66 numeric (63,30),
+f67 numeric (0,0) unsigned,
+f68 numeric (63,30) unsigned,
+f69 numeric (0,0) zerofill,
+f70 numeric (63,30) zerofill,
+f71 numeric (0,0) unsigned zerofill,
+f72 numeric (63,30) unsigned zerofill,
+f73 real,
+f74 real unsigned,
+f75 real zerofill,
+f76 real unsigned zerofill,
+f77 double default 7.7,
+f78 double unsigned default 7.7,
+f79 double zerofill default 7.7,
+f80 double unsigned zerofill default 8.8,
+f81 float not null default 8.8,
+f82 float unsigned not null default 8.8,
+f83 float zerofill not null default 8.8,
+f84 float unsigned zerofill not null default 8.8,
+f85 float(0) not null default 8.8,
+f86 float(23) not null default 8.8,
+f87 float(0) unsigned not null default 8.8,
+f88 float(23) unsigned not null default 8.8,
+f89 float(0) zerofill not null default 8.8,
+f90 float(23) zerofill not null default 8.8,
+f91 float(0) unsigned zerofill not null default 8.8,
+f92 float(23) unsigned zerofill not null default 8.8,
+f93 float(24) not null default 8.8,
+f94 float(53) not null default 8.8,
+f95 float(24) unsigned not null default 8.8,
+f96 float(53) unsigned not null default 8.8,
+f97 float(24) zerofill not null default 8.8,
+f98 float(53) zerofill not null default 8.8,
+f99 float(24) unsigned zerofill not null default 8.8,
+f100 float(53) unsigned zerofill not null default 8.8,
+f101 date not null default '2000-01-01',
+f102 time not null default 20,
+f103 datetime not null default '2/2/2',
+f104 timestamp not null default 20001231235959,
+f105 year not null default 2000,
+f106 year(3) not null default 2000,
+f107 year(4) not null default 2000,
+f108 enum("1enum","2enum") not null default "1enum",
+f109 set("1set","2set") not null default "1set",
+f110 VARBINARY(64) null,
+f111 VARBINARY(27) null ,
+f112 VARBINARY(64) null ,
+f113 VARBINARY(192) null ,
+f114 VARBINARY(192) ,
+f115 VARBINARY(27) null ,
+f116 VARBINARY(64) null,
+f117 VARBINARY(192) null
+) engine = myisam;
+load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb2.txt'
+into table tb2;
+drop table if exists tb3 ;
+create table tb3 (
+f118 char not null DEFAULT 'a',
+f119 char binary not null DEFAULT b'101',
+f120 char ascii not null DEFAULT b'101',
+f121 tinytext,
+f122 text,
+f123 mediumtext,
+f124 longtext,
+f125 tinyblob,
+f126 blob,
+f127 mediumblob,
+f128 longblob,
+f129 binary not null DEFAULT b'101',
+f130 tinyint not null DEFAULT 99,
+f131 tinyint unsigned not null DEFAULT 99,
+f132 tinyint zerofill not null DEFAULT 99,
+f133 tinyint unsigned zerofill not null DEFAULT 99,
+f134 smallint not null DEFAULT 999,
+f135 smallint unsigned not null DEFAULT 999,
+f136 smallint zerofill not null DEFAULT 999,
+f137 smallint unsigned zerofill not null DEFAULT 999,
+f138 mediumint not null DEFAULT 9999,
+f139 mediumint unsigned not null DEFAULT 9999,
+f140 mediumint zerofill not null DEFAULT 9999,
+f141 mediumint unsigned zerofill not null DEFAULT 9999,
+f142 int not null DEFAULT 99999,
+f143 int unsigned not null DEFAULT 99999,
+f144 int zerofill not null DEFAULT 99999,
+f145 int unsigned zerofill not null DEFAULT 99999,
+f146 bigint not null DEFAULT 999999,
+f147 bigint unsigned not null DEFAULT 999999,
+f148 bigint zerofill not null DEFAULT 999999,
+f149 bigint unsigned zerofill not null DEFAULT 999999,
+f150 decimal not null DEFAULT 999.999,
+f151 decimal unsigned not null DEFAULT 999.17,
+f152 decimal zerofill not null DEFAULT 999.999,
+f153 decimal unsigned zerofill,
+f154 decimal (0),
+f155 decimal (64),
+f156 decimal (0) unsigned,
+f157 decimal (64) unsigned,
+f158 decimal (0) zerofill,
+f159 decimal (64) zerofill,
+f160 decimal (0) unsigned zerofill,
+f161 decimal (64) unsigned zerofill,
+f162 decimal (0,0),
+f163 decimal (63,30),
+f164 decimal (0,0) unsigned,
+f165 decimal (63,30) unsigned,
+f166 decimal (0,0) zerofill,
+f167 decimal (63,30) zerofill,
+f168 decimal (0,0) unsigned zerofill,
+f169 decimal (63,30) unsigned zerofill,
+f170 numeric,
+f171 numeric unsigned,
+f172 numeric zerofill,
+f173 numeric unsigned zerofill,
+f174 numeric (0),
+f175 numeric (64)
+) Engine = myisam;
+Warnings:
+Note 1265 Data truncated for column 'f150' at row 1
+Note 1265 Data truncated for column 'f151' at row 1
+Note 1265 Data truncated for column 'f152' at row 1
+load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb3.txt'
+into table tb3;
+drop table if exists tb4 ;
+create table tb4 (
+f176 numeric (0) unsigned not null DEFAULT 9,
+f177 numeric (64) unsigned not null DEFAULT 9,
+f178 numeric (0) zerofill not null DEFAULT 9,
+f179 numeric (64) zerofill not null DEFAULT 9,
+f180 numeric (0) unsigned zerofill not null DEFAULT 9,
+f181 numeric (64) unsigned zerofill not null DEFAULT 9,
+f182 numeric (0,0) not null DEFAULT 9,
+f183 numeric (63,30) not null DEFAULT 9,
+f184 numeric (0,0) unsigned not null DEFAULT 9,
+f185 numeric (63,30) unsigned not null DEFAULT 9,
+f186 numeric (0,0) zerofill not null DEFAULT 9,
+f187 numeric (63,30) zerofill not null DEFAULT 9,
+f188 numeric (0,0) unsigned zerofill not null DEFAULT 9,
+f189 numeric (63,30) unsigned zerofill not null DEFAULT 9,
+f190 real not null DEFAULT 88.8,
+f191 real unsigned not null DEFAULT 88.8,
+f192 real zerofill not null DEFAULT 88.8,
+f193 real unsigned zerofill not null DEFAULT 88.8,
+f194 double not null DEFAULT 55.5,
+f195 double unsigned not null DEFAULT 55.5,
+f196 double zerofill not null DEFAULT 55.5,
+f197 double unsigned zerofill not null DEFAULT 55.5,
+f198 float,
+f199 float unsigned,
+f200 float zerofill,
+f201 float unsigned zerofill,
+f202 float(0),
+f203 float(23),
+f204 float(0) unsigned,
+f205 float(23) unsigned,
+f206 float(0) zerofill,
+f207 float(23) zerofill,
+f208 float(0) unsigned zerofill,
+f209 float(23) unsigned zerofill,
+f210 float(24),
+f211 float(53),
+f212 float(24) unsigned,
+f213 float(53) unsigned,
+f214 float(24) zerofill,
+f215 float(53) zerofill,
+f216 float(24) unsigned zerofill,
+f217 float(53) unsigned zerofill,
+f218 date,
+f219 time,
+f220 datetime,
+f221 timestamp,
+f222 year,
+f223 year(3),
+f224 year(4),
+f225 enum("1enum","2enum"),
+f226 set("1set","2set"),
+f227 VARBINARY(64),
+f228 VARBINARY(27),
+f229 VARBINARY(64),
+f230 VARBINARY(192),
+f231 VARBINARY(192),
+f232 VARBINARY(27),
+f233 VARBINARY(64),
+f234 VARBINARY(192),
+f235 char(255),
+f236 char(60) ascii,
+f237 char(255) binary,
+f238 varchar(0) binary,
+f239 varbinary(1000),
+f240 varchar(120),
+f241 char(100),
+f242 bit(30)
+) engine = myisam;
+load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb4.txt'
+into table tb4;
+USE test1;
+drop table if exists tb2 ;
+create table tb2 (
+f59 numeric (0) unsigned,
+f60 numeric (64) unsigned,
+f61 numeric (0) zerofill,
+f62 numeric (64) zerofill,
+f63 numeric (0) unsigned zerofill,
+f64 numeric (64) unsigned zerofill,
+f65 numeric (0,0),
+f66 numeric (63,30),
+f67 numeric (0,0) unsigned,
+f68 numeric (63,30) unsigned,
+f69 numeric (0,0) zerofill,
+f70 numeric (63,30) zerofill,
+f71 numeric (0,0) unsigned zerofill,
+f72 numeric (63,30) unsigned zerofill,
+f73 real,
+f74 real unsigned,
+f75 real zerofill,
+f76 real unsigned zerofill,
+f77 double default 7.7,
+f78 double unsigned default 7.7,
+f79 double zerofill default 7.7,
+f80 double unsigned zerofill default 8.8,
+f81 float not null default 8.8,
+f82 float unsigned not null default 8.8,
+f83 float zerofill not null default 8.8,
+f84 float unsigned zerofill not null default 8.8,
+f85 float(0) not null default 8.8,
+f86 float(23) not null default 8.8,
+f87 float(0) unsigned not null default 8.8,
+f88 float(23) unsigned not null default 8.8,
+f89 float(0) zerofill not null default 8.8,
+f90 float(23) zerofill not null default 8.8,
+f91 float(0) unsigned zerofill not null default 8.8,
+f92 float(23) unsigned zerofill not null default 8.8,
+f93 float(24) not null default 8.8,
+f94 float(53) not null default 8.8,
+f95 float(24) unsigned not null default 8.8,
+f96 float(53) unsigned not null default 8.8,
+f97 float(24) zerofill not null default 8.8,
+f98 float(53) zerofill not null default 8.8,
+f99 float(24) unsigned zerofill not null default 8.8,
+f100 float(53) unsigned zerofill not null default 8.8,
+f101 date not null default '2000-01-01',
+f102 time not null default 20,
+f103 datetime not null default '2/2/2',
+f104 timestamp not null default 20001231235959,
+f105 year not null default 2000,
+f106 year(3) not null default 2000,
+f107 year(4) not null default 2000,
+f108 enum("1enum","2enum") not null default "1enum",
+f109 set("1set","2set") not null default "1set",
+f110 VARBINARY(64) null,
+f111 VARBINARY(27) null ,
+f112 VARBINARY(64) null ,
+f113 VARBINARY(192) null ,
+f114 VARBINARY(192) ,
+f115 VARBINARY(27) null ,
+f116 VARBINARY(64) null,
+f117 VARBINARY(192) null
+) engine = myisam;
+load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb2.txt'
+into table tb2;
+USE test;
+USE test;
+DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
+CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
+ENGINE = MyISAM;
+CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
+ENGINE = MyISAM;
+CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
+ENGINE = MyISAM;
+CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
+ENGINE = MyISAM;
+CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
+ENGINE = MyISAM;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t1;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t2;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t4;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t10;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t11;
+drop TABLE if exists t3;
+CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MyISAM;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t3.txt' INTO TABLE t3;
+drop database if exists test4;
+CREATE database test4;
+use test4;
+CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
+ENGINE = MyISAM;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t6;
+use test;
+drop TABLE if exists t7, t8;
+CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM;
+CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t7;
+Warnings:
+Warning 1265 Data truncated for column 'f3' at row 1
+Warning 1265 Data truncated for column 'f3' at row 2
+Warning 1265 Data truncated for column 'f3' at row 3
+Warning 1265 Data truncated for column 'f3' at row 4
+Warning 1265 Data truncated for column 'f3' at row 5
+Warning 1265 Data truncated for column 'f3' at row 6
+Warning 1265 Data truncated for column 'f3' at row 7
+Warning 1265 Data truncated for column 'f3' at row 8
+Warning 1265 Data truncated for column 'f3' at row 9
+Warning 1265 Data truncated for column 'f3' at row 10
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t8;
+Warnings:
+Warning 1265 Data truncated for column 'f3' at row 1
+Warning 1265 Data truncated for column 'f3' at row 2
+Warning 1265 Data truncated for column 'f3' at row 3
+Warning 1265 Data truncated for column 'f3' at row 4
+Warning 1265 Data truncated for column 'f3' at row 5
+Warning 1265 Data truncated for column 'f3' at row 6
+Warning 1265 Data truncated for column 'f3' at row 7
+Warning 1265 Data truncated for column 'f3' at row 8
+Warning 1265 Data truncated for column 'f3' at row 9
+Warning 1265 Data truncated for column 'f3' at row 10
+drop TABLE if exists t9;
+CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MyISAM;
+LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t9.txt' INTO TABLE t9;
+SELECT * FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL test t1 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t1 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t1 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t1 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t1 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t1 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t10 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t10 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t10 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t10 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t10 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t10 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t11 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t11 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t11 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t11 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t11 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t11 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t2 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t2 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t2 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t2 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t2 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t2 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t3 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t3 f2 2 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t3 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t4 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t4 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t4 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t4 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t4 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t4 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t7 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t7 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t7 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t7 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t8 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test t8 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t8 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test t8 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t9 f1 1 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test t9 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test t9 f3 3 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test tb1 f1 1 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+NULL test tb1 f10 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob
+NULL test tb1 f11 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+NULL test tb1 f12 12 NULL YES binary 1 1 NULL NULL NULL NULL binary(1)
+NULL test tb1 f13 13 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(4)
+NULL test tb1 f14 14 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
+NULL test tb1 f15 15 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+NULL test tb1 f16 16 NULL YES tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+NULL test tb1 f17 17 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(6)
+NULL test tb1 f18 18 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+NULL test tb1 f19 19 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+NULL test tb1 f2 2 NULL YES char 1 1 NULL NULL latin1 latin1_bin char(1)
+NULL test tb1 f20 20 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+NULL test tb1 f21 21 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(9)
+NULL test tb1 f22 22 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned
+NULL test tb1 f23 23 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+NULL test tb1 f24 24 NULL YES mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+NULL test tb1 f25 25 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test tb1 f26 26 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned
+NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+NULL test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+NULL test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20)
+NULL test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+NULL test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+NULL test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+NULL test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+NULL test tb1 f33 33 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb1 f34 34 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb1 f35 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f36 36 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f37 37 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb1 f38 38 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+NULL test tb1 f39 39 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb1 f4 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext
+NULL test tb1 f40 40 10 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+NULL test tb1 f41 41 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f42 42 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb1 f43 43 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f44 44 0000000000000000000000000000000000000000000000000000000000000010 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb1 f45 45 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb1 f46 46 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+NULL test tb1 f47 47 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb1 f48 48 9.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+NULL test tb1 f49 49 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f5 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text
+NULL test tb1 f50 50 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb1 f51 51 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f52 52 000000000000000000000000000000009.900000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb1 f53 53 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb1 f54 54 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb1 f55 55 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f56 56 0000000099 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f57 57 99 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb1 f58 58 99 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+NULL test tb1 f6 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext
+NULL test tb1 f7 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext
+NULL test tb1 f8 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob
+NULL test tb1 f9 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob
+NULL test tb2 f100 42 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date
+NULL test tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time
+NULL test tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+NULL test tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL test tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+NULL test tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+NULL test tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+NULL test tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
+NULL test tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
+NULL test tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+NULL test tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+NULL test tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+NULL test tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+NULL test tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+NULL test tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double
+NULL test tb2 f74 16 NULL YES double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test tb2 f75 17 NULL YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb2 f76 18 NULL YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double
+NULL test tb2 f78 20 7.7 YES double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test tb2 f79 21 00000000000000000007.7 YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb2 f80 22 00000000000000000008.8 YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test tb2 f82 24 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb2 f83 25 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f84 26 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test tb2 f87 29 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb2 f88 30 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb2 f89 31 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f90 32 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f91 33 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f92 34 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double
+NULL test tb2 f95 37 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb2 f96 38 8.8 NO double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test tb2 f97 39 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb2 f98 40 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb2 f99 41 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb3 f118 1 a NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+NULL test tb3 f119 2  NO char 1 1 NULL NULL latin1 latin1_bin char(1)
+NULL test tb3 f120 3  NO char 1 1 NULL NULL latin1 latin1_swedish_ci char(1)
+NULL test tb3 f121 4 NULL YES tinytext 255 255 NULL NULL latin1 latin1_swedish_ci tinytext
+NULL test tb3 f122 5 NULL YES text 65535 65535 NULL NULL latin1 latin1_swedish_ci text
+NULL test tb3 f123 6 NULL YES mediumtext 16777215 16777215 NULL NULL latin1 latin1_swedish_ci mediumtext
+NULL test tb3 f124 7 NULL YES longtext 4294967295 4294967295 NULL NULL latin1 latin1_swedish_ci longtext
+NULL test tb3 f125 8 NULL YES tinyblob 255 255 NULL NULL NULL NULL tinyblob
+NULL test tb3 f126 9 NULL YES blob 65535 65535 NULL NULL NULL NULL blob
+NULL test tb3 f127 10 NULL YES mediumblob 16777215 16777215 NULL NULL NULL NULL mediumblob
+NULL test tb3 f128 11 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+NULL test tb3 f129 12  NO binary 1 1 NULL NULL NULL NULL binary(1)
+NULL test tb3 f130 13 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(4)
+NULL test tb3 f131 14 99 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
+NULL test tb3 f132 15 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+NULL test tb3 f133 16 099 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned zerofill
+NULL test tb3 f134 17 999 NO smallint NULL NULL 5 0 NULL NULL smallint(6)
+NULL test tb3 f135 18 999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+NULL test tb3 f136 19 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+NULL test tb3 f137 20 00999 NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned zerofill
+NULL test tb3 f138 21 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(9)
+NULL test tb3 f139 22 9999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned
+NULL test tb3 f140 23 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+NULL test tb3 f141 24 00009999 NO mediumint NULL NULL 7 0 NULL NULL mediumint(8) unsigned zerofill
+NULL test tb3 f142 25 99999 NO int NULL NULL 10 0 NULL NULL int(11)
+NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+NULL test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+NULL test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill
+NULL test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20)
+NULL test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned
+NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill
+NULL test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f153 36 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f154 37 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb3 f155 38 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+NULL test tb3 f156 39 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb3 f157 40 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+NULL test tb3 f158 41 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f159 42 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb3 f160 43 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f161 44 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb3 f162 45 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb3 f163 46 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+NULL test tb3 f164 47 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb3 f165 48 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+NULL test tb3 f166 49 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f167 50 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb3 f168 51 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f169 52 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb3 f170 53 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb3 f171 54 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb3 f172 55 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f173 56 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f174 57 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb3 f175 58 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0)
+NULL test tb4 f176 1 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb4 f177 2 9 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+NULL test tb4 f178 3 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f179 4 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb4 f180 5 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f181 6 0000000000000000000000000000000000000000000000000000000000000009 NO decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb4 f182 7 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test tb4 f183 8 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+NULL test tb4 f184 9 9 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test tb4 f185 10 9.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+NULL test tb4 f186 11 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f187 12 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb4 f188 13 0000000009 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f189 14 000000000000000000000000000000009.000000000000000000000000000000 NO decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb4 f190 15 88.8 NO double NULL NULL 22 NULL NULL NULL double
+NULL test tb4 f191 16 88.8 NO double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test tb4 f192 17 00000000000000000088.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb4 f193 18 00000000000000000088.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb4 f194 19 55.5 NO double NULL NULL 22 NULL NULL NULL double
+NULL test tb4 f195 20 55.5 NO double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test tb4 f196 21 00000000000000000055.5 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb4 f197 22 00000000000000000055.5 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb4 f198 23 NULL YES float NULL NULL 12 NULL NULL NULL float
+NULL test tb4 f199 24 NULL YES float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb4 f200 25 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f201 26 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f202 27 NULL YES float NULL NULL 12 NULL NULL NULL float
+NULL test tb4 f203 28 NULL YES float NULL NULL 12 NULL NULL NULL float
+NULL test tb4 f204 29 NULL YES float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb4 f205 30 NULL YES float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb4 f206 31 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f207 32 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f208 33 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f209 34 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f210 35 NULL YES float NULL NULL 12 NULL NULL NULL float
+NULL test tb4 f211 36 NULL YES double NULL NULL 22 NULL NULL NULL double
+NULL test tb4 f212 37 NULL YES float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test tb4 f213 38 NULL YES double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test tb4 f214 39 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f215 40 NULL YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb4 f216 41 NULL YES float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test tb4 f217 42 NULL YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test tb4 f218 43 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test tb4 f219 44 NULL YES time NULL NULL NULL NULL NULL NULL time
+NULL test tb4 f220 45 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime
+NULL test tb4 f221 46 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL test tb4 f222 47 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
+NULL test tb4 f223 48 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
+NULL test tb4 f224 49 NULL YES year NULL NULL NULL NULL NULL NULL year(4)
+NULL test tb4 f225 50 NULL YES enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
+NULL test tb4 f226 51 NULL YES set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
+NULL test tb4 f227 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test tb4 f228 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+NULL test tb4 f229 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test tb4 f230 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test tb4 f231 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test tb4 f232 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+NULL test tb4 f233 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test tb4 f234 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test tb4 f235 60 NULL YES char 255 255 NULL NULL latin1 latin1_swedish_ci char(255)
+NULL test tb4 f236 61 NULL YES char 60 60 NULL NULL latin1 latin1_swedish_ci char(60)
+NULL test tb4 f237 62 NULL YES char 255 255 NULL NULL latin1 latin1_bin char(255)
+NULL test tb4 f238 63 NULL YES varchar 0 0 NULL NULL latin1 latin1_bin varchar(0)
+NULL test tb4 f239 64 NULL YES varbinary 1000 1000 NULL NULL NULL NULL varbinary(1000)
+NULL test tb4 f240 65 NULL YES varchar 120 120 NULL NULL latin1 latin1_swedish_ci varchar(120)
+NULL test tb4 f241 66 NULL YES char 100 100 NULL NULL latin1 latin1_swedish_ci char(100)
+NULL test tb4 f242 67 NULL YES bit NULL NULL 30 NULL NULL NULL bit(30)
+NULL test1 tb2 f100 42 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f101 43 2000-01-01 NO date NULL NULL NULL NULL NULL NULL date
+NULL test1 tb2 f102 44 00:00:20 NO time NULL NULL NULL NULL NULL NULL time
+NULL test1 tb2 f103 45 0002-02-02 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime
+NULL test1 tb2 f104 46 2000-12-31 23:59:59 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL test1 tb2 f105 47 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+NULL test1 tb2 f106 48 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+NULL test1 tb2 f107 49 2000 NO year NULL NULL NULL NULL NULL NULL year(4)
+NULL test1 tb2 f108 50 1enum NO enum 5 5 NULL NULL latin1 latin1_swedish_ci enum('1enum','2enum')
+NULL test1 tb2 f109 51 1set NO set 9 9 NULL NULL latin1 latin1_swedish_ci set('1set','2set')
+NULL test1 tb2 f110 52 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test1 tb2 f111 53 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+NULL test1 tb2 f112 54 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test1 tb2 f113 55 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test1 tb2 f114 56 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test1 tb2 f115 57 NULL YES varbinary 27 27 NULL NULL NULL NULL varbinary(27)
+NULL test1 tb2 f116 58 NULL YES varbinary 64 64 NULL NULL NULL NULL varbinary(64)
+NULL test1 tb2 f117 59 NULL YES varbinary 192 192 NULL NULL NULL NULL varbinary(192)
+NULL test1 tb2 f59 1 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test1 tb2 f60 2 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned
+NULL test1 tb2 f61 3 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f62 4 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test1 tb2 f63 5 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f64 6 NULL YES decimal NULL NULL 64 0 NULL NULL decimal(64,0) unsigned zerofill
+NULL test1 tb2 f65 7 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0)
+NULL test1 tb2 f66 8 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30)
+NULL test1 tb2 f67 9 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned
+NULL test1 tb2 f68 10 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned
+NULL test1 tb2 f69 11 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f70 12 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test1 tb2 f71 13 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f72 14 NULL YES decimal NULL NULL 63 30 NULL NULL decimal(63,30) unsigned zerofill
+NULL test1 tb2 f73 15 NULL YES double NULL NULL 22 NULL NULL NULL double
+NULL test1 tb2 f74 16 NULL YES double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test1 tb2 f75 17 NULL YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f76 18 NULL YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f77 19 7.7 YES double NULL NULL 22 NULL NULL NULL double
+NULL test1 tb2 f78 20 7.7 YES double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test1 tb2 f79 21 00000000000000000007.7 YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f80 22 00000000000000000008.8 YES double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f81 23 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test1 tb2 f82 24 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test1 tb2 f83 25 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f84 26 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f85 27 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test1 tb2 f86 28 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test1 tb2 f87 29 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test1 tb2 f88 30 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test1 tb2 f89 31 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f90 32 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f91 33 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f92 34 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f93 35 8.8 NO float NULL NULL 12 NULL NULL NULL float
+NULL test1 tb2 f94 36 8.8 NO double NULL NULL 22 NULL NULL NULL double
+NULL test1 tb2 f95 37 8.8 NO float unsigned NULL NULL 12 NULL NULL NULL float unsigned
+NULL test1 tb2 f96 38 8.8 NO double unsigned NULL NULL 22 NULL NULL NULL double unsigned
+NULL test1 tb2 f97 39 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f98 40 00000000000000000008.8 NO double unsigned zerofill NULL NULL 22 NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f99 41 0000000008.8 NO float unsigned zerofill NULL NULL 12 NULL NULL NULL float unsigned zerofill
+NULL test4 t6 f1 1 NULL YES char 20 20 NULL NULL latin1 latin1_swedish_ci char(20)
+NULL test4 t6 f2 2 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test4 t6 f3 3 NULL YES date NULL NULL NULL NULL NULL NULL date
+NULL test4 t6 f4 4 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+NULL test4 t6 f5 5 NULL YES char 25 25 NULL NULL latin1 latin1_swedish_ci char(25)
+NULL test4 t6 f6 6 NULL YES int NULL NULL 10 0 NULL NULL int(11)
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+1.0000 binary NULL NULL
+1.0000 blob NULL NULL
+1.0000 longblob NULL NULL
+1.0000 mediumblob NULL NULL
+1.0000 tinyblob NULL NULL
+1.0000 varbinary NULL NULL
+1.0000 char latin1 latin1_bin
+1.0000 char latin1 latin1_swedish_ci
+1.0000 enum latin1 latin1_swedish_ci
+1.0000 longtext latin1 latin1_swedish_ci
+1.0000 mediumtext latin1 latin1_swedish_ci
+1.0000 set latin1 latin1_swedish_ci
+1.0000 text latin1 latin1_swedish_ci
+1.0000 tinytext latin1 latin1_swedish_ci
+1.0000 varchar latin1 latin1_swedish_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL bigint NULL NULL
+NULL bit NULL NULL
+NULL date NULL NULL
+NULL datetime NULL NULL
+NULL decimal NULL NULL
+NULL double NULL NULL
+NULL double unsigned NULL NULL
+NULL double unsigned zerofill NULL NULL
+NULL float NULL NULL
+NULL float unsigned NULL NULL
+NULL float unsigned zerofill NULL NULL
+NULL int NULL NULL
+NULL mediumint NULL NULL
+NULL smallint NULL NULL
+NULL time NULL NULL
+NULL timestamp NULL NULL
+NULL tinyint NULL NULL
+NULL year NULL NULL
+NULL varchar latin1 latin1_bin
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema LIKE 'test%'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+1.0000 test t1 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t1 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t1 f3 date NULL NULL NULL NULL date
+NULL test t1 f4 int NULL NULL NULL NULL int(11)
+1.0000 test t1 f5 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t1 f6 int NULL NULL NULL NULL int(11)
+1.0000 test t10 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t10 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t10 f3 date NULL NULL NULL NULL date
+NULL test t10 f4 int NULL NULL NULL NULL int(11)
+1.0000 test t10 f5 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t10 f6 int NULL NULL NULL NULL int(11)
+1.0000 test t11 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t11 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t11 f3 date NULL NULL NULL NULL date
+NULL test t11 f4 int NULL NULL NULL NULL int(11)
+1.0000 test t11 f5 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t11 f6 int NULL NULL NULL NULL int(11)
+1.0000 test t2 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t2 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t2 f3 date NULL NULL NULL NULL date
+NULL test t2 f4 int NULL NULL NULL NULL int(11)
+1.0000 test t2 f5 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t2 f6 int NULL NULL NULL NULL int(11)
+1.0000 test t3 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t3 f2 char 20 20 latin1 latin1_swedish_ci char(20)
+NULL test t3 f3 int NULL NULL NULL NULL int(11)
+1.0000 test t4 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t4 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t4 f3 date NULL NULL NULL NULL date
+NULL test t4 f4 int NULL NULL NULL NULL int(11)
+1.0000 test t4 f5 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t4 f6 int NULL NULL NULL NULL int(11)
+1.0000 test t7 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t7 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t7 f3 date NULL NULL NULL NULL date
+NULL test t7 f4 int NULL NULL NULL NULL int(11)
+1.0000 test t8 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test t8 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t8 f3 date NULL NULL NULL NULL date
+NULL test t8 f4 int NULL NULL NULL NULL int(11)
+NULL test t9 f1 int NULL NULL NULL NULL int(11)
+1.0000 test t9 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test t9 f3 int NULL NULL NULL NULL int(11)
+1.0000 test tb1 f1 char 1 1 latin1 latin1_swedish_ci char(1)
+1.0000 test tb1 f2 char 1 1 latin1 latin1_bin char(1)
+1.0000 test tb1 f3 char 1 1 latin1 latin1_swedish_ci char(1)
+1.0000 test tb1 f4 tinytext 255 255 latin1 latin1_swedish_ci tinytext
+1.0000 test tb1 f5 text 65535 65535 latin1 latin1_swedish_ci text
+1.0000 test tb1 f6 mediumtext 16777215 16777215 latin1 latin1_swedish_ci mediumtext
+1.0000 test tb1 f7 longtext 4294967295 4294967295 latin1 latin1_swedish_ci longtext
+1.0000 test tb1 f8 tinyblob 255 255 NULL NULL tinyblob
+1.0000 test tb1 f9 blob 65535 65535 NULL NULL blob
+1.0000 test tb1 f10 mediumblob 16777215 16777215 NULL NULL mediumblob
+1.0000 test tb1 f11 longblob 4294967295 4294967295 NULL NULL longblob
+1.0000 test tb1 f12 binary 1 1 NULL NULL binary(1)
+NULL test tb1 f13 tinyint NULL NULL NULL NULL tinyint(4)
+NULL test tb1 f14 tinyint NULL NULL NULL NULL tinyint(3) unsigned
+NULL test tb1 f15 tinyint NULL NULL NULL NULL tinyint(3) unsigned zerofill
+NULL test tb1 f16 tinyint NULL NULL NULL NULL tinyint(3) unsigned zerofill
+NULL test tb1 f17 smallint NULL NULL NULL NULL smallint(6)
+NULL test tb1 f18 smallint NULL NULL NULL NULL smallint(5) unsigned
+NULL test tb1 f19 smallint NULL NULL NULL NULL smallint(5) unsigned zerofill
+NULL test tb1 f20 smallint NULL NULL NULL NULL smallint(5) unsigned zerofill
+NULL test tb1 f21 mediumint NULL NULL NULL NULL mediumint(9)
+NULL test tb1 f22 mediumint NULL NULL NULL NULL mediumint(8) unsigned
+NULL test tb1 f23 mediumint NULL NULL NULL NULL mediumint(8) unsigned zerofill
+NULL test tb1 f24 mediumint NULL NULL NULL NULL mediumint(8) unsigned zerofill
+NULL test tb1 f25 int NULL NULL NULL NULL int(11)
+NULL test tb1 f26 int NULL NULL NULL NULL int(10) unsigned
+NULL test tb1 f27 int NULL NULL NULL NULL int(10) unsigned zerofill
+NULL test tb1 f28 int NULL NULL NULL NULL int(10) unsigned zerofill
+NULL test tb1 f29 bigint NULL NULL NULL NULL bigint(20)
+NULL test tb1 f30 bigint NULL NULL NULL NULL bigint(20) unsigned
+NULL test tb1 f31 bigint NULL NULL NULL NULL bigint(20) unsigned zerofill
+NULL test tb1 f32 bigint NULL NULL NULL NULL bigint(20) unsigned zerofill
+NULL test tb1 f33 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb1 f34 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb1 f35 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f36 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f37 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb1 f38 decimal NULL NULL NULL NULL decimal(64,0)
+NULL test tb1 f39 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb1 f40 decimal NULL NULL NULL NULL decimal(64,0) unsigned
+NULL test tb1 f41 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f42 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb1 f43 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f44 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb1 f45 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb1 f46 decimal NULL NULL NULL NULL decimal(63,30)
+NULL test tb1 f47 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb1 f48 decimal NULL NULL NULL NULL decimal(63,30) unsigned
+NULL test tb1 f49 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f50 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb1 f51 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f52 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb1 f53 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb1 f54 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb1 f55 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f56 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb1 f57 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb1 f58 decimal NULL NULL NULL NULL decimal(64,0)
+NULL test tb2 f59 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb2 f60 decimal NULL NULL NULL NULL decimal(64,0) unsigned
+NULL test tb2 f61 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f62 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb2 f63 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f64 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb2 f65 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb2 f66 decimal NULL NULL NULL NULL decimal(63,30)
+NULL test tb2 f67 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb2 f68 decimal NULL NULL NULL NULL decimal(63,30) unsigned
+NULL test tb2 f69 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f70 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb2 f71 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb2 f72 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb2 f73 double NULL NULL NULL NULL double
+NULL test tb2 f74 double unsigned NULL NULL NULL NULL double unsigned
+NULL test tb2 f75 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb2 f76 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb2 f77 double NULL NULL NULL NULL double
+NULL test tb2 f78 double unsigned NULL NULL NULL NULL double unsigned
+NULL test tb2 f79 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb2 f80 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb2 f81 float NULL NULL NULL NULL float
+NULL test tb2 f82 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb2 f83 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f84 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f85 float NULL NULL NULL NULL float
+NULL test tb2 f86 float NULL NULL NULL NULL float
+NULL test tb2 f87 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb2 f88 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb2 f89 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f90 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f91 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f92 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f93 float NULL NULL NULL NULL float
+NULL test tb2 f94 double NULL NULL NULL NULL double
+NULL test tb2 f95 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb2 f96 double unsigned NULL NULL NULL NULL double unsigned
+NULL test tb2 f97 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f98 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb2 f99 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb2 f100 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb2 f101 date NULL NULL NULL NULL date
+NULL test tb2 f102 time NULL NULL NULL NULL time
+NULL test tb2 f103 datetime NULL NULL NULL NULL datetime
+NULL test tb2 f104 timestamp NULL NULL NULL NULL timestamp
+NULL test tb2 f105 year NULL NULL NULL NULL year(4)
+NULL test tb2 f106 year NULL NULL NULL NULL year(4)
+NULL test tb2 f107 year NULL NULL NULL NULL year(4)
+1.0000 test tb2 f108 enum 5 5 latin1 latin1_swedish_ci enum('1enum','2enum')
+1.0000 test tb2 f109 set 9 9 latin1 latin1_swedish_ci set('1set','2set')
+1.0000 test tb2 f110 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test tb2 f111 varbinary 27 27 NULL NULL varbinary(27)
+1.0000 test tb2 f112 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test tb2 f113 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test tb2 f114 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test tb2 f115 varbinary 27 27 NULL NULL varbinary(27)
+1.0000 test tb2 f116 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test tb2 f117 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test tb3 f118 char 1 1 latin1 latin1_swedish_ci char(1)
+1.0000 test tb3 f119 char 1 1 latin1 latin1_bin char(1)
+1.0000 test tb3 f120 char 1 1 latin1 latin1_swedish_ci char(1)
+1.0000 test tb3 f121 tinytext 255 255 latin1 latin1_swedish_ci tinytext
+1.0000 test tb3 f122 text 65535 65535 latin1 latin1_swedish_ci text
+1.0000 test tb3 f123 mediumtext 16777215 16777215 latin1 latin1_swedish_ci mediumtext
+1.0000 test tb3 f124 longtext 4294967295 4294967295 latin1 latin1_swedish_ci longtext
+1.0000 test tb3 f125 tinyblob 255 255 NULL NULL tinyblob
+1.0000 test tb3 f126 blob 65535 65535 NULL NULL blob
+1.0000 test tb3 f127 mediumblob 16777215 16777215 NULL NULL mediumblob
+1.0000 test tb3 f128 longblob 4294967295 4294967295 NULL NULL longblob
+1.0000 test tb3 f129 binary 1 1 NULL NULL binary(1)
+NULL test tb3 f130 tinyint NULL NULL NULL NULL tinyint(4)
+NULL test tb3 f131 tinyint NULL NULL NULL NULL tinyint(3) unsigned
+NULL test tb3 f132 tinyint NULL NULL NULL NULL tinyint(3) unsigned zerofill
+NULL test tb3 f133 tinyint NULL NULL NULL NULL tinyint(3) unsigned zerofill
+NULL test tb3 f134 smallint NULL NULL NULL NULL smallint(6)
+NULL test tb3 f135 smallint NULL NULL NULL NULL smallint(5) unsigned
+NULL test tb3 f136 smallint NULL NULL NULL NULL smallint(5) unsigned zerofill
+NULL test tb3 f137 smallint NULL NULL NULL NULL smallint(5) unsigned zerofill
+NULL test tb3 f138 mediumint NULL NULL NULL NULL mediumint(9)
+NULL test tb3 f139 mediumint NULL NULL NULL NULL mediumint(8) unsigned
+NULL test tb3 f140 mediumint NULL NULL NULL NULL mediumint(8) unsigned zerofill
+NULL test tb3 f141 mediumint NULL NULL NULL NULL mediumint(8) unsigned zerofill
+NULL test tb3 f142 int NULL NULL NULL NULL int(11)
+NULL test tb3 f143 int NULL NULL NULL NULL int(10) unsigned
+NULL test tb3 f144 int NULL NULL NULL NULL int(10) unsigned zerofill
+NULL test tb3 f145 int NULL NULL NULL NULL int(10) unsigned zerofill
+NULL test tb3 f146 bigint NULL NULL NULL NULL bigint(20)
+NULL test tb3 f147 bigint NULL NULL NULL NULL bigint(20) unsigned
+NULL test tb3 f148 bigint NULL NULL NULL NULL bigint(20) unsigned zerofill
+NULL test tb3 f149 bigint NULL NULL NULL NULL bigint(20) unsigned zerofill
+NULL test tb3 f150 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb3 f151 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb3 f152 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f153 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f154 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb3 f155 decimal NULL NULL NULL NULL decimal(64,0)
+NULL test tb3 f156 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb3 f157 decimal NULL NULL NULL NULL decimal(64,0) unsigned
+NULL test tb3 f158 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f159 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb3 f160 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f161 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb3 f162 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb3 f163 decimal NULL NULL NULL NULL decimal(63,30)
+NULL test tb3 f164 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb3 f165 decimal NULL NULL NULL NULL decimal(63,30) unsigned
+NULL test tb3 f166 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f167 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb3 f168 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f169 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb3 f170 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb3 f171 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb3 f172 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f173 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb3 f174 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb3 f175 decimal NULL NULL NULL NULL decimal(64,0)
+NULL test tb4 f176 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb4 f177 decimal NULL NULL NULL NULL decimal(64,0) unsigned
+NULL test tb4 f178 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f179 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb4 f180 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f181 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test tb4 f182 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test tb4 f183 decimal NULL NULL NULL NULL decimal(63,30)
+NULL test tb4 f184 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test tb4 f185 decimal NULL NULL NULL NULL decimal(63,30) unsigned
+NULL test tb4 f186 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f187 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb4 f188 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test tb4 f189 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test tb4 f190 double NULL NULL NULL NULL double
+NULL test tb4 f191 double unsigned NULL NULL NULL NULL double unsigned
+NULL test tb4 f192 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb4 f193 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb4 f194 double NULL NULL NULL NULL double
+NULL test tb4 f195 double unsigned NULL NULL NULL NULL double unsigned
+NULL test tb4 f196 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb4 f197 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb4 f198 float NULL NULL NULL NULL float
+NULL test tb4 f199 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb4 f200 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f201 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f202 float NULL NULL NULL NULL float
+NULL test tb4 f203 float NULL NULL NULL NULL float
+NULL test tb4 f204 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb4 f205 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb4 f206 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f207 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f208 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f209 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f210 float NULL NULL NULL NULL float
+NULL test tb4 f211 double NULL NULL NULL NULL double
+NULL test tb4 f212 float unsigned NULL NULL NULL NULL float unsigned
+NULL test tb4 f213 double unsigned NULL NULL NULL NULL double unsigned
+NULL test tb4 f214 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f215 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb4 f216 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test tb4 f217 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test tb4 f218 date NULL NULL NULL NULL date
+NULL test tb4 f219 time NULL NULL NULL NULL time
+NULL test tb4 f220 datetime NULL NULL NULL NULL datetime
+NULL test tb4 f221 timestamp NULL NULL NULL NULL timestamp
+NULL test tb4 f222 year NULL NULL NULL NULL year(4)
+NULL test tb4 f223 year NULL NULL NULL NULL year(4)
+NULL test tb4 f224 year NULL NULL NULL NULL year(4)
+1.0000 test tb4 f225 enum 5 5 latin1 latin1_swedish_ci enum('1enum','2enum')
+1.0000 test tb4 f226 set 9 9 latin1 latin1_swedish_ci set('1set','2set')
+1.0000 test tb4 f227 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test tb4 f228 varbinary 27 27 NULL NULL varbinary(27)
+1.0000 test tb4 f229 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test tb4 f230 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test tb4 f231 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test tb4 f232 varbinary 27 27 NULL NULL varbinary(27)
+1.0000 test tb4 f233 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test tb4 f234 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test tb4 f235 char 255 255 latin1 latin1_swedish_ci char(255)
+1.0000 test tb4 f236 char 60 60 latin1 latin1_swedish_ci char(60)
+1.0000 test tb4 f237 char 255 255 latin1 latin1_bin char(255)
+NULL test tb4 f238 varchar 0 0 latin1 latin1_bin varchar(0)
+1.0000 test tb4 f239 varbinary 1000 1000 NULL NULL varbinary(1000)
+1.0000 test tb4 f240 varchar 120 120 latin1 latin1_swedish_ci varchar(120)
+1.0000 test tb4 f241 char 100 100 latin1 latin1_swedish_ci char(100)
+NULL test tb4 f242 bit NULL NULL NULL NULL bit(30)
+NULL test1 tb2 f59 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test1 tb2 f60 decimal NULL NULL NULL NULL decimal(64,0) unsigned
+NULL test1 tb2 f61 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f62 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test1 tb2 f63 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f64 decimal NULL NULL NULL NULL decimal(64,0) unsigned zerofill
+NULL test1 tb2 f65 decimal NULL NULL NULL NULL decimal(10,0)
+NULL test1 tb2 f66 decimal NULL NULL NULL NULL decimal(63,30)
+NULL test1 tb2 f67 decimal NULL NULL NULL NULL decimal(10,0) unsigned
+NULL test1 tb2 f68 decimal NULL NULL NULL NULL decimal(63,30) unsigned
+NULL test1 tb2 f69 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f70 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test1 tb2 f71 decimal NULL NULL NULL NULL decimal(10,0) unsigned zerofill
+NULL test1 tb2 f72 decimal NULL NULL NULL NULL decimal(63,30) unsigned zerofill
+NULL test1 tb2 f73 double NULL NULL NULL NULL double
+NULL test1 tb2 f74 double unsigned NULL NULL NULL NULL double unsigned
+NULL test1 tb2 f75 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f76 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f77 double NULL NULL NULL NULL double
+NULL test1 tb2 f78 double unsigned NULL NULL NULL NULL double unsigned
+NULL test1 tb2 f79 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f80 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f81 float NULL NULL NULL NULL float
+NULL test1 tb2 f82 float unsigned NULL NULL NULL NULL float unsigned
+NULL test1 tb2 f83 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f84 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f85 float NULL NULL NULL NULL float
+NULL test1 tb2 f86 float NULL NULL NULL NULL float
+NULL test1 tb2 f87 float unsigned NULL NULL NULL NULL float unsigned
+NULL test1 tb2 f88 float unsigned NULL NULL NULL NULL float unsigned
+NULL test1 tb2 f89 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f90 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f91 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f92 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f93 float NULL NULL NULL NULL float
+NULL test1 tb2 f94 double NULL NULL NULL NULL double
+NULL test1 tb2 f95 float unsigned NULL NULL NULL NULL float unsigned
+NULL test1 tb2 f96 double unsigned NULL NULL NULL NULL double unsigned
+NULL test1 tb2 f97 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f98 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f99 float unsigned zerofill NULL NULL NULL NULL float unsigned zerofill
+NULL test1 tb2 f100 double unsigned zerofill NULL NULL NULL NULL double unsigned zerofill
+NULL test1 tb2 f101 date NULL NULL NULL NULL date
+NULL test1 tb2 f102 time NULL NULL NULL NULL time
+NULL test1 tb2 f103 datetime NULL NULL NULL NULL datetime
+NULL test1 tb2 f104 timestamp NULL NULL NULL NULL timestamp
+NULL test1 tb2 f105 year NULL NULL NULL NULL year(4)
+NULL test1 tb2 f106 year NULL NULL NULL NULL year(4)
+NULL test1 tb2 f107 year NULL NULL NULL NULL year(4)
+1.0000 test1 tb2 f108 enum 5 5 latin1 latin1_swedish_ci enum('1enum','2enum')
+1.0000 test1 tb2 f109 set 9 9 latin1 latin1_swedish_ci set('1set','2set')
+1.0000 test1 tb2 f110 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test1 tb2 f111 varbinary 27 27 NULL NULL varbinary(27)
+1.0000 test1 tb2 f112 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test1 tb2 f113 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test1 tb2 f114 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test1 tb2 f115 varbinary 27 27 NULL NULL varbinary(27)
+1.0000 test1 tb2 f116 varbinary 64 64 NULL NULL varbinary(64)
+1.0000 test1 tb2 f117 varbinary 192 192 NULL NULL varbinary(192)
+1.0000 test4 t6 f1 char 20 20 latin1 latin1_swedish_ci char(20)
+1.0000 test4 t6 f2 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test4 t6 f3 date NULL NULL NULL NULL date
+NULL test4 t6 f4 int NULL NULL NULL NULL int(11)
+1.0000 test4 t6 f5 char 25 25 latin1 latin1_swedish_ci char(25)
+NULL test4 t6 f6 int NULL NULL NULL NULL int(11)
+DROP DATABASE test1;
+DROP DATABASE test4;
+DROP TABLE test.t1;
+DROP TABLE test.t2;
+DROP TABLE test.t3;
+DROP TABLE test.t4;
+DROP TABLE test.t7;
+DROP TABLE test.t8;
+DROP TABLE test.t9;
+DROP TABLE test.t10;
+DROP TABLE test.t11;
+DROP TABLE test.tb1;
+DROP TABLE test.tb2;
+DROP TABLE test.tb3;
+DROP TABLE test.tb4;
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
new file mode 100644
index 00000000000..34a357d5811
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
@@ -0,0 +1,361 @@
+SELECT * FROM information_schema.columns
+WHERE table_schema = 'mysql'
+ORDER BY table_schema, table_name, column_name;
+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 CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
+NULL mysql columns_priv Column_name 5 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql columns_priv Column_priv 7 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
+NULL mysql columns_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql columns_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+NULL mysql columns_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql columns_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL mysql columns_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+NULL mysql db Alter_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Alter_routine_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Create_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Create_tmp_table_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Create_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql db Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Execute_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Grant_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+NULL mysql db Index_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Lock_tables_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db References_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Show_view_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql db User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+NULL mysql func dl 3 NO char 128 384 NULL NULL utf8 utf8_bin char(128)
+NULL mysql func name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(1)
+NULL mysql func type 4 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('function','aggregate')
+NULL mysql help_category help_category_id 1 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned PRI
+NULL mysql help_category name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
+NULL mysql help_category parent_category_id 3 NULL YES smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+NULL mysql help_category url 4 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128)
+NULL mysql help_keyword help_keyword_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql help_keyword name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
+NULL mysql help_relation help_keyword_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql help_relation help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql help_topic description 4 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
+NULL mysql help_topic example 5 NULL NO text 65535 65535 NULL NULL utf8 utf8_general_ci text
+NULL mysql help_topic help_category_id 3 NULL NO smallint NULL NULL 5 0 NULL NULL smallint(5) unsigned
+NULL mysql help_topic help_topic_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql help_topic name 2 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) UNI
+NULL mysql help_topic url 6 NULL NO char 128 384 NULL NULL utf8 utf8_general_ci char(128)
+NULL mysql host Alter_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Alter_routine_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Create_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Create_routine_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Create_tmp_table_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Create_view_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql host Delete_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Drop_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Execute_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Grant_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+NULL mysql host Index_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Insert_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Lock_tables_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host References_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob
+NULL mysql proc comment 16 NO char 64 192 NULL NULL utf8 utf8_bin char(64)
+NULL mysql proc created 13 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL mysql proc db 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql proc definer 12 NO char 77 231 NULL NULL utf8 utf8_bin char(77)
+NULL mysql proc is_deterministic 7 NO NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('YES','NO')
+NULL mysql proc language 5 SQL NO enum 3 9 NULL NULL utf8 utf8_general_ci enum('SQL')
+NULL mysql proc modified 14 0000-00-00 00:00:00 NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL mysql proc name 2 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+NULL mysql proc param_list 9 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+NULL mysql proc returns 10 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+NULL mysql proc security_type 8 DEFINER NO enum 7 21 NULL NULL utf8 utf8_general_ci enum('INVOKER','DEFINER')
+NULL mysql proc specific_name 4 NO char 64 192 NULL NULL utf8 utf8_general_ci char(64)
+NULL mysql proc sql_data_access 6 CONTAINS_SQL NO enum 17 51 NULL NULL utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
+NULL mysql proc sql_mode 15 NO set 431 1293 NULL NULL utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','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')
+NULL mysql proc type 3 NULL NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('FUNCTION','PROCEDURE') PRI
+NULL mysql procs_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql procs_priv Grantor 6 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
+NULL mysql procs_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+NULL mysql procs_priv Proc_priv 7 NO set 27 81 NULL NULL utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
+NULL mysql procs_priv Routine_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql procs_priv Routine_type 5 NULL NO enum 9 27 NULL NULL utf8 utf8_bin enum('FUNCTION','PROCEDURE') PRI
+NULL mysql procs_priv Timestamp 8 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL mysql procs_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+NULL mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
+NULL mysql tables_priv Db 2 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql tables_priv Grantor 5 NO char 77 231 NULL NULL utf8 utf8_bin char(77) MUL
+NULL mysql tables_priv Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+NULL mysql tables_priv Table_name 4 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI
+NULL mysql tables_priv Table_priv 7 NO set 90 270 NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view')
+NULL mysql tables_priv Timestamp 6 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL NULL NULL timestamp
+NULL mysql tables_priv User 3 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+NULL mysql time_zone Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI auto_increment
+NULL mysql time_zone Use_leap_seconds 2 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('Y','N')
+NULL mysql time_zone_leap_second Correction 2 NULL NO int NULL NULL 10 0 NULL NULL int(11)
+NULL mysql time_zone_leap_second Transition_time 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
+NULL mysql time_zone_name Name 1 NULL NO char 64 192 NULL NULL utf8 utf8_general_ci char(64) PRI
+NULL mysql time_zone_name Time_zone_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+NULL mysql time_zone_transition Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql time_zone_transition Transition_time 2 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) PRI
+NULL mysql time_zone_transition Transition_type_id 3 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned
+NULL mysql time_zone_transition_type Abbreviation 5 NO char 8 24 NULL NULL utf8 utf8_general_ci char(8)
+NULL mysql time_zone_transition_type Is_DST 4 0 NO tinyint NULL NULL 3 0 NULL NULL tinyint(3) unsigned
+NULL mysql time_zone_transition_type Offset 3 0 NO int NULL NULL 10 0 NULL NULL int(11)
+NULL mysql time_zone_transition_type Time_zone_id 1 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql time_zone_transition_type Transition_type_id 2 NULL NO int NULL NULL 10 0 NULL NULL int(10) unsigned PRI
+NULL mysql user Alter_priv 17 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Alter_routine_priv 28 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Create_priv 8 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Create_routine_priv 27 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Create_tmp_table_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Create_user_priv 29 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Create_view_priv 25 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Delete_priv 7 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Drop_priv 9 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Execute_priv 22 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user File_priv 13 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Grant_priv 14 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Host 1 NO char 60 180 NULL NULL utf8 utf8_bin char(60) PRI
+NULL mysql user Index_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Insert_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Lock_tables_priv 21 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user max_connections 36 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+NULL mysql user max_questions 34 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+NULL mysql user max_updates 35 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+NULL mysql user max_user_connections 37 0 NO int NULL NULL 10 0 NULL NULL int(11) unsigned
+NULL mysql user Password 3 NO char 41 41 NULL NULL latin1 latin1_bin char(41)
+NULL mysql user Process_priv 12 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user References_priv 15 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Reload_priv 10 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Repl_client_priv 24 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Repl_slave_priv 23 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Select_priv 4 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Show_db_priv 18 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Show_view_priv 26 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Shutdown_priv 11 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user ssl_cipher 31 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+NULL mysql user ssl_type 30 NO enum 9 27 NULL NULL utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
+NULL mysql user Super_priv 19 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user Update_priv 6 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y')
+NULL mysql user User 2 NO char 16 48 NULL NULL utf8 utf8_bin char(16) PRI
+NULL mysql user x509_issuer 32 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+NULL mysql user x509_subject 33 NULL NO blob 65535 65535 NULL NULL NULL NULL blob
+##########################################################################
+# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
+##########################################################################
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema = 'mysql'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH = 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+1.0000 blob NULL NULL
+1.0000 longblob NULL NULL
+1.0000 char latin1 latin1_bin
+1.0000 text utf8 utf8_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema = 'mysql'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH <> 1
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+3.0000 char utf8 utf8_bin
+3.0000 enum utf8 utf8_bin
+3.0000 char utf8 utf8_general_ci
+3.0000 enum utf8 utf8_general_ci
+3.0000 set utf8 utf8_general_ci
+SELECT DISTINCT
+CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+DATA_TYPE,
+CHARACTER_SET_NAME,
+COLLATION_NAME
+FROM information_schema.columns
+WHERE table_schema = 'mysql'
+AND CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH IS NULL
+ORDER BY CHARACTER_SET_NAME, COLLATION_NAME, COL_CML;
+COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
+NULL bigint NULL NULL
+NULL int NULL NULL
+NULL smallint NULL NULL
+NULL timestamp NULL NULL
+NULL tinyint NULL NULL
+--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
+--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
+SELECT CHARACTER_OCTET_LENGTH / CHARACTER_MAXIMUM_LENGTH AS COL_CML,
+TABLE_SCHEMA,
+TABLE_NAME,
+COLUMN_NAME,
+DATA_TYPE,
+CHARACTER_MAXIMUM_LENGTH,
+CHARACTER_OCTET_LENGTH,
+CHARACTER_SET_NAME,
+COLLATION_NAME,
+COLUMN_TYPE
+FROM information_schema.columns
+WHERE table_schema = 'mysql'
+ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
+COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
+3.0000 mysql columns_priv Host char 60 180 utf8 utf8_bin char(60)
+3.0000 mysql columns_priv Db char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql columns_priv User char 16 48 utf8 utf8_bin char(16)
+3.0000 mysql columns_priv Table_name char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql columns_priv Column_name char 64 192 utf8 utf8_bin char(64)
+NULL mysql columns_priv Timestamp timestamp NULL NULL NULL NULL timestamp
+3.0000 mysql columns_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
+3.0000 mysql db Host char 60 180 utf8 utf8_bin char(60)
+3.0000 mysql db Db char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql db User char 16 48 utf8 utf8_bin char(16)
+3.0000 mysql db Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql db Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql func name char 64 192 utf8 utf8_bin char(64)
+NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
+3.0000 mysql func dl char 128 384 utf8 utf8_bin char(128)
+3.0000 mysql func type enum 9 27 utf8 utf8_general_ci enum('function','aggregate')
+NULL mysql help_category help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
+3.0000 mysql help_category name char 64 192 utf8 utf8_general_ci char(64)
+NULL mysql help_category parent_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
+3.0000 mysql help_category url char 128 384 utf8 utf8_general_ci char(128)
+NULL mysql help_keyword help_keyword_id int NULL NULL NULL NULL int(10) unsigned
+3.0000 mysql help_keyword name char 64 192 utf8 utf8_general_ci char(64)
+NULL mysql help_relation help_topic_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql help_relation help_keyword_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql help_topic help_topic_id int NULL NULL NULL NULL int(10) unsigned
+3.0000 mysql help_topic name char 64 192 utf8 utf8_general_ci char(64)
+NULL mysql help_topic help_category_id smallint NULL NULL NULL NULL smallint(5) unsigned
+1.0000 mysql help_topic description text 65535 65535 utf8 utf8_general_ci text
+1.0000 mysql help_topic example text 65535 65535 utf8 utf8_general_ci text
+3.0000 mysql help_topic url char 128 384 utf8 utf8_general_ci char(128)
+3.0000 mysql host Host char 60 180 utf8 utf8_bin char(60)
+3.0000 mysql host Db char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql host Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql host Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql proc db char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql proc name char 64 192 utf8 utf8_general_ci char(64)
+3.0000 mysql proc type enum 9 27 utf8 utf8_general_ci enum('FUNCTION','PROCEDURE')
+3.0000 mysql proc specific_name char 64 192 utf8 utf8_general_ci char(64)
+3.0000 mysql proc language enum 3 9 utf8 utf8_general_ci enum('SQL')
+3.0000 mysql proc sql_data_access enum 17 51 utf8 utf8_general_ci enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA')
+3.0000 mysql proc is_deterministic enum 3 9 utf8 utf8_general_ci enum('YES','NO')
+3.0000 mysql proc security_type enum 7 21 utf8 utf8_general_ci enum('INVOKER','DEFINER')
+1.0000 mysql proc param_list blob 65535 65535 NULL NULL blob
+3.0000 mysql proc returns char 64 192 utf8 utf8_general_ci char(64)
+1.0000 mysql proc body longblob 4294967295 4294967295 NULL NULL longblob
+3.0000 mysql proc definer char 77 231 utf8 utf8_bin char(77)
+NULL mysql proc created timestamp NULL NULL NULL NULL timestamp
+NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
+3.0000 mysql proc sql_mode set 431 1293 utf8 utf8_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','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')
+3.0000 mysql proc comment char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql procs_priv Host char 60 180 utf8 utf8_bin char(60)
+3.0000 mysql procs_priv Db char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql procs_priv User char 16 48 utf8 utf8_bin char(16)
+3.0000 mysql procs_priv Routine_name char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql procs_priv Routine_type enum 9 27 utf8 utf8_bin enum('FUNCTION','PROCEDURE')
+3.0000 mysql procs_priv Grantor char 77 231 utf8 utf8_bin char(77)
+3.0000 mysql procs_priv Proc_priv set 27 81 utf8 utf8_general_ci set('Execute','Alter Routine','Grant')
+NULL mysql procs_priv Timestamp timestamp NULL NULL NULL NULL timestamp
+3.0000 mysql tables_priv Host char 60 180 utf8 utf8_bin char(60)
+3.0000 mysql tables_priv Db char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql tables_priv User char 16 48 utf8 utf8_bin char(16)
+3.0000 mysql tables_priv Table_name char 64 192 utf8 utf8_bin char(64)
+3.0000 mysql tables_priv Grantor char 77 231 utf8 utf8_bin char(77)
+NULL mysql tables_priv Timestamp timestamp NULL NULL NULL NULL timestamp
+3.0000 mysql tables_priv Table_priv set 90 270 utf8 utf8_general_ci set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view')
+3.0000 mysql tables_priv Column_priv set 31 93 utf8 utf8_general_ci set('Select','Insert','Update','References')
+NULL mysql time_zone Time_zone_id int NULL NULL NULL NULL int(10) unsigned
+3.0000 mysql time_zone Use_leap_seconds enum 1 3 utf8 utf8_general_ci enum('Y','N')
+NULL mysql time_zone_leap_second Transition_time bigint NULL NULL NULL NULL bigint(20)
+NULL mysql time_zone_leap_second Correction int NULL NULL NULL NULL int(11)
+3.0000 mysql time_zone_name Name char 64 192 utf8 utf8_general_ci char(64)
+NULL mysql time_zone_name Time_zone_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql time_zone_transition Time_zone_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql time_zone_transition Transition_time bigint NULL NULL NULL NULL bigint(20)
+NULL mysql time_zone_transition Transition_type_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql time_zone_transition_type Time_zone_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql time_zone_transition_type Transition_type_id int NULL NULL NULL NULL int(10) unsigned
+NULL mysql time_zone_transition_type Offset int NULL NULL NULL NULL int(11)
+NULL mysql time_zone_transition_type Is_DST tinyint NULL NULL NULL NULL tinyint(3) unsigned
+3.0000 mysql time_zone_transition_type Abbreviation char 8 24 utf8 utf8_general_ci char(8)
+3.0000 mysql user Host char 60 180 utf8 utf8_bin char(60)
+3.0000 mysql user User char 16 48 utf8 utf8_bin char(16)
+1.0000 mysql user Password char 41 41 latin1 latin1_bin char(41)
+3.0000 mysql user Select_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Insert_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Update_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Delete_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Drop_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Reload_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Shutdown_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Process_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user File_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Grant_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user References_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Index_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Alter_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Show_db_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Super_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_tmp_table_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Lock_tables_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Execute_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Repl_slave_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Repl_client_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Show_view_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Alter_routine_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user Create_user_priv enum 1 3 utf8 utf8_general_ci enum('N','Y')
+3.0000 mysql user ssl_type enum 9 27 utf8 utf8_general_ci enum('','ANY','X509','SPECIFIED')
+1.0000 mysql user ssl_cipher blob 65535 65535 NULL NULL blob
+1.0000 mysql user x509_issuer blob 65535 65535 NULL NULL blob
+1.0000 mysql user x509_subject blob 65535 65535 NULL NULL blob
+NULL mysql user max_questions int NULL NULL NULL NULL int(11) unsigned
+NULL mysql user max_updates int NULL NULL NULL NULL int(11) unsigned
+NULL mysql user max_connections int NULL NULL NULL NULL int(11) unsigned
+NULL mysql user max_user_connections int NULL NULL NULL NULL int(11) unsigned
diff --git a/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result
new file mode 100644
index 00000000000..17b5708643b
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result
@@ -0,0 +1,372 @@
+SHOW TABLES FROM information_schema LIKE 'KEY_COLUMN_USAGE';
+Tables_in_information_schema (KEY_COLUMN_USAGE)
+KEY_COLUMN_USAGE
+#######################################################################
+# 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.KEY_COLUMN_USAGE;
+CREATE PROCEDURE test.p1() SELECT * FROM information_schema.KEY_COLUMN_USAGE;
+CREATE FUNCTION test.f1() returns BIGINT
+BEGIN
+DECLARE counter BIGINT DEFAULT NULL;
+SELECT COUNT(*) INTO counter FROM information_schema.KEY_COLUMN_USAGE;
+RETURN counter;
+END//
+# Attention: The printing of the next result sets is disabled.
+SELECT * FROM information_schema.KEY_COLUMN_USAGE;
+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.7.1: INFORMATION_SCHEMA.KEY_COLUMN_USAGE layout
+#########################################################################
+DESCRIBE information_schema.KEY_COLUMN_USAGE;
+Field Type Null Key Default Extra
+CONSTRAINT_CATALOG varchar(512) YES NULL
+CONSTRAINT_SCHEMA varchar(64) NO
+CONSTRAINT_NAME varchar(64) NO
+TABLE_CATALOG varchar(512) YES NULL
+TABLE_SCHEMA varchar(64) NO
+TABLE_NAME varchar(64) NO
+COLUMN_NAME varchar(64) NO
+ORDINAL_POSITION bigint(10) NO 0
+POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL
+REFERENCED_TABLE_SCHEMA varchar(64) YES NULL
+REFERENCED_TABLE_NAME varchar(64) YES NULL
+REFERENCED_COLUMN_NAME varchar(64) YES NULL
+SHOW CREATE TABLE information_schema.KEY_COLUMN_USAGE;
+Table Create Table
+KEY_COLUMN_USAGE CREATE TEMPORARY TABLE `KEY_COLUMN_USAGE` (
+ `CONSTRAINT_CATALOG` varchar(512) default NULL,
+ `CONSTRAINT_SCHEMA` varchar(64) NOT NULL default '',
+ `CONSTRAINT_NAME` varchar(64) NOT NULL default '',
+ `TABLE_CATALOG` varchar(512) default NULL,
+ `TABLE_SCHEMA` varchar(64) NOT NULL default '',
+ `TABLE_NAME` varchar(64) NOT NULL default '',
+ `COLUMN_NAME` varchar(64) NOT NULL default '',
+ `ORDINAL_POSITION` bigint(10) NOT NULL default '0',
+ `POSITION_IN_UNIQUE_CONSTRAINT` bigint(10) default NULL,
+ `REFERENCED_TABLE_SCHEMA` varchar(64) default NULL,
+ `REFERENCED_TABLE_NAME` varchar(64) default NULL,
+ `REFERENCED_COLUMN_NAME` varchar(64) default NULL
+) ENGINE=MEMORY DEFAULT CHARSET=utf8
+SHOW COLUMNS FROM information_schema.KEY_COLUMN_USAGE;
+Field Type Null Key Default Extra
+CONSTRAINT_CATALOG varchar(512) YES NULL
+CONSTRAINT_SCHEMA varchar(64) NO
+CONSTRAINT_NAME varchar(64) NO
+TABLE_CATALOG varchar(512) YES NULL
+TABLE_SCHEMA varchar(64) NO
+TABLE_NAME varchar(64) NO
+COLUMN_NAME varchar(64) NO
+ORDINAL_POSITION bigint(10) NO 0
+POSITION_IN_UNIQUE_CONSTRAINT bigint(10) YES NULL
+REFERENCED_TABLE_SCHEMA varchar(64) YES NULL
+REFERENCED_TABLE_NAME varchar(64) YES NULL
+REFERENCED_COLUMN_NAME varchar(64) YES NULL
+SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
+table_schema, table_name, column_name
+FROM information_schema.key_column_usage
+WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
+constraint_catalog constraint_schema constraint_name table_catalog table_schema table_name column_name
+########################################################################################
+# Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE 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';
+USE db_datadict;
+CREATE TABLE t1_1
+(f1 INT NOT NULL, PRIMARY KEY(f1),
+f2 INT, INDEX f2_ind(f2))
+ENGINE = <engine_type>;
+GRANT SELECT ON t1_1 to 'testuser1'@'localhost';
+CREATE TABLE t1_2
+(f1 INT NOT NULL, PRIMARY KEY(f1),
+f2 INT, INDEX f2_ind(f2))
+ENGINE = <engine_type>;
+GRANT SELECT ON t1_2 to 'testuser2'@'localhost';
+SELECT * FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_%'
+ORDER BY constraint_catalog, constraint_schema, constraint_name,
+table_catalog, table_schema, table_name, ordinal_position;
+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
+NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
+NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
+# Establish connection testuser1 (user=testuser1)
+SELECT * FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_%'
+ORDER BY constraint_catalog, constraint_schema, constraint_name,
+table_catalog, table_schema, table_name, ordinal_position;
+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
+NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
+NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
+# Establish connection testuser2 (user=testuser2)
+SELECT * FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_%'
+ORDER BY constraint_catalog, constraint_schema, constraint_name,
+table_catalog, table_schema, table_name, ordinal_position;
+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
+NULL db_datadict PRIMARY NULL db_datadict t1_1 f1 1 NULL NULL NULL NULL
+NULL db_datadict PRIMARY NULL db_datadict t1_2 f1 1 NULL NULL NULL NULL
+# Switch to connection default and close connections testuser1, testuser2
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP TABLE t1_1;
+DROP TABLE t1_2;
+DROP DATABASE IF EXISTS db_datadict;
+########################################################################################
+# Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.KEY_COLUMN_USAGE modifications
+########################################################################################
+DROP DATABASE IF EXISTS db_datadict;
+DROP TABLE IF EXISTS test.t1_my_table;
+CREATE DATABASE db_datadict;
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_my_table%';
+table_name
+CREATE TABLE test.t1_my_table
+(f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
+ENGINE = <engine_type>;
+SELECT * FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_table';
+CONSTRAINT_CATALOG NULL
+CONSTRAINT_SCHEMA test
+CONSTRAINT_NAME PRIMARY
+TABLE_CATALOG NULL
+TABLE_SCHEMA test
+TABLE_NAME t1_my_table
+COLUMN_NAME f1
+ORDINAL_POSITION 1
+POSITION_IN_UNIQUE_CONSTRAINT NULL
+REFERENCED_TABLE_SCHEMA NULL
+REFERENCED_TABLE_NAME NULL
+REFERENCED_COLUMN_NAME NULL
+CONSTRAINT_CATALOG NULL
+CONSTRAINT_SCHEMA test
+CONSTRAINT_NAME PRIMARY
+TABLE_CATALOG NULL
+TABLE_SCHEMA test
+TABLE_NAME t1_my_table
+COLUMN_NAME f2
+ORDINAL_POSITION 2
+POSITION_IN_UNIQUE_CONSTRAINT NULL
+REFERENCED_TABLE_SCHEMA NULL
+REFERENCED_TABLE_NAME NULL
+REFERENCED_COLUMN_NAME NULL
+SELECT DISTINCT table_name FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_my_table%';
+table_name
+t1_my_table
+RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
+SELECT DISTINCT table_name FROM information_schema.key_column_usage
+WHERE table_name LIKE 't1_my_table%';
+table_name
+t1_my_tablex
+SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
+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 DISTINCT table_schema,table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+table_schema table_name
+db_datadict t1_my_tablex
+SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY table_name, column_name;
+table_name column_name
+t1_my_tablex f1
+t1_my_tablex f2
+ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
+SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY table_name, column_name;
+table_name column_name
+t1_my_tablex f2
+t1_my_tablex first_col
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+CREATE INDEX f2 ON db_datadict.t1_my_tablex(f2);
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+DROP INDEX f2 ON db_datadict.t1_my_tablex;
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE (f2);
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict f2 db_datadict t1_my_tablex f2 1
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+DROP INDEX f2 ON db_datadict.t1_my_tablex;
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f2);
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict my_idx db_datadict t1_my_tablex f2 1
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+DROP INDEX my_idx ON db_datadict.t1_my_tablex;
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict my_idx db_datadict t1_my_tablex f4 1
+db_datadict my_idx db_datadict t1_my_tablex first_col 2
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict my_idx db_datadict t1_my_tablex f4 1
+db_datadict my_idx db_datadict t1_my_tablex first_col 2
+db_datadict PRIMARY db_datadict t1_my_tablex first_col 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 2
+ALTER TABLE db_datadict.t1_my_tablex
+DROP COLUMN first_col;
+SELECT constraint_schema, constraint_name, table_schema,
+table_name, column_name, ordinal_position
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY constraint_schema, constraint_name, table_schema,
+table_name, ordinal_position;
+constraint_schema constraint_name table_schema table_name column_name ordinal_position
+db_datadict my_idx db_datadict t1_my_tablex f4 1
+db_datadict PRIMARY db_datadict t1_my_tablex f2 1
+SELECT table_name, column_name
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex'
+ORDER BY table_name, column_name;
+table_name column_name
+t1_my_tablex f2
+t1_my_tablex f4
+DROP TABLE db_datadict.t1_my_tablex;
+SELECT table_name, column_name
+FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+table_name column_name
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+table_name
+CREATE TABLE db_datadict.t1_my_tablex
+ENGINE = <engine_type> AS
+SELECT 1 AS f1;
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+table_name
+ALTER TABLE db_datadict.t1_my_tablex ADD PRIMARY KEY(f1);
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+table_name
+t1_my_tablex
+SELECT table_name FROM information_schema.key_column_usage
+WHERE table_name = 't1_my_tablex';
+table_name
+t1_my_tablex
+DROP DATABASE db_datadict;
+SELECT table_name FROM information_schema.key_column_usage
+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 db_datadict.t1;
+CREATE DATABASE db_datadict;
+CREATE TABLE db_datadict.t1 (f1 BIGINT)
+ENGINE = <engine_type>;
+INSERT INTO information_schema.key_column_usage
+(constraint_schema, constraint_name, table_name)
+VALUES ( 'mysql', 'primary', 'db');
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+INSERT INTO information_schema.key_column_usage
+SELECT * FROM information_schema.key_column_usage;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.key_column_usage
+SET table_name = 'db1' WHERE constraint_name = 'primary';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+TRUNCATE information_schema.key_column_usage;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CREATE INDEX i3 ON information_schema.key_column_usage(table_name);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.key_column_usage ADD f1 INT;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE information_schema.key_column_usage;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.key_column_usage
+RENAME db_datadict.key_column_usage;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.key_column_usage
+RENAME information_schema.xkey_column_usage;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE db_datadict.t1;
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_routines_embedded.result b/mysql-test/suite/funcs_1/r/is_routines_embedded.result
new file mode 100644
index 00000000000..2e5dbf84402
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result
@@ -0,0 +1,620 @@
+SHOW TABLES FROM information_schema LIKE 'ROUTINES';
+Tables_in_information_schema (ROUTINES)
+ROUTINES
+#######################################################################
+# 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.ROUTINES;
+CREATE PROCEDURE test.p1() SELECT * FROM information_schema.ROUTINES;
+CREATE FUNCTION test.f1() returns BIGINT
+BEGIN
+DECLARE counter BIGINT DEFAULT NULL;
+SELECT COUNT(*) INTO counter FROM information_schema.ROUTINES;
+RETURN counter;
+END//
+# Attention: The printing of the next result sets is disabled.
+SELECT * FROM information_schema.ROUTINES;
+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.8.1: INFORMATION_SCHEMA.ROUTINES layout
+#########################################################################
+DESCRIBE information_schema.ROUTINES;
+Field Type Null Key Default Extra
+SPECIFIC_NAME varchar(64) NO
+ROUTINE_CATALOG varchar(512) YES NULL
+ROUTINE_SCHEMA varchar(64) NO
+ROUTINE_NAME varchar(64) NO
+ROUTINE_TYPE varchar(9) NO
+DTD_IDENTIFIER varchar(64) YES NULL
+ROUTINE_BODY varchar(8) NO
+ROUTINE_DEFINITION longtext YES NULL
+EXTERNAL_NAME varchar(64) YES NULL
+EXTERNAL_LANGUAGE varchar(64) YES NULL
+PARAMETER_STYLE varchar(8) NO
+IS_DETERMINISTIC varchar(3) NO
+SQL_DATA_ACCESS varchar(64) NO
+SQL_PATH varchar(64) YES NULL
+SECURITY_TYPE varchar(7) NO
+CREATED datetime NO 0000-00-00 00:00:00
+LAST_ALTERED datetime NO 0000-00-00 00:00:00
+SQL_MODE longtext NO NULL
+ROUTINE_COMMENT varchar(64) NO
+DEFINER varchar(77) NO
+SHOW CREATE TABLE information_schema.ROUTINES;
+Table Create Table
+ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
+ `SPECIFIC_NAME` varchar(64) NOT NULL default '',
+ `ROUTINE_CATALOG` varchar(512) default NULL,
+ `ROUTINE_SCHEMA` varchar(64) NOT NULL default '',
+ `ROUTINE_NAME` varchar(64) NOT NULL default '',
+ `ROUTINE_TYPE` varchar(9) NOT NULL default '',
+ `DTD_IDENTIFIER` varchar(64) default NULL,
+ `ROUTINE_BODY` varchar(8) NOT NULL default '',
+ `ROUTINE_DEFINITION` longtext,
+ `EXTERNAL_NAME` varchar(64) default NULL,
+ `EXTERNAL_LANGUAGE` varchar(64) default NULL,
+ `PARAMETER_STYLE` varchar(8) NOT NULL default '',
+ `IS_DETERMINISTIC` varchar(3) NOT NULL default '',
+ `SQL_DATA_ACCESS` varchar(64) NOT NULL default '',
+ `SQL_PATH` varchar(64) default NULL,
+ `SECURITY_TYPE` varchar(7) NOT NULL default '',
+ `CREATED` datetime NOT NULL default '0000-00-00 00:00:00',
+ `LAST_ALTERED` datetime NOT NULL default '0000-00-00 00:00:00',
+ `SQL_MODE` longtext NOT NULL,
+ `ROUTINE_COMMENT` varchar(64) NOT NULL default '',
+ `DEFINER` varchar(77) NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8
+SHOW COLUMNS FROM information_schema.ROUTINES;
+Field Type Null Key Default Extra
+SPECIFIC_NAME varchar(64) NO
+ROUTINE_CATALOG varchar(512) YES NULL
+ROUTINE_SCHEMA varchar(64) NO
+ROUTINE_NAME varchar(64) NO
+ROUTINE_TYPE varchar(9) NO
+DTD_IDENTIFIER varchar(64) YES NULL
+ROUTINE_BODY varchar(8) NO
+ROUTINE_DEFINITION longtext YES NULL
+EXTERNAL_NAME varchar(64) YES NULL
+EXTERNAL_LANGUAGE varchar(64) YES NULL
+PARAMETER_STYLE varchar(8) NO
+IS_DETERMINISTIC varchar(3) NO
+SQL_DATA_ACCESS varchar(64) NO
+SQL_PATH varchar(64) YES NULL
+SECURITY_TYPE varchar(7) NO
+CREATED datetime NO 0000-00-00 00:00:00
+LAST_ALTERED datetime NO 0000-00-00 00:00:00
+SQL_MODE longtext NO NULL
+ROUTINE_COMMENT varchar(64) NO
+DEFINER varchar(77) NO
+USE test;
+DROP PROCEDURE IF EXISTS sp_for_routines;
+DROP FUNCTION IF EXISTS function_for_routines;
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
+SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
+routine_body,external_name,external_language,parameter_style,sql_path
+FROM information_schema.routines
+WHERE routine_catalog IS NOT NULL OR external_name IS NOT NULL
+OR external_language IS NOT NULL OR sql_path IS NOT NULL
+OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
+ OR specific_name <> routine_name;
+specific_name routine_catalog routine_schema routine_name routine_type routine_body external_name external_language parameter_style sql_path
+DROP PROCEDURE sp_for_routines;
+DROP FUNCTION function_for_routines;
+################################################################################
+# Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
+################################################################################
+DROP DATABASE IF EXISTS db_datadict;
+DROP DATABASE IF EXISTS db_datadict_2;
+CREATE DATABASE db_datadict;
+USE db_datadict;
+CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
+ENGINE = <other_engine_type>;
+INSERT INTO res_6_408002_1(f1, f2, f3, f4)
+VALUES('abc', 'xyz', '1989-11-09', 0815);
+DROP PROCEDURE IF EXISTS sp_6_408002_1;
+CREATE PROCEDURE sp_6_408002_1()
+BEGIN
+SELECT * FROM db_datadict.res_6_408002_1;
+END//
+CREATE DATABASE db_datadict_2;
+USE db_datadict_2;
+CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
+ENGINE = <other_engine_type>;
+INSERT INTO res_6_408002_2(f1, f2, f3, f4)
+VALUES('abc', 'xyz', '1990-10-03', 4711);
+DROP PROCEDURE IF EXISTS sp_6_408002_2;
+CREATE PROCEDURE sp_6_408002_2()
+BEGIN
+SELECT * FROM db_datadict_2.res_6_408002_2;
+END//
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+GRANT SELECT ON db_datadict_2.* TO 'testuser1'@'localhost';
+GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
+GRANT EXECUTE ON db_datadict.* TO 'testuser1'@'localhost';
+GRANT SELECT ON db_datadict.* TO 'testuser2'@'localhost';
+GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
+TO 'testuser2'@'localhost';
+GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
+FLUSH PRIVILEGES;
+# Establish connection testuser1 (user=testuser1)
+SELECT * FROM information_schema.routines;
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER
+sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
+SELECT * FROM db_datadict.res_6_408002_1;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost
+sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
+SELECT * FROM db_datadict_2.res_6_408002_2;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost
+# Establish connection testuser2 (user=testuser2)
+SELECT * FROM information_schema.routines;
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER
+sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
+SELECT * FROM db_datadict.res_6_408002_1;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost
+sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
+SELECT * FROM db_datadict_2.res_6_408002_2;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost
+# Establish connection testuser3 (user=testuser3)
+SELECT * FROM information_schema.routines;
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER
+sp_6_408002_1 NULL db_datadict sp_6_408002_1 PROCEDURE NULL SQL BEGIN
+SELECT * FROM db_datadict.res_6_408002_1;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost
+sp_6_408002_2 NULL db_datadict_2 sp_6_408002_2 PROCEDURE NULL SQL BEGIN
+SELECT * FROM db_datadict_2.res_6_408002_2;
+END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost
+# Switch to connection default and close connections testuser1,testuser2,testuser3
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+USE test;
+DROP DATABASE db_datadict;
+DROP DATABASE db_datadict_2;
+#########################################################################
+# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
+#########################################################################
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER
+USE db_datadict;
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
+ORDER BY routine_name;
+SPECIFIC_NAME function_for_routines
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME function_for_routines
+ROUTINE_TYPE FUNCTION
+DTD_IDENTIFIER int(11)
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION RETURN 0
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE DEFINER
+CREATED <created>
+LAST_ALTERED <modified>
+SQL_MODE
+ROUTINE_COMMENT
+DEFINER root@localhost
+SPECIFIC_NAME sp_for_routines
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME sp_for_routines
+ROUTINE_TYPE PROCEDURE
+DTD_IDENTIFIER NULL
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION SELECT 'db_datadict'
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE DEFINER
+CREATED <created>
+LAST_ALTERED <modified>
+SQL_MODE
+ROUTINE_COMMENT
+DEFINER root@localhost
+ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
+ALTER FUNCTION function_for_routines COMMENT 'updated comments';
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
+ORDER BY routine_name;
+SPECIFIC_NAME function_for_routines
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME function_for_routines
+ROUTINE_TYPE FUNCTION
+DTD_IDENTIFIER int(11)
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION RETURN 0
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE DEFINER
+CREATED <created>
+LAST_ALTERED <modified>
+SQL_MODE
+ROUTINE_COMMENT updated comments
+DEFINER root@localhost
+SPECIFIC_NAME sp_for_routines
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME sp_for_routines
+ROUTINE_TYPE PROCEDURE
+DTD_IDENTIFIER NULL
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION SELECT 'db_datadict'
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE INVOKER
+CREATED <created>
+LAST_ALTERED <modified>
+SQL_MODE
+ROUTINE_COMMENT
+DEFINER root@localhost
+DROP PROCEDURE sp_for_routines;
+DROP FUNCTION function_for_routines;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
+ORDER BY routine_name;
+SPECIFIC_NAME function_for_routines
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME function_for_routines
+ROUTINE_TYPE FUNCTION
+DTD_IDENTIFIER int(11)
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION RETURN 0
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE DEFINER
+CREATED <created>
+LAST_ALTERED <modified>
+SQL_MODE
+ROUTINE_COMMENT
+DEFINER root@localhost
+SPECIFIC_NAME sp_for_routines
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME sp_for_routines
+ROUTINE_TYPE PROCEDURE
+DTD_IDENTIFIER NULL
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION SELECT 'db_datadict'
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE DEFINER
+CREATED <created>
+LAST_ALTERED <modified>
+SQL_MODE
+ROUTINE_COMMENT
+DEFINER root@localhost
+use test;
+DROP DATABASE db_datadict;
+SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
+SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER
+#########################################################################
+# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
+# ROUTINE_DEFINITION column
+#########################################################################
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+USE db_datadict;
+CREATE TABLE db_datadict.res_6_408004_1
+(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
+ENGINE = <other_engine_type>;
+INSERT INTO db_datadict.res_6_408004_1
+VALUES ('abc', 98765 , 99999999 , 98765, 10);
+CREATE TABLE db_datadict.res_6_408004_2
+(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
+ENGINE = <other_engine_type>;
+INSERT INTO db_datadict.res_6_408004_2
+VALUES ('abc', 98765 , 99999999 , 98765, 10);
+# Checking the max. possible length of (currently) 4 GByte is not
+# in this environment here.
+CREATE PROCEDURE sp_6_408004 ()
+BEGIN
+DECLARE done INTEGER DEFAULt 0;
+DECLARE variable_number_1 LONGTEXT;
+DECLARE variable_number_2 MEDIUMINT;
+DECLARE variable_number_3 LONGBLOB;
+DECLARE variable_number_4 REAL;
+DECLARE variable_number_5 YEAR;
+DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
+BEGIN
+OPEN cursor_number_1;
+WHILE done <> 1 DO
+FETCH cursor_number_1
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES (variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+BEGIN
+BEGIN
+SET done = 0;
+OPEN cursor_number_2;
+WHILE done <> 1 DO
+FETCH cursor_number_2
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES(variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+SET done = 0;
+OPEN cursor_number_3;
+WHILE done <> 1 DO
+FETCH cursor_number_3
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES(variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+END;
+BEGIN
+SET done = 0;
+OPEN cursor_number_4;
+WHILE done <> 1 DO
+FETCH cursor_number_4
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES (variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+BEGIN
+SET @a='test row';
+SELECT @a;
+SELECT @a;
+SELECT @a;
+END;
+BEGIN
+SET done = 0;
+OPEN cursor_number_5;
+WHILE done <> 1 DO
+FETCH cursor_number_5
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES (variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+BEGIN
+SET @a='test row';
+SELECT @a;
+SELECT @a;
+SELECT @a;
+END;
+END//
+CALL db_datadict.sp_6_408004 ();
+@a
+test row
+@a
+test row
+@a
+test row
+@a
+test row
+@a
+test row
+@a
+test row
+SELECT * FROM db_datadict.res_6_408004_2;
+f1 f2 f3 f4 f5
+abc 98765 99999999 98765 2010
+abc 98765 99999999 98765 2010
+abc 98765 99999999 98765 2010
+abc 98765 99999999 98765 2010
+abc 98765 99999999 98765 2010
+abc 98765 99999999 98765 2010
+SELECT *, LENGTH(routine_definition) FROM information_schema.routines
+WHERE routine_schema = 'db_datadict';
+SPECIFIC_NAME sp_6_408004
+ROUTINE_CATALOG NULL
+ROUTINE_SCHEMA db_datadict
+ROUTINE_NAME sp_6_408004
+ROUTINE_TYPE PROCEDURE
+DTD_IDENTIFIER NULL
+ROUTINE_BODY SQL
+ROUTINE_DEFINITION BEGIN
+DECLARE done INTEGER DEFAULt 0;
+DECLARE variable_number_1 LONGTEXT;
+DECLARE variable_number_2 MEDIUMINT;
+DECLARE variable_number_3 LONGBLOB;
+DECLARE variable_number_4 REAL;
+DECLARE variable_number_5 YEAR;
+DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
+DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
+BEGIN
+OPEN cursor_number_1;
+WHILE done <> 1 DO
+FETCH cursor_number_1
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES (variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+BEGIN
+BEGIN
+SET done = 0;
+OPEN cursor_number_2;
+WHILE done <> 1 DO
+FETCH cursor_number_2
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES(variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+SET done = 0;
+OPEN cursor_number_3;
+WHILE done <> 1 DO
+FETCH cursor_number_3
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES(variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+END;
+BEGIN
+SET done = 0;
+OPEN cursor_number_4;
+WHILE done <> 1 DO
+FETCH cursor_number_4
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES (variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+BEGIN
+SET @a='test row';
+SELECT @a;
+SELECT @a;
+SELECT @a;
+END;
+BEGIN
+SET done = 0;
+OPEN cursor_number_5;
+WHILE done <> 1 DO
+FETCH cursor_number_5
+INTO variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5;
+IF done <> 0 THEN
+INSERT INTO res_6_408004_2
+VALUES (variable_number_1, variable_number_2, variable_number_3,
+variable_number_4, variable_number_5);
+END IF;
+END WHILE;
+END;
+BEGIN
+SET @a='test row';
+SELECT @a;
+SELECT @a;
+SELECT @a;
+END;
+END
+EXTERNAL_NAME NULL
+EXTERNAL_LANGUAGE NULL
+PARAMETER_STYLE SQL
+IS_DETERMINISTIC NO
+SQL_DATA_ACCESS CONTAINS SQL
+SQL_PATH NULL
+SECURITY_TYPE DEFINER
+CREATED YYYY-MM-DD hh:mm:ss
+LAST_ALTERED YYYY-MM-DD hh:mm:ss
+SQL_MODE
+ROUTINE_COMMENT
+DEFINER root@localhost
+LENGTH(routine_definition) 2549
+DROP DATABASE db_datadict;
+########################################################################
+# 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;
+CREATE DATABASE db_datadict;
+USE db_datadict;
+CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
+USE test;
+INSERT INTO information_schema.routines (routine_name, routine_type )
+VALUES ('p2', 'procedure');
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.routines SET routine_name = 'p2'
+WHERE routine_body = 'sql';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DELETE FROM information_schema.routines ;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+TRUNCATE information_schema.routines ;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CREATE INDEX i7 ON information_schema.routines (routine_name);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.routines ADD f1 INT;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.routines DISCARD TABLESPACE;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE information_schema.routines ;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.routines RENAME db_datadict.routines;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
new file mode 100644
index 00000000000..0dbbeaaa468
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
@@ -0,0 +1,187 @@
+SHOW TABLES FROM information_schema LIKE 'SCHEMATA';
+Tables_in_information_schema (SCHEMATA)
+SCHEMATA
+#######################################################################
+# 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.SCHEMATA;
+CREATE PROCEDURE test.p1() SELECT * FROM information_schema.SCHEMATA;
+CREATE FUNCTION test.f1() returns BIGINT
+BEGIN
+DECLARE counter BIGINT DEFAULT NULL;
+SELECT COUNT(*) INTO counter FROM information_schema.SCHEMATA;
+RETURN counter;
+END//
+# Attention: The printing of the next result sets is disabled.
+SELECT * FROM information_schema.SCHEMATA;
+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.9.1: INFORMATION_SCHEMA.SCHEMATA layout;
+#########################################################################
+DESCRIBE information_schema.SCHEMATA;
+Field Type Null Key Default Extra
+CATALOG_NAME varchar(512) YES NULL
+SCHEMA_NAME varchar(64) NO
+DEFAULT_CHARACTER_SET_NAME varchar(64) NO
+DEFAULT_COLLATION_NAME varchar(64) NO
+SQL_PATH varchar(512) YES NULL
+SHOW CREATE TABLE information_schema.SCHEMATA;
+Table Create Table
+SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
+ `CATALOG_NAME` varchar(512) default NULL,
+ `SCHEMA_NAME` varchar(64) NOT NULL default '',
+ `DEFAULT_CHARACTER_SET_NAME` varchar(64) NOT NULL default '',
+ `DEFAULT_COLLATION_NAME` varchar(64) NOT NULL default '',
+ `SQL_PATH` varchar(512) default NULL
+) ENGINE=MEMORY DEFAULT CHARSET=utf8
+SHOW COLUMNS FROM information_schema.SCHEMATA;
+Field Type Null Key Default Extra
+CATALOG_NAME varchar(512) YES NULL
+SCHEMA_NAME varchar(64) NO
+DEFAULT_CHARACTER_SET_NAME varchar(64) NO
+DEFAULT_COLLATION_NAME varchar(64) NO
+SQL_PATH varchar(512) YES NULL
+SELECT catalog_name, schema_name, sql_path
+FROM information_schema.schemata
+WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
+catalog_name schema_name sql_path
+###############################################################################
+# Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
+###############################################################################
+DROP DATABASE IF EXISTS db_datadict_1;
+DROP DATABASE IF EXISTS db_datadict_2;
+CREATE DATABASE db_datadict_1;
+CREATE DATABASE db_datadict_2;
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+GRANT SELECT ON db_datadict_1.* to 'testuser1'@'localhost';
+GRANT SELECT ON db_datadict_1.* to 'testuser2'@'localhost';
+GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
+SELECT * FROM information_schema.schemata
+WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
+CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
+NULL db_datadict_1 latin1 latin1_swedish_ci NULL
+NULL db_datadict_2 latin1 latin1_swedish_ci NULL
+SHOW DATABASES LIKE 'db_datadict_%';
+Database (db_datadict_%)
+db_datadict_1
+db_datadict_2
+# Establish connection testuser1 (user=testuser1)
+SELECT * FROM information_schema.schemata
+WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
+CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
+NULL db_datadict_1 latin1 latin1_swedish_ci NULL
+NULL db_datadict_2 latin1 latin1_swedish_ci NULL
+SHOW DATABASES LIKE 'db_datadict_%';
+Database (db_datadict_%)
+db_datadict_1
+db_datadict_2
+# Establish connection testuser2 (user=testuser2)
+SELECT * FROM information_schema.schemata
+WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
+CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
+NULL db_datadict_1 latin1 latin1_swedish_ci NULL
+NULL db_datadict_2 latin1 latin1_swedish_ci NULL
+SHOW DATABASES LIKE 'db_datadict_%';
+Database (db_datadict_%)
+db_datadict_1
+db_datadict_2
+# Establish connection testuser3 (user=testuser3)
+SELECT * FROM information_schema.schemata
+WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
+CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
+NULL db_datadict_1 latin1 latin1_swedish_ci NULL
+NULL db_datadict_2 latin1 latin1_swedish_ci NULL
+SHOW DATABASES LIKE 'db_datadict_%';
+Database (db_datadict_%)
+db_datadict_1
+db_datadict_2
+# Switch to connection default and close connections testuser1,testuser2,testuser3
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+DROP DATABASE db_datadict_1;
+DROP DATABASE db_datadict_2;
+#################################################################################
+# Testcases 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.SCHEMATA modifications
+#################################################################################
+DROP DATABASE IF EXISTS db_datadict;
+SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
+CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
+SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
+NULL db_datadict latin1 latin1_swedish_ci NULL
+SELECT schema_name, default_character_set_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+schema_name default_character_set_name
+db_datadict latin1
+ALTER SCHEMA db_datadict CHARACTER SET 'utf8';
+SELECT schema_name, default_character_set_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+schema_name default_character_set_name
+db_datadict utf8
+ALTER SCHEMA db_datadict CHARACTER SET 'latin1';
+SELECT schema_name, default_collation_name FROM information_schema.schemata
+WHERE schema_name = 'db_datadict';
+schema_name default_collation_name
+db_datadict latin1_swedish_ci
+ALTER SCHEMA db_datadict COLLATE 'latin1_general_cs';
+SELECT schema_name, default_collation_name FROM information_schema.schemata
+WHERE schema_name = 'db_datadict';
+schema_name default_collation_name
+db_datadict latin1_general_cs
+SELECT schema_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+schema_name
+db_datadict
+DROP DATABASE db_datadict;
+SELECT schema_name
+FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+schema_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 tables are not supported
+########################################################################
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
+INSERT INTO information_schema.schemata
+(catalog_name, schema_name, default_character_set_name, sql_path)
+VALUES (NULL, 'db1', 'latin1', NULL);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+INSERT INTO information_schema.schemata
+SELECT * FROM information_schema.schemata;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.schemata
+SET default_character_set_name = 'utf8'
+WHERE schema_name = 'db_datadict';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.schemata SET catalog_name = 't_4711';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+TRUNCATE information_schema.schemata;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CREATE INDEX i1 ON information_schema.schemata(schema_name);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.schemata ADD f1 INT;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE information_schema.schemata;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.schemata RENAME db_datadict.schemata;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.schemata RENAME information_schema.xschemata;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
new file mode 100644
index 00000000000..7602e71f7bf
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
@@ -0,0 +1,103 @@
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+DROP USER testuser1@localhost;
+CREATE USER testuser1@localhost;
+GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+SELECT * FROM information_schema.statistics
+WHERE table_schema = 'mysql'
+ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
+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
+NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
+NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
+NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
+NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
+NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
+NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
+NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
+# Establish connection testuser1 (user=testuser1)
+SELECT * FROM information_schema.statistics
+WHERE table_schema = 'mysql'
+ORDER BY table_schema, table_name, index_name, seq_in_index, column_name;
+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
+NULL mysql columns_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+NULL mysql columns_priv 0 mysql PRIMARY 5 Column_name A #CARD# NULL NULL BTREE
+NULL mysql db 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql db 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql db 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql db 1 mysql User 1 User A #CARD# NULL NULL BTREE
+NULL mysql func 0 mysql PRIMARY 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_category 0 mysql name 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A #CARD# NULL NULL BTREE
+NULL mysql help_keyword 0 mysql name 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A #CARD# NULL NULL BTREE
+NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A #CARD# NULL NULL BTREE
+NULL mysql help_topic 0 mysql name 1 name A #CARD# NULL NULL BTREE
+NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A #CARD# NULL NULL BTREE
+NULL mysql host 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql host 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql proc 0 mysql PRIMARY 1 db A #CARD# NULL NULL BTREE
+NULL mysql proc 0 mysql PRIMARY 2 name A #CARD# NULL NULL BTREE
+NULL mysql proc 0 mysql PRIMARY 3 type A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 4 Routine_name A #CARD# NULL NULL BTREE
+NULL mysql procs_priv 0 mysql PRIMARY 5 Routine_type A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 2 Db A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 3 User A #CARD# NULL NULL BTREE
+NULL mysql tables_priv 0 mysql PRIMARY 4 Table_name A #CARD# NULL NULL BTREE
+NULL mysql time_zone 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+NULL mysql time_zone_leap_second 0 mysql PRIMARY 1 Transition_time A #CARD# NULL NULL BTREE
+NULL mysql time_zone_name 0 mysql PRIMARY 1 Name A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition 0 mysql PRIMARY 2 Transition_time A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition_type 0 mysql PRIMARY 1 Time_zone_id A #CARD# NULL NULL BTREE
+NULL mysql time_zone_transition_type 0 mysql PRIMARY 2 Transition_type_id A #CARD# NULL NULL BTREE
+NULL mysql user 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
+NULL mysql user 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
+# Switch to connection default and close connection testuser1
+DROP USER testuser1@localhost;
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
new file mode 100644
index 00000000000..0ab31365eb5
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
@@ -0,0 +1,57 @@
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+DROP USER testuser1@localhost;
+CREATE USER testuser1@localhost;
+GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+SELECT * FROM information_schema.table_constraints
+WHERE table_schema = 'mysql'
+ORDER BY table_schema,table_name,constraint_name;
+CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
+NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
+NULL mysql PRIMARY mysql db PRIMARY KEY
+NULL mysql PRIMARY mysql func PRIMARY KEY
+NULL mysql name mysql help_category UNIQUE
+NULL mysql PRIMARY mysql help_category PRIMARY KEY
+NULL mysql name mysql help_keyword UNIQUE
+NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
+NULL mysql PRIMARY mysql help_relation PRIMARY KEY
+NULL mysql name mysql help_topic UNIQUE
+NULL mysql PRIMARY mysql help_topic PRIMARY KEY
+NULL mysql PRIMARY mysql host PRIMARY KEY
+NULL mysql PRIMARY mysql proc PRIMARY KEY
+NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
+NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+NULL mysql PRIMARY mysql user PRIMARY KEY
+# Establish connection testuser1 (user=testuser1)
+SELECT * FROM information_schema.table_constraints
+WHERE table_schema = 'mysql'
+ORDER BY table_schema,table_name,constraint_name;
+CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE
+NULL mysql PRIMARY mysql columns_priv PRIMARY KEY
+NULL mysql PRIMARY mysql db PRIMARY KEY
+NULL mysql PRIMARY mysql func PRIMARY KEY
+NULL mysql name mysql help_category UNIQUE
+NULL mysql PRIMARY mysql help_category PRIMARY KEY
+NULL mysql name mysql help_keyword UNIQUE
+NULL mysql PRIMARY mysql help_keyword PRIMARY KEY
+NULL mysql PRIMARY mysql help_relation PRIMARY KEY
+NULL mysql name mysql help_topic UNIQUE
+NULL mysql PRIMARY mysql help_topic PRIMARY KEY
+NULL mysql PRIMARY mysql host PRIMARY KEY
+NULL mysql PRIMARY mysql proc PRIMARY KEY
+NULL mysql PRIMARY mysql procs_priv PRIMARY KEY
+NULL mysql PRIMARY mysql tables_priv PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_leap_second PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_name PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_transition PRIMARY KEY
+NULL mysql PRIMARY mysql time_zone_transition_type PRIMARY KEY
+NULL mysql PRIMARY mysql user PRIMARY KEY
+# Switch to connection default and close connection testuser1
+DROP USER testuser1@localhost;
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_embedded.result
new file mode 100644
index 00000000000..13ee6277bad
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_tables_embedded.result
@@ -0,0 +1,427 @@
+SHOW TABLES FROM information_schema LIKE 'TABLES';
+Tables_in_information_schema (TABLES)
+TABLES
+#######################################################################
+# 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.TABLES;
+CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TABLES;
+CREATE FUNCTION test.f1() returns BIGINT
+BEGIN
+DECLARE counter BIGINT DEFAULT NULL;
+SELECT COUNT(*) INTO counter FROM information_schema.TABLES;
+RETURN counter;
+END//
+# Attention: The printing of the next result sets is disabled.
+SELECT * FROM information_schema.TABLES;
+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.12.1: INFORMATION_SCHEMA.TABLES layout
+#########################################################################
+DESCRIBE information_schema.TABLES;
+Field Type Null Key Default Extra
+TABLE_CATALOG varchar(512) YES NULL
+TABLE_SCHEMA varchar(64) NO
+TABLE_NAME varchar(64) NO
+TABLE_TYPE varchar(64) NO
+ENGINE varchar(64) YES NULL
+VERSION bigint(21) YES NULL
+ROW_FORMAT varchar(10) YES NULL
+TABLE_ROWS bigint(21) YES NULL
+AVG_ROW_LENGTH bigint(21) YES NULL
+DATA_LENGTH bigint(21) YES NULL
+MAX_DATA_LENGTH bigint(21) YES NULL
+INDEX_LENGTH bigint(21) YES NULL
+DATA_FREE bigint(21) YES NULL
+AUTO_INCREMENT bigint(21) YES NULL
+CREATE_TIME datetime YES NULL
+UPDATE_TIME datetime YES NULL
+CHECK_TIME datetime YES NULL
+TABLE_COLLATION varchar(64) YES NULL
+CHECKSUM bigint(21) YES NULL
+CREATE_OPTIONS varchar(255) YES NULL
+TABLE_COMMENT varchar(80) NO
+SHOW CREATE TABLE information_schema.TABLES;
+Table Create Table
+TABLES CREATE TEMPORARY TABLE `TABLES` (
+ `TABLE_CATALOG` varchar(512) default NULL,
+ `TABLE_SCHEMA` varchar(64) NOT NULL default '',
+ `TABLE_NAME` varchar(64) NOT NULL default '',
+ `TABLE_TYPE` varchar(64) NOT NULL default '',
+ `ENGINE` varchar(64) default NULL,
+ `VERSION` bigint(21) default NULL,
+ `ROW_FORMAT` varchar(10) default NULL,
+ `TABLE_ROWS` bigint(21) default NULL,
+ `AVG_ROW_LENGTH` bigint(21) default NULL,
+ `DATA_LENGTH` bigint(21) default NULL,
+ `MAX_DATA_LENGTH` bigint(21) default NULL,
+ `INDEX_LENGTH` bigint(21) default NULL,
+ `DATA_FREE` bigint(21) default NULL,
+ `AUTO_INCREMENT` bigint(21) default NULL,
+ `CREATE_TIME` datetime default NULL,
+ `UPDATE_TIME` datetime default NULL,
+ `CHECK_TIME` datetime default NULL,
+ `TABLE_COLLATION` varchar(64) default NULL,
+ `CHECKSUM` bigint(21) default NULL,
+ `CREATE_OPTIONS` varchar(255) default NULL,
+ `TABLE_COMMENT` varchar(80) NOT NULL default ''
+) ENGINE=MEMORY DEFAULT CHARSET=utf8
+SHOW COLUMNS FROM information_schema.TABLES;
+Field Type Null Key Default Extra
+TABLE_CATALOG varchar(512) YES NULL
+TABLE_SCHEMA varchar(64) NO
+TABLE_NAME varchar(64) NO
+TABLE_TYPE varchar(64) NO
+ENGINE varchar(64) YES NULL
+VERSION bigint(21) YES NULL
+ROW_FORMAT varchar(10) YES NULL
+TABLE_ROWS bigint(21) YES NULL
+AVG_ROW_LENGTH bigint(21) YES NULL
+DATA_LENGTH bigint(21) YES NULL
+MAX_DATA_LENGTH bigint(21) YES NULL
+INDEX_LENGTH bigint(21) YES NULL
+DATA_FREE bigint(21) YES NULL
+AUTO_INCREMENT bigint(21) YES NULL
+CREATE_TIME datetime YES NULL
+UPDATE_TIME datetime YES NULL
+CHECK_TIME datetime YES NULL
+TABLE_COLLATION varchar(64) YES NULL
+CHECKSUM bigint(21) YES NULL
+CREATE_OPTIONS varchar(255) YES NULL
+TABLE_COMMENT varchar(80) NO
+SELECT table_catalog, table_schema, table_name
+FROM information_schema.tables WHERE table_catalog IS NOT NULL;
+table_catalog table_schema table_name
+################################################################################
+# Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
+################################################################################
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+GRANT CREATE, CREATE VIEW, INSERT, SELECT ON db_datadict.*
+TO 'testuser1'@'localhost' WITH GRANT OPTION;
+DROP USER 'testuser2'@'localhost';
+CREATE USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+CREATE TABLE db_datadict.tb1 (f1 INT, f2 INT, f3 INT)
+ENGINE = <engine_type>;
+GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
+GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
+# Establish connection testuser1 (user=testuser1)
+CREATE TABLE tb2 (f1 DECIMAL)
+ENGINE = <engine_type>;
+CREATE TABLE tb3 (f1 VARCHAR(200))
+ENGINE = <engine_type>;
+GRANT SELECT ON db_datadict.tb3 to 'testuser3'@'localhost';
+GRANT INSERT ON db_datadict.tb3 to 'testuser2'@'localhost';
+CREATE VIEW v3 AS SELECT * FROM tb3;
+GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
+SELECT * FROM information_schema.tables
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+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
+NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+SHOW TABLES FROM db_datadict;
+Tables_in_db_datadict
+tb1
+tb2
+tb3
+v3
+# Establish connection testuser2 (user=testuser2)
+SELECT * FROM information_schema.tables
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+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
+NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+SHOW TABLES FROM db_datadict;
+Tables_in_db_datadict
+tb1
+tb2
+tb3
+v3
+# Establish connection testuser3 (user=testuser3)
+SELECT * FROM information_schema.tables
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+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
+NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+SHOW TABLES FROM db_datadict;
+Tables_in_db_datadict
+tb1
+tb2
+tb3
+v3
+# Switch to connection default (user=root)
+SELECT * FROM information_schema.tables
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+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
+NULL db_datadict tb1 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb2 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict tb3 BASE TABLE #ENG# 10 #RF# 0 #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# latin1_swedish_ci #CS#
+NULL db_datadict v3 VIEW #ENG# NULL #RF# NULL #ARL# #DL# #MDL# #IL# #DF# NULL #CRT #UT# #CT# NULL #CS# NULL VIEW
+SHOW TABLES FROM db_datadict;
+Tables_in_db_datadict
+tb1
+tb2
+tb3
+v3
+# Close connection testuser1, testuser2, testuser3
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+DROP DATABASE db_datadict;
+#########################################################################
+# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLES 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.tables
+WHERE table_name LIKE 't1_my_table%';
+table_name
+CREATE TABLE test.t1_my_table (f1 BIGINT)
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
+COMMENT = 'Initial Comment' ENGINE = <engine_type>;
+SELECT * FROM information_schema.tables
+WHERE table_name = 't1_my_table';
+TABLE_CATALOG NULL
+TABLE_SCHEMA test
+TABLE_NAME t1_my_table
+TABLE_TYPE BASE TABLE
+ENGINE #ENG#
+VERSION 10
+ROW_FORMAT #RF#
+TABLE_ROWS 0
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM #CS#
+CREATE_OPTIONS
+TABLE_COMMENT Initial Comment
+SELECT table_name FROM information_schema.tables
+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.tables
+WHERE table_name LIKE 't1_my_table%';
+table_name
+t1_my_tablex
+SELECT table_schema,table_name FROM information_schema.tables
+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.tables
+WHERE table_name = 't1_my_tablex';
+table_schema table_name
+db_datadict t1_my_tablex
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name engine
+t1_my_tablex <engine_type>
+ALTER TABLE db_datadict.t1_my_tablex
+ENGINE = <other_engine_type>;
+SELECT table_name, engine FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name engine
+t1_my_tablex <other_engine_type>
+SELECT table_name, table_rows FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name table_rows
+t1_my_tablex 0
+INSERT INTO db_datadict.t1_my_tablex VALUES(1),(2);
+SELECT table_name, table_rows FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name table_rows
+t1_my_tablex 2
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name table_collation
+t1_my_tablex latin1_swedish_ci
+ALTER TABLE db_datadict.t1_my_tablex DEFAULT CHARACTER SET utf8;
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name table_collation
+t1_my_tablex utf8_general_ci
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name table_collation
+t1_my_tablex utf8_general_ci
+ALTER TABLE db_datadict.t1_my_tablex
+DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;
+SELECT table_name, table_collation FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name table_collation
+t1_my_tablex latin1_german1_ci
+SELECT table_name, TABLE_COMMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name TABLE_COMMENT
+t1_my_tablex Initial Comment
+ALTER TABLE db_datadict.t1_my_tablex COMMENT 'Changed Comment';
+SELECT table_name, TABLE_COMMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name TABLE_COMMENT
+t1_my_tablex Changed Comment
+SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name AUTO_INCREMENT
+t1_my_tablex NULL
+ALTER TABLE db_datadict.t1_my_tablex
+ADD f2 BIGINT AUTO_INCREMENT, ADD PRIMARY KEY (f2);
+SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name AUTO_INCREMENT
+t1_my_tablex 3
+SELECT table_name, ROW_FORMAT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name ROW_FORMAT
+t1_my_tablex Fixed
+ALTER TABLE db_datadict.t1_my_tablex ROW_FORMAT = dynamic;
+SELECT table_name, ROW_FORMAT FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name ROW_FORMAT
+t1_my_tablex Dynamic
+SELECT table_name, checksum FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name checksum
+t1_my_tablex NULL
+ALTER TABLE db_datadict.t1_my_tablex CHECKSUM = 1;
+SELECT table_name, checksum IS NOT NULL FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name checksum IS NOT NULL
+t1_my_tablex 1
+SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
+SELECT UPDATE_TIME > @UPDATE_TIME
+AS "Is current UPDATE_TIME bigger than before last INSERT?"
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+Is current UPDATE_TIME bigger than before last INSERT?
+1
+SELECT checksum <> @checksum
+AS "Is current CHECKSUM different than before last INSERT?"
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+Is current CHECKSUM different than before last INSERT?
+1
+SELECT CREATE_TIME INTO @CREATE_TIME FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+table_name
+t1_my_tablex
+DROP TABLE db_datadict.t1_my_tablex;
+SELECT table_name FROM information_schema.tables
+WHERE table_name LIKE 't1_my_table%';
+table_name
+CREATE TABLE test.t1_my_tablex (f1 BIGINT)
+ENGINE = <other_engine_type>;
+SELECT CREATE_TIME > @CREATE_TIME
+AS "Is current CREATE_TIME bigger than for the old dropped table?"
+FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+Is current CREATE_TIME bigger than for the old dropped table?
+1
+DROP TABLE test.t1_my_tablex;
+CREATE VIEW test.t1_my_tablex AS SELECT 1;
+SELECT * FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+TABLE_CATALOG NULL
+TABLE_SCHEMA test
+TABLE_NAME t1_my_tablex
+TABLE_TYPE VIEW
+ENGINE NULL
+VERSION NULL
+ROW_FORMAT NULL
+TABLE_ROWS NULL
+AVG_ROW_LENGTH NULL
+DATA_LENGTH NULL
+MAX_DATA_LENGTH NULL
+INDEX_LENGTH NULL
+DATA_FREE NULL
+AUTO_INCREMENT NULL
+CREATE_TIME NULL
+UPDATE_TIME NULL
+CHECK_TIME NULL
+TABLE_COLLATION NULL
+CHECKSUM NULL
+CREATE_OPTIONS NULL
+TABLE_COMMENT VIEW
+DROP VIEW test.t1_my_tablex;
+SELECT table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name
+CREATE TEMPORARY TABLE test.t1_my_tablex
+ENGINE = <other_engine_type>
+AS SELECT 1;
+SELECT table_name, table_type FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+DROP TEMPORARY TABLE test.t1_my_tablex;
+CREATE TABLE db_datadict.t1_my_tablex
+ENGINE = <engine_type> AS
+SELECT 1;
+SELECT table_name FROM information_schema.tables
+WHERE table_name = 't1_my_tablex';
+table_name
+t1_my_tablex
+DROP DATABASE db_datadict;
+SELECT table_name FROM information_schema.tables
+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 tables are not supported
+########################################################################
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+CREATE TABLE db_datadict.t1 (f1 BIGINT)
+ENGINE = <engine_type>;
+INSERT INTO information_schema.tables
+SELECT * FROM information_schema.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.tables SET table_schema = 'test'
+WHERE table_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DELETE FROM information_schema.tables WHERE table_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+TRUNCATE information_schema.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CREATE INDEX my_idx_on_tables ON information_schema.tables(table_schema);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.tables DROP PRIMARY KEY;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.tables ADD f1 INT;
+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 RENAME db_datadict.tables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.tables RENAME information_schema.xtables;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_innodb.result b/mysql-test/suite/funcs_1/r/is_tables_innodb.result
index 215e2c86654..f2d2e0a912a 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_innodb.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_innodb.result
@@ -1,386 +1,10 @@
DROP DATABASE IF EXISTS test1;
+DROP DATABASE IF EXISTS test2;
CREATE DATABASE test1;
-USE test;
-drop table if exists tb1 ;
-create table tb1 (
-f1 char(0),
-f2 char(0) binary,
-f3 char(0) ascii,
-f4 tinytext unicode,
-f5 text,
-f6 mediumtext,
-f7 longtext,
-f8 tinyblob,
-f9 blob,
-f10 mediumblob,
-f11 longblob,
-f12 binary,
-f13 tinyint,
-f14 tinyint unsigned,
-f15 tinyint zerofill,
-f16 tinyint unsigned zerofill,
-f17 smallint,
-f18 smallint unsigned,
-f19 smallint zerofill,
-f20 smallint unsigned zerofill,
-f21 mediumint,
-f22 mediumint unsigned,
-f23 mediumint zerofill,
-f24 mediumint unsigned zerofill,
-f25 int,
-f26 int unsigned,
-f27 int zerofill,
-f28 int unsigned zerofill,
-f29 bigint,
-f30 bigint unsigned,
-f31 bigint zerofill,
-f32 bigint unsigned zerofill,
-f33 decimal,
-f34 decimal unsigned,
-f35 decimal zerofill,
-f36 decimal unsigned zerofill not null DEFAULT 9.9,
-f37 decimal (0) not null DEFAULT 9.9,
-f38 decimal (64) not null DEFAULT 9.9,
-f39 decimal (0) unsigned not null DEFAULT 9.9,
-f40 decimal (64) unsigned not null DEFAULT 9.9,
-f41 decimal (0) zerofill not null DEFAULT 9.9,
-f42 decimal (64) zerofill not null DEFAULT 9.9,
-f43 decimal (0) unsigned zerofill not null DEFAULT 9.9,
-f44 decimal (64) unsigned zerofill not null DEFAULT 9.9,
-f45 decimal (0,0) not null DEFAULT 9.9,
-f46 decimal (63,30) not null DEFAULT 9.9,
-f47 decimal (0,0) unsigned not null DEFAULT 9.9,
-f48 decimal (63,30) unsigned not null DEFAULT 9.9,
-f49 decimal (0,0) zerofill not null DEFAULT 9.9,
-f50 decimal (63,30) zerofill not null DEFAULT 9.9,
-f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9,
-f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9,
-f53 numeric not null DEFAULT 99,
-f54 numeric unsigned not null DEFAULT 99,
-f55 numeric zerofill not null DEFAULT 99,
-f56 numeric unsigned zerofill not null DEFAULT 99,
-f57 numeric (0) not null DEFAULT 99,
-f58 numeric (64) not null DEFAULT 99
-) engine = innodb;
-Warnings:
-Note 1265 Data truncated for column 'f36' at row 1
-Note 1265 Data truncated for column 'f37' at row 1
-Note 1265 Data truncated for column 'f38' at row 1
-Note 1265 Data truncated for column 'f39' at row 1
-Note 1265 Data truncated for column 'f40' at row 1
-Note 1265 Data truncated for column 'f41' at row 1
-Note 1265 Data truncated for column 'f42' at row 1
-Note 1265 Data truncated for column 'f43' at row 1
-Note 1265 Data truncated for column 'f44' at row 1
-Note 1265 Data truncated for column 'f45' at row 1
-Note 1265 Data truncated for column 'f47' at row 1
-Note 1265 Data truncated for column 'f49' at row 1
-Note 1265 Data truncated for column 'f51' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb1.txt'
-into table tb1;
-drop table if exists tb2 ;
-create table tb2 (
-f59 numeric (0) unsigned,
-f60 numeric (64) unsigned,
-f61 numeric (0) zerofill,
-f62 numeric (64) zerofill,
-f63 numeric (0) unsigned zerofill,
-f64 numeric (64) unsigned zerofill,
-f65 numeric (0,0),
-f66 numeric (63,30),
-f67 numeric (0,0) unsigned,
-f68 numeric (63,30) unsigned,
-f69 numeric (0,0) zerofill,
-f70 numeric (63,30) zerofill,
-f71 numeric (0,0) unsigned zerofill,
-f72 numeric (63,30) unsigned zerofill,
-f73 real,
-f74 real unsigned,
-f75 real zerofill,
-f76 real unsigned zerofill,
-f77 double default 7.7,
-f78 double unsigned default 7.7,
-f79 double zerofill default 7.7,
-f80 double unsigned zerofill default 8.8,
-f81 float not null default 8.8,
-f82 float unsigned not null default 8.8,
-f83 float zerofill not null default 8.8,
-f84 float unsigned zerofill not null default 8.8,
-f85 float(0) not null default 8.8,
-f86 float(23) not null default 8.8,
-f87 float(0) unsigned not null default 8.8,
-f88 float(23) unsigned not null default 8.8,
-f89 float(0) zerofill not null default 8.8,
-f90 float(23) zerofill not null default 8.8,
-f91 float(0) unsigned zerofill not null default 8.8,
-f92 float(23) unsigned zerofill not null default 8.8,
-f93 float(24) not null default 8.8,
-f94 float(53) not null default 8.8,
-f95 float(24) unsigned not null default 8.8,
-f96 float(53) unsigned not null default 8.8,
-f97 float(24) zerofill not null default 8.8,
-f98 float(53) zerofill not null default 8.8,
-f99 float(24) unsigned zerofill not null default 8.8,
-f100 float(53) unsigned zerofill not null default 8.8,
-f101 date not null default '2000-01-01',
-f102 time not null default 20,
-f103 datetime not null default '2/2/2',
-f104 timestamp not null default 20001231235959,
-f105 year not null default 2000,
-f106 year(3) not null default 2000,
-f107 year(4) not null default 2000,
-f108 enum("1enum","2enum") not null default "1enum",
-f109 set("1set","2set") not null default "1set"
-) engine = innodb;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb2.txt'
-into table tb2;
-drop table if exists tb3 ;
-create table tb3 (
-f118 char not null DEFAULT 'a',
-f119 char binary not null DEFAULT b'101',
-f120 char ascii not null DEFAULT b'101',
-f121 tinytext,
-f122 text,
-f123 mediumtext,
-f124 longtext unicode,
-f125 tinyblob,
-f126 blob,
-f127 mediumblob,
-f128 longblob,
-f129 binary not null DEFAULT b'101',
-f130 tinyint not null DEFAULT 99,
-f131 tinyint unsigned not null DEFAULT 99,
-f132 tinyint zerofill not null DEFAULT 99,
-f133 tinyint unsigned zerofill not null DEFAULT 99,
-f134 smallint not null DEFAULT 999,
-f135 smallint unsigned not null DEFAULT 999,
-f136 smallint zerofill not null DEFAULT 999,
-f137 smallint unsigned zerofill not null DEFAULT 999,
-f138 mediumint not null DEFAULT 9999,
-f139 mediumint unsigned not null DEFAULT 9999,
-f140 mediumint zerofill not null DEFAULT 9999,
-f141 mediumint unsigned zerofill not null DEFAULT 9999,
-f142 int not null DEFAULT 99999,
-f143 int unsigned not null DEFAULT 99999,
-f144 int zerofill not null DEFAULT 99999,
-f145 int unsigned zerofill not null DEFAULT 99999,
-f146 bigint not null DEFAULT 999999,
-f147 bigint unsigned not null DEFAULT 999999,
-f148 bigint zerofill not null DEFAULT 999999,
-f149 bigint unsigned zerofill not null DEFAULT 999999,
-f150 decimal not null DEFAULT 999.999,
-f151 decimal unsigned not null DEFAULT 999.17,
-f152 decimal zerofill not null DEFAULT 999.999,
-f153 decimal unsigned zerofill,
-f154 decimal (0),
-f155 decimal (64),
-f156 decimal (0) unsigned,
-f157 decimal (64) unsigned,
-f158 decimal (0) zerofill,
-f159 decimal (64) zerofill,
-f160 decimal (0) unsigned zerofill,
-f161 decimal (64) unsigned zerofill,
-f162 decimal (0,0),
-f163 decimal (63,30),
-f164 decimal (0,0) unsigned,
-f165 decimal (63,30) unsigned,
-f166 decimal (0,0) zerofill,
-f167 decimal (63,30) zerofill,
-f168 decimal (0,0) unsigned zerofill,
-f169 decimal (63,30) unsigned zerofill,
-f170 numeric,
-f171 numeric unsigned,
-f172 numeric zerofill,
-f173 numeric unsigned zerofill,
-f174 numeric (0),
-f175 numeric (64)
-) engine = innodb;
-Warnings:
-Note 1265 Data truncated for column 'f150' at row 1
-Note 1265 Data truncated for column 'f151' at row 1
-Note 1265 Data truncated for column 'f152' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb3.txt'
-into table tb3;
-drop table if exists tb4;
-create table tb4 (
-f176 numeric (0) unsigned not null DEFAULT 9,
-f177 numeric (64) unsigned not null DEFAULT 9,
-f178 numeric (0) zerofill not null DEFAULT 9,
-f179 numeric (64) zerofill not null DEFAULT 9,
-f180 numeric (0) unsigned zerofill not null DEFAULT 9,
-f181 numeric (64) unsigned zerofill not null DEFAULT 9,
-f182 numeric (0,0) not null DEFAULT 9,
-f183 numeric (63,30) not null DEFAULT 9,
-f184 numeric (0,0) unsigned not null DEFAULT 9,
-f185 numeric (63,30) unsigned not null DEFAULT 9,
-f186 numeric (0,0) zerofill not null DEFAULT 9,
-f187 numeric (63,30) zerofill not null DEFAULT 9,
-f188 numeric (0,0) unsigned zerofill not null DEFAULT 9,
-f189 numeric (63,30) unsigned zerofill not null DEFAULT 9,
-f190 real not null DEFAULT 88.8,
-f191 real unsigned not null DEFAULT 88.8,
-f192 real zerofill not null DEFAULT 88.8,
-f193 real unsigned zerofill not null DEFAULT 88.8,
-f194 double not null DEFAULT 55.5,
-f195 double unsigned not null DEFAULT 55.5,
-f196 double zerofill not null DEFAULT 55.5,
-f197 double unsigned zerofill not null DEFAULT 55.5,
-f198 float,
-f199 float unsigned,
-f200 float zerofill,
-f201 float unsigned zerofill,
-f202 float(0),
-f203 float(23),
-f204 float(0) unsigned,
-f205 float(23) unsigned,
-f206 float(0) zerofill,
-f207 float(23) zerofill,
-f208 float(0) unsigned zerofill,
-f209 float(23) unsigned zerofill,
-f210 float(24),
-f211 float(53),
-f212 float(24) unsigned,
-f213 float(53) unsigned,
-f214 float(24) zerofill,
-f215 float(53) zerofill,
-f216 float(24) unsigned zerofill,
-f217 float(53) unsigned zerofill,
-f218 date,
-f219 time,
-f220 datetime,
-f221 timestamp,
-f222 year,
-f223 year(3),
-f224 year(4),
-f225 enum("1enum","2enum"),
-f226 set("1set","2set"),
-f235 char(0) unicode,
-f236 char(90),
-f237 char(255) ascii,
-f238 varchar(0),
-f239 varchar(20000) binary,
-f240 varchar(2000) unicode,
-f241 char(100) unicode
-) engine = innodb;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb4.txt'
-into table tb4;
-USE test1;
-drop table if exists tb2 ;
-create table tb2 (
-f59 numeric (0) unsigned,
-f60 numeric (64) unsigned,
-f61 numeric (0) zerofill,
-f62 numeric (64) zerofill,
-f63 numeric (0) unsigned zerofill,
-f64 numeric (64) unsigned zerofill,
-f65 numeric (0,0),
-f66 numeric (63,30),
-f67 numeric (0,0) unsigned,
-f68 numeric (63,30) unsigned,
-f69 numeric (0,0) zerofill,
-f70 numeric (63,30) zerofill,
-f71 numeric (0,0) unsigned zerofill,
-f72 numeric (63,30) unsigned zerofill,
-f73 real,
-f74 real unsigned,
-f75 real zerofill,
-f76 real unsigned zerofill,
-f77 double default 7.7,
-f78 double unsigned default 7.7,
-f79 double zerofill default 7.7,
-f80 double unsigned zerofill default 8.8,
-f81 float not null default 8.8,
-f82 float unsigned not null default 8.8,
-f83 float zerofill not null default 8.8,
-f84 float unsigned zerofill not null default 8.8,
-f85 float(0) not null default 8.8,
-f86 float(23) not null default 8.8,
-f87 float(0) unsigned not null default 8.8,
-f88 float(23) unsigned not null default 8.8,
-f89 float(0) zerofill not null default 8.8,
-f90 float(23) zerofill not null default 8.8,
-f91 float(0) unsigned zerofill not null default 8.8,
-f92 float(23) unsigned zerofill not null default 8.8,
-f93 float(24) not null default 8.8,
-f94 float(53) not null default 8.8,
-f95 float(24) unsigned not null default 8.8,
-f96 float(53) unsigned not null default 8.8,
-f97 float(24) zerofill not null default 8.8,
-f98 float(53) zerofill not null default 8.8,
-f99 float(24) unsigned zerofill not null default 8.8,
-f100 float(53) unsigned zerofill not null default 8.8,
-f101 date not null default '2000-01-01',
-f102 time not null default 20,
-f103 datetime not null default '2/2/2',
-f104 timestamp not null default 20001231235959,
-f105 year not null default 2000,
-f106 year(3) not null default 2000,
-f107 year(4) not null default 2000,
-f108 enum("1enum","2enum") not null default "1enum",
-f109 set("1set","2set") not null default "1set"
-) engine = innodb;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/innodb_tb2.txt'
-into table tb2;
-USE test;
-USE test;
-DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
-CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = InnoDB;
-CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = InnoDB;
-CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = InnoDB;
-CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = InnoDB;
-CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = InnoDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t1;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t2;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t4;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t10;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t11;
-drop TABLE if exists t3;
-CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = InnoDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t3.txt' INTO TABLE t3;
-drop database if exists test4;
-CREATE database test4;
-use test4;
-CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
-ENGINE = InnoDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t6;
-use test;
-drop TABLE if exists t7, t8;
-CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB;
-CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t7;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t8;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-drop TABLE if exists t9;
-CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = InnoDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t9.txt' INTO TABLE t9;
-DROP DATABASE IF EXISTS db_datadict;
-CREATE DATABASE db_datadict;
+CREATE DATABASE test2;
+CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
SELECT *,
LEFT( table_comment,
IF(INSTR(table_comment,'InnoDB free') = 0
@@ -394,7 +18,7 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -417,284 +41,8 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t2
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
TABLE_SCHEMA test1
-TABLE_NAME tb2
+TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE InnoDB
VERSION 10
@@ -716,8 +64,8 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test4
-TABLE_NAME t6
+TABLE_SCHEMA test2
+TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
VERSION 10
@@ -738,9 +86,16 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+Tables_in_test2
+t1
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
# Establish connection testuser1 (user=testuser1)
SELECT *,
LEFT( table_comment,
@@ -755,7 +110,7 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -778,53 +133,7 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE InnoDB
@@ -846,228 +155,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
-TABLE_TYPE BASE TABLE
-ENGINE InnoDB
-VERSION 10
-ROW_FORMAT Compact
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
DROP DATABASE test1;
-DROP DATABASE test4;
-DROP TABLE test.t1;
-DROP TABLE test.t2;
-DROP TABLE test.t3;
-DROP TABLE test.t4;
-DROP TABLE test.t7;
-DROP TABLE test.t8;
-DROP TABLE test.t9;
-DROP TABLE test.t10;
-DROP TABLE test.t11;
-DROP TABLE test.tb1;
-DROP TABLE test.tb2;
-DROP TABLE test.tb3;
-DROP TABLE test.tb4;
+DROP DATABASE test2;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_is.result b/mysql-test/suite/funcs_1/r/is_tables_is.result
index 78193155e22..e651047e540 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_is.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_is.result
@@ -1,5 +1,5 @@
-DROP DATABASE IF EXISTS db_datadict;
-CREATE DATABASE db_datadict;
+DROP DATABASE IF EXISTS test1;
+CREATE DATABASE test1;
SELECT *,
LEFT( table_comment,
IF(INSTR(table_comment,'InnoDB free') = 0
@@ -383,7 +383,7 @@ user_comment
Separator -----------------------------------------------------
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
# Establish connection testuser1 (user=testuser1)
SELECT *,
LEFT( table_comment,
@@ -768,4 +768,4 @@ user_comment
Separator -----------------------------------------------------
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
+DROP DATABASE test1;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_memory.result b/mysql-test/suite/funcs_1/r/is_tables_memory.result
index bfc83fa1f92..561bf6e569f 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_memory.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_memory.result
@@ -1,375 +1,11 @@
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
DROP DATABASE IF EXISTS test1;
+DROP DATABASE IF EXISTS test2;
CREATE DATABASE test1;
-USE test;
-drop table if exists tb1 ;
-create table tb1 (
-f1 char,
-f2 char binary,
-f3 char ascii,
-f12 binary,
-f13 tinyint,
-f14 tinyint unsigned,
-f15 tinyint zerofill,
-f16 tinyint unsigned zerofill,
-f17 smallint,
-f18 smallint unsigned,
-f19 smallint zerofill,
-f20 smallint unsigned zerofill,
-f21 mediumint,
-f22 mediumint unsigned,
-f23 mediumint zerofill,
-f24 mediumint unsigned zerofill,
-f25 int,
-f26 int unsigned,
-f27 int zerofill,
-f28 int unsigned zerofill,
-f29 bigint,
-f30 bigint unsigned,
-f31 bigint zerofill,
-f32 bigint unsigned zerofill,
-f33 decimal not null DEFAULT 9.9,
-f34 decimal unsigned not null DEFAULT 9.9,
-f35 decimal zerofill not null DEFAULT 9.9,
-f36 decimal unsigned zerofill not null DEFAULT 9.9,
-f37 decimal (0) not null DEFAULT 9.9,
-f38 decimal (64) not null DEFAULT 9.9,
-f39 decimal (0) unsigned not null DEFAULT 9.9,
-f40 decimal (64) unsigned not null DEFAULT 9.9,
-f41 decimal (0) zerofill not null DEFAULT 9.9,
-f42 decimal (64) zerofill not null DEFAULT 9.9,
-f43 decimal (0) unsigned zerofill not null DEFAULT 9.9,
-f44 decimal (64) unsigned zerofill not null DEFAULT 9.9,
-f45 decimal (0,0) not null DEFAULT 9.9,
-f46 decimal (63,30) not null DEFAULT 9.9,
-f47 decimal (0,0) unsigned not null DEFAULT 9.9,
-f48 decimal (63,30) unsigned not null DEFAULT 9.9,
-f49 decimal (0,0) zerofill not null DEFAULT 9.9,
-f50 decimal (63,30) zerofill not null DEFAULT 9.9,
-f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9,
-f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9,
-f53 numeric not null DEFAULT 99,
-f54 numeric unsigned not null DEFAULT 99,
-f55 numeric zerofill not null DEFAULT 99,
-f56 numeric unsigned zerofill not null DEFAULT 99,
-f57 numeric (0) not null DEFAULT 99,
-f58 numeric (64) not null DEFAULT 99
-) engine = memory;
-Warnings:
-Note 1265 Data truncated for column 'f33' at row 1
-Note 1265 Data truncated for column 'f34' at row 1
-Note 1265 Data truncated for column 'f35' at row 1
-Note 1265 Data truncated for column 'f36' at row 1
-Note 1265 Data truncated for column 'f37' at row 1
-Note 1265 Data truncated for column 'f38' at row 1
-Note 1265 Data truncated for column 'f39' at row 1
-Note 1265 Data truncated for column 'f40' at row 1
-Note 1265 Data truncated for column 'f41' at row 1
-Note 1265 Data truncated for column 'f42' at row 1
-Note 1265 Data truncated for column 'f43' at row 1
-Note 1265 Data truncated for column 'f44' at row 1
-Note 1265 Data truncated for column 'f45' at row 1
-Note 1265 Data truncated for column 'f47' at row 1
-Note 1265 Data truncated for column 'f49' at row 1
-Note 1265 Data truncated for column 'f51' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/memory_tb1.txt'
-into table tb1;
-drop table if exists tb2 ;
-create table tb2 (
-f59 numeric (0) unsigned,
-f60 numeric (64) unsigned,
-f61 numeric (0) zerofill,
-f62 numeric (64) zerofill,
-f63 numeric (0) unsigned zerofill,
-f64 numeric (64) unsigned zerofill,
-f65 numeric (0,0),
-f66 numeric (63,30),
-f67 numeric (0,0) unsigned,
-f68 numeric (63,30) unsigned,
-f69 numeric (0,0) zerofill,
-f70 numeric (63,30) zerofill,
-f71 numeric (0,0) unsigned zerofill,
-f72 numeric (63,30) unsigned zerofill,
-f73 real,
-f74 real unsigned,
-f75 real zerofill,
-f76 real unsigned zerofill,
-f77 double default 7.7,
-f78 double unsigned default 7.7,
-f79 double zerofill default 7.7,
-f80 double unsigned zerofill default 8.8,
-f81 float not null default 8.8,
-f82 float unsigned not null default 8.8,
-f83 float zerofill not null default 8.8,
-f84 float unsigned zerofill not null default 8.8,
-f85 float(0) not null default 8.8,
-f86 float(23) not null default 8.8,
-f87 float(0) unsigned not null default 8.8,
-f88 float(23) unsigned not null default 8.8,
-f89 float(0) zerofill not null default 8.8,
-f90 float(23) zerofill not null default 8.8,
-f91 float(0) unsigned zerofill not null default 8.8,
-f92 float(23) unsigned zerofill not null default 8.8,
-f93 float(24) not null default 8.8,
-f94 float(53) not null default 8.8,
-f95 float(24) unsigned not null default 8.8,
-f96 float(53) unsigned not null default 8.8,
-f97 float(24) zerofill not null default 8.8,
-f98 float(53) zerofill not null default 8.8,
-f99 float(24) unsigned zerofill not null default 8.8,
-f100 float(53) unsigned zerofill not null default 8.8,
-f101 date not null default '2000-01-01',
-f102 time not null default 20,
-f103 datetime not null default '2/2/2',
-f104 timestamp not null default 20001231235959,
-f105 year not null default 2000,
-f106 year(3) not null default 2000,
-f107 year(4) not null default 2000,
-f108 enum("1enum","2enum") not null default "1enum",
-f109 set("1set","2set") not null default "1set"
-) engine = memory;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/memory_tb2.txt'
-into table tb2 ;
-drop table if exists tb3;
-create table tb3 (
-f118 char not null DEFAULT 'a',
-f119 char binary not null DEFAULT b'101',
-f120 char ascii not null DEFAULT b'101',
-f121 char(50),
-f122 char(50),
-f129 binary not null DEFAULT b'101',
-f130 tinyint not null DEFAULT 99,
-f131 tinyint unsigned not null DEFAULT 99,
-f132 tinyint zerofill not null DEFAULT 99,
-f133 tinyint unsigned zerofill not null DEFAULT 99,
-f134 smallint not null DEFAULT 999,
-f135 smallint unsigned not null DEFAULT 999,
-f136 smallint zerofill not null DEFAULT 999,
-f137 smallint unsigned zerofill not null DEFAULT 999,
-f138 mediumint not null DEFAULT 9999,
-f139 mediumint unsigned not null DEFAULT 9999,
-f140 mediumint zerofill not null DEFAULT 9999,
-f141 mediumint unsigned zerofill not null DEFAULT 9999,
-f142 int not null DEFAULT 99999,
-f143 int unsigned not null DEFAULT 99999,
-f144 int zerofill not null DEFAULT 99999,
-f145 int unsigned zerofill not null DEFAULT 99999,
-f146 bigint not null DEFAULT 999999,
-f147 bigint unsigned not null DEFAULT 999999,
-f148 bigint zerofill not null DEFAULT 999999,
-f149 bigint unsigned zerofill not null DEFAULT 999999,
-f150 decimal not null DEFAULT 999.999,
-f151 decimal unsigned not null DEFAULT 999.17,
-f152 decimal zerofill not null DEFAULT 999.999,
-f153 decimal unsigned zerofill,
-f154 decimal (0),
-f155 decimal (64),
-f156 decimal (0) unsigned,
-f157 decimal (64) unsigned,
-f158 decimal (0) zerofill,
-f159 decimal (64) zerofill,
-f160 decimal (0) unsigned zerofill,
-f161 decimal (64) unsigned zerofill,
-f162 decimal (0,0),
-f163 decimal (63,30),
-f164 decimal (0,0) unsigned,
-f165 decimal (63,30) unsigned,
-f166 decimal (0,0) zerofill,
-f167 decimal (63,30) zerofill,
-f168 decimal (0,0) unsigned zerofill,
-f169 decimal (63,30) unsigned zerofill,
-f170 numeric,
-f171 numeric unsigned,
-f172 numeric zerofill,
-f173 numeric unsigned zerofill,
-f174 numeric (0),
-f175 numeric (64)
-) engine = memory;
-Warnings:
-Note 1265 Data truncated for column 'f150' at row 1
-Note 1265 Data truncated for column 'f151' at row 1
-Note 1265 Data truncated for column 'f152' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/memory_tb3.txt'
-into table tb3;
-drop table if exists tb4 ;
-create table tb4 (
-f176 numeric (0) unsigned not null DEFAULT 9,
-f177 numeric (64) unsigned not null DEFAULT 9,
-f178 numeric (0) zerofill not null DEFAULT 9,
-f179 numeric (64) zerofill not null DEFAULT 9,
-f180 numeric (0) unsigned zerofill not null DEFAULT 9,
-f181 numeric (64) unsigned zerofill not null DEFAULT 9,
-f182 numeric (0,0) not null DEFAULT 9,
-f183 numeric (63,30) not null DEFAULT 9,
-f184 numeric (0,0) unsigned not null DEFAULT 9,
-f185 numeric (63,30) unsigned not null DEFAULT 9,
-f186 numeric (0,0) zerofill not null DEFAULT 9,
-f187 numeric (63,30) zerofill not null DEFAULT 9,
-f188 numeric (0,0) unsigned zerofill not null DEFAULT 9,
-f189 numeric (63,30) unsigned zerofill not null DEFAULT 9,
-f190 real not null DEFAULT 88.8,
-f191 real unsigned not null DEFAULT 88.8,
-f192 real zerofill not null DEFAULT 88.8,
-f193 real unsigned zerofill not null DEFAULT 88.8,
-f194 double not null DEFAULT 55.5,
-f195 double unsigned not null DEFAULT 55.5,
-f196 double zerofill not null DEFAULT 55.5,
-f197 double unsigned zerofill not null DEFAULT 55.5,
-f198 float,
-f199 float unsigned,
-f200 float zerofill,
-f201 float unsigned zerofill,
-f202 float(0),
-f203 float(23),
-f204 float(0) unsigned,
-f205 float(23) unsigned,
-f206 float(0) zerofill,
-f207 float(23) zerofill,
-f208 float(0) unsigned zerofill,
-f209 float(23) unsigned zerofill,
-f210 float(24),
-f211 float(53),
-f212 float(24) unsigned,
-f213 float(53) unsigned,
-f214 float(24) zerofill,
-f215 float(53) zerofill,
-f216 float(24) unsigned zerofill,
-f217 float(53) unsigned zerofill,
-f218 date,
-f219 time,
-f220 datetime,
-f221 timestamp,
-f222 year,
-f223 year(3),
-f224 year(4),
-f225 enum("1enum","2enum"),
-f226 set("1set","2set"),
-f236 char(95) unicode,
-f241 char(255) unicode,
-f237 char(130) binary,
-f238 varchar(25000) binary,
-f239 varbinary(0),
-f240 varchar(1200) unicode
-) engine = memory;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/memory_tb4.txt'
-into table tb4;
-USE test1;
-drop table if exists tb2 ;
-create table tb2 (
-f59 numeric (0) unsigned,
-f60 numeric (64) unsigned,
-f61 numeric (0) zerofill,
-f62 numeric (64) zerofill,
-f63 numeric (0) unsigned zerofill,
-f64 numeric (64) unsigned zerofill,
-f65 numeric (0,0),
-f66 numeric (63,30),
-f67 numeric (0,0) unsigned,
-f68 numeric (63,30) unsigned,
-f69 numeric (0,0) zerofill,
-f70 numeric (63,30) zerofill,
-f71 numeric (0,0) unsigned zerofill,
-f72 numeric (63,30) unsigned zerofill,
-f73 real,
-f74 real unsigned,
-f75 real zerofill,
-f76 real unsigned zerofill,
-f77 double default 7.7,
-f78 double unsigned default 7.7,
-f79 double zerofill default 7.7,
-f80 double unsigned zerofill default 8.8,
-f81 float not null default 8.8,
-f82 float unsigned not null default 8.8,
-f83 float zerofill not null default 8.8,
-f84 float unsigned zerofill not null default 8.8,
-f85 float(0) not null default 8.8,
-f86 float(23) not null default 8.8,
-f87 float(0) unsigned not null default 8.8,
-f88 float(23) unsigned not null default 8.8,
-f89 float(0) zerofill not null default 8.8,
-f90 float(23) zerofill not null default 8.8,
-f91 float(0) unsigned zerofill not null default 8.8,
-f92 float(23) unsigned zerofill not null default 8.8,
-f93 float(24) not null default 8.8,
-f94 float(53) not null default 8.8,
-f95 float(24) unsigned not null default 8.8,
-f96 float(53) unsigned not null default 8.8,
-f97 float(24) zerofill not null default 8.8,
-f98 float(53) zerofill not null default 8.8,
-f99 float(24) unsigned zerofill not null default 8.8,
-f100 float(53) unsigned zerofill not null default 8.8,
-f101 date not null default '2000-01-01',
-f102 time not null default 20,
-f103 datetime not null default '2/2/2',
-f104 timestamp not null default 20001231235959,
-f105 year not null default 2000,
-f106 year(3) not null default 2000,
-f107 year(4) not null default 2000,
-f108 enum("1enum","2enum") not null default "1enum",
-f109 set("1set","2set") not null default "1set"
-) engine = memory;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/memory_tb2.txt'
-into table tb2 ;
-USE test;
-USE test;
-DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
-CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MEMORY;
-CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MEMORY;
-CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MEMORY;
-CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MEMORY;
-CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MEMORY;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t1;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t2;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t4;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t10;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t11;
-drop TABLE if exists t3;
-CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MEMORY;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t3.txt' INTO TABLE t3;
-drop database if exists test4;
-CREATE database test4;
-use test4;
-CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
-ENGINE = MEMORY;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t6;
-use test;
-drop TABLE if exists t7, t8;
-CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY;
-CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t7;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t8;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-drop TABLE if exists t9;
-CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MEMORY;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t9.txt' INTO TABLE t9;
-DROP DATABASE IF EXISTS db_datadict;
-CREATE DATABASE db_datadict;
+CREATE DATABASE test2;
+CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
SELECT *,
LEFT( table_comment,
IF(INSTR(table_comment,'InnoDB free') = 0
@@ -383,7 +19,7 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MEMORY
@@ -406,284 +42,8 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t2
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
TABLE_SCHEMA test1
-TABLE_NAME tb2
+TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE MEMORY
VERSION 10
@@ -705,8 +65,8 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test4
-TABLE_NAME t6
+TABLE_SCHEMA test2
+TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MEMORY
VERSION 10
@@ -727,9 +87,16 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+Tables_in_test2
+t1
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
# Establish connection testuser1 (user=testuser1)
SELECT *,
LEFT( table_comment,
@@ -744,7 +111,7 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MEMORY
@@ -767,53 +134,7 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE MEMORY
@@ -835,228 +156,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
-TABLE_TYPE BASE TABLE
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
DROP DATABASE test1;
-DROP DATABASE test4;
-DROP TABLE test.t1;
-DROP TABLE test.t2;
-DROP TABLE test.t3;
-DROP TABLE test.t4;
-DROP TABLE test.t7;
-DROP TABLE test.t8;
-DROP TABLE test.t9;
-DROP TABLE test.t10;
-DROP TABLE test.t11;
-DROP TABLE test.tb1;
-DROP TABLE test.tb2;
-DROP TABLE test.tb3;
-DROP TABLE test.tb4;
+DROP DATABASE test2;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_myisam.result b/mysql-test/suite/funcs_1/r/is_tables_myisam.result
index 99d34818d98..0f476309303 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_myisam.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_myisam.result
@@ -1,415 +1,11 @@
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
DROP DATABASE IF EXISTS test1;
+DROP DATABASE IF EXISTS test2;
CREATE DATABASE test1;
-USE test;
-drop table if exists tb1 ;
-create table tb1 (
-f1 char,
-f2 char binary,
-f3 char ascii,
-f4 tinytext unicode,
-f5 text,
-f6 mediumtext,
-f7 longtext,
-f8 tinyblob,
-f9 blob,
-f10 mediumblob,
-f11 longblob,
-f12 binary,
-f13 tinyint,
-f14 tinyint unsigned,
-f15 tinyint zerofill,
-f16 tinyint unsigned zerofill,
-f17 smallint,
-f18 smallint unsigned,
-f19 smallint zerofill,
-f20 smallint unsigned zerofill,
-f21 mediumint,
-f22 mediumint unsigned,
-f23 mediumint zerofill,
-f24 mediumint unsigned zerofill,
-f25 int,
-f26 int unsigned,
-f27 int zerofill,
-f28 int unsigned zerofill,
-f29 bigint,
-f30 bigint unsigned,
-f31 bigint zerofill,
-f32 bigint unsigned zerofill,
-f33 decimal not null DEFAULT 9.9,
-f34 decimal unsigned not null DEFAULT 9.9,
-f35 decimal zerofill not null DEFAULT 9.9,
-f36 decimal unsigned zerofill not null DEFAULT 9.9,
-f37 decimal (0) not null DEFAULT 9.9,
-f38 decimal (64) not null DEFAULT 9.9,
-f39 decimal (0) unsigned not null DEFAULT 9.9,
-f40 decimal (64) unsigned not null DEFAULT 9.9,
-f41 decimal (0) zerofill not null DEFAULT 9.9,
-f42 decimal (64) zerofill not null DEFAULT 9.9,
-f43 decimal (0) unsigned zerofill not null DEFAULT 9.9,
-f44 decimal (64) unsigned zerofill not null DEFAULT 9.9,
-f45 decimal (0,0) not null DEFAULT 9.9,
-f46 decimal (63,30) not null DEFAULT 9.9,
-f47 decimal (0,0) unsigned not null DEFAULT 9.9,
-f48 decimal (63,30) unsigned not null DEFAULT 9.9,
-f49 decimal (0,0) zerofill not null DEFAULT 9.9,
-f50 decimal (63,30) zerofill not null DEFAULT 9.9,
-f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9,
-f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9,
-f53 numeric not null DEFAULT 99,
-f54 numeric unsigned not null DEFAULT 99,
-f55 numeric zerofill not null DEFAULT 99,
-f56 numeric unsigned zerofill not null DEFAULT 99,
-f57 numeric (0) not null DEFAULT 99,
-f58 numeric (64) not null DEFAULT 99
-) engine = myisam;
-Warnings:
-Note 1265 Data truncated for column 'f33' at row 1
-Note 1265 Data truncated for column 'f34' at row 1
-Note 1265 Data truncated for column 'f35' at row 1
-Note 1265 Data truncated for column 'f36' at row 1
-Note 1265 Data truncated for column 'f37' at row 1
-Note 1265 Data truncated for column 'f38' at row 1
-Note 1265 Data truncated for column 'f39' at row 1
-Note 1265 Data truncated for column 'f40' at row 1
-Note 1265 Data truncated for column 'f41' at row 1
-Note 1265 Data truncated for column 'f42' at row 1
-Note 1265 Data truncated for column 'f43' at row 1
-Note 1265 Data truncated for column 'f44' at row 1
-Note 1265 Data truncated for column 'f45' at row 1
-Note 1265 Data truncated for column 'f47' at row 1
-Note 1265 Data truncated for column 'f49' at row 1
-Note 1265 Data truncated for column 'f51' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb1.txt'
-into table tb1;
-drop table if exists tb2 ;
-create table tb2 (
-f59 numeric (0) unsigned,
-f60 numeric (64) unsigned,
-f61 numeric (0) zerofill,
-f62 numeric (64) zerofill,
-f63 numeric (0) unsigned zerofill,
-f64 numeric (64) unsigned zerofill,
-f65 numeric (0,0),
-f66 numeric (63,30),
-f67 numeric (0,0) unsigned,
-f68 numeric (63,30) unsigned,
-f69 numeric (0,0) zerofill,
-f70 numeric (63,30) zerofill,
-f71 numeric (0,0) unsigned zerofill,
-f72 numeric (63,30) unsigned zerofill,
-f73 real,
-f74 real unsigned,
-f75 real zerofill,
-f76 real unsigned zerofill,
-f77 double default 7.7,
-f78 double unsigned default 7.7,
-f79 double zerofill default 7.7,
-f80 double unsigned zerofill default 8.8,
-f81 float not null default 8.8,
-f82 float unsigned not null default 8.8,
-f83 float zerofill not null default 8.8,
-f84 float unsigned zerofill not null default 8.8,
-f85 float(0) not null default 8.8,
-f86 float(23) not null default 8.8,
-f87 float(0) unsigned not null default 8.8,
-f88 float(23) unsigned not null default 8.8,
-f89 float(0) zerofill not null default 8.8,
-f90 float(23) zerofill not null default 8.8,
-f91 float(0) unsigned zerofill not null default 8.8,
-f92 float(23) unsigned zerofill not null default 8.8,
-f93 float(24) not null default 8.8,
-f94 float(53) not null default 8.8,
-f95 float(24) unsigned not null default 8.8,
-f96 float(53) unsigned not null default 8.8,
-f97 float(24) zerofill not null default 8.8,
-f98 float(53) zerofill not null default 8.8,
-f99 float(24) unsigned zerofill not null default 8.8,
-f100 float(53) unsigned zerofill not null default 8.8,
-f101 date not null default '2000-01-01',
-f102 time not null default 20,
-f103 datetime not null default '2/2/2',
-f104 timestamp not null default 20001231235959,
-f105 year not null default 2000,
-f106 year(3) not null default 2000,
-f107 year(4) not null default 2000,
-f108 enum("1enum","2enum") not null default "1enum",
-f109 set("1set","2set") not null default "1set",
-f110 VARBINARY(64) null,
-f111 VARBINARY(27) null ,
-f112 VARBINARY(64) null ,
-f113 VARBINARY(192) null ,
-f114 VARBINARY(192) ,
-f115 VARBINARY(27) null ,
-f116 VARBINARY(64) null,
-f117 VARBINARY(192) null
-) engine = myisam;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb2.txt'
-into table tb2;
-drop table if exists tb3 ;
-create table tb3 (
-f118 char not null DEFAULT 'a',
-f119 char binary not null DEFAULT b'101',
-f120 char ascii not null DEFAULT b'101',
-f121 tinytext,
-f122 text,
-f123 mediumtext,
-f124 longtext unicode,
-f125 tinyblob,
-f126 blob,
-f127 mediumblob,
-f128 longblob,
-f129 binary not null DEFAULT b'101',
-f130 tinyint not null DEFAULT 99,
-f131 tinyint unsigned not null DEFAULT 99,
-f132 tinyint zerofill not null DEFAULT 99,
-f133 tinyint unsigned zerofill not null DEFAULT 99,
-f134 smallint not null DEFAULT 999,
-f135 smallint unsigned not null DEFAULT 999,
-f136 smallint zerofill not null DEFAULT 999,
-f137 smallint unsigned zerofill not null DEFAULT 999,
-f138 mediumint not null DEFAULT 9999,
-f139 mediumint unsigned not null DEFAULT 9999,
-f140 mediumint zerofill not null DEFAULT 9999,
-f141 mediumint unsigned zerofill not null DEFAULT 9999,
-f142 int not null DEFAULT 99999,
-f143 int unsigned not null DEFAULT 99999,
-f144 int zerofill not null DEFAULT 99999,
-f145 int unsigned zerofill not null DEFAULT 99999,
-f146 bigint not null DEFAULT 999999,
-f147 bigint unsigned not null DEFAULT 999999,
-f148 bigint zerofill not null DEFAULT 999999,
-f149 bigint unsigned zerofill not null DEFAULT 999999,
-f150 decimal not null DEFAULT 999.999,
-f151 decimal unsigned not null DEFAULT 999.17,
-f152 decimal zerofill not null DEFAULT 999.999,
-f153 decimal unsigned zerofill,
-f154 decimal (0),
-f155 decimal (64),
-f156 decimal (0) unsigned,
-f157 decimal (64) unsigned,
-f158 decimal (0) zerofill,
-f159 decimal (64) zerofill,
-f160 decimal (0) unsigned zerofill,
-f161 decimal (64) unsigned zerofill,
-f162 decimal (0,0),
-f163 decimal (63,30),
-f164 decimal (0,0) unsigned,
-f165 decimal (63,30) unsigned,
-f166 decimal (0,0) zerofill,
-f167 decimal (63,30) zerofill,
-f168 decimal (0,0) unsigned zerofill,
-f169 decimal (63,30) unsigned zerofill,
-f170 numeric,
-f171 numeric unsigned,
-f172 numeric zerofill,
-f173 numeric unsigned zerofill,
-f174 numeric (0),
-f175 numeric (64)
-) Engine = myisam;
-Warnings:
-Note 1265 Data truncated for column 'f150' at row 1
-Note 1265 Data truncated for column 'f151' at row 1
-Note 1265 Data truncated for column 'f152' at row 1
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb3.txt'
-into table tb3;
-drop table if exists tb4 ;
-create table tb4 (
-f176 numeric (0) unsigned not null DEFAULT 9,
-f177 numeric (64) unsigned not null DEFAULT 9,
-f178 numeric (0) zerofill not null DEFAULT 9,
-f179 numeric (64) zerofill not null DEFAULT 9,
-f180 numeric (0) unsigned zerofill not null DEFAULT 9,
-f181 numeric (64) unsigned zerofill not null DEFAULT 9,
-f182 numeric (0,0) not null DEFAULT 9,
-f183 numeric (63,30) not null DEFAULT 9,
-f184 numeric (0,0) unsigned not null DEFAULT 9,
-f185 numeric (63,30) unsigned not null DEFAULT 9,
-f186 numeric (0,0) zerofill not null DEFAULT 9,
-f187 numeric (63,30) zerofill not null DEFAULT 9,
-f188 numeric (0,0) unsigned zerofill not null DEFAULT 9,
-f189 numeric (63,30) unsigned zerofill not null DEFAULT 9,
-f190 real not null DEFAULT 88.8,
-f191 real unsigned not null DEFAULT 88.8,
-f192 real zerofill not null DEFAULT 88.8,
-f193 real unsigned zerofill not null DEFAULT 88.8,
-f194 double not null DEFAULT 55.5,
-f195 double unsigned not null DEFAULT 55.5,
-f196 double zerofill not null DEFAULT 55.5,
-f197 double unsigned zerofill not null DEFAULT 55.5,
-f198 float,
-f199 float unsigned,
-f200 float zerofill,
-f201 float unsigned zerofill,
-f202 float(0),
-f203 float(23),
-f204 float(0) unsigned,
-f205 float(23) unsigned,
-f206 float(0) zerofill,
-f207 float(23) zerofill,
-f208 float(0) unsigned zerofill,
-f209 float(23) unsigned zerofill,
-f210 float(24),
-f211 float(53),
-f212 float(24) unsigned,
-f213 float(53) unsigned,
-f214 float(24) zerofill,
-f215 float(53) zerofill,
-f216 float(24) unsigned zerofill,
-f217 float(53) unsigned zerofill,
-f218 date,
-f219 time,
-f220 datetime,
-f221 timestamp,
-f222 year,
-f223 year(3),
-f224 year(4),
-f225 enum("1enum","2enum"),
-f226 set("1set","2set"),
-f227 VARBINARY(64),
-f228 VARBINARY(27),
-f229 VARBINARY(64),
-f230 VARBINARY(192),
-f231 VARBINARY(192),
-f232 VARBINARY(27),
-f233 VARBINARY(64),
-f234 VARBINARY(192),
-f235 char(255) unicode,
-f236 char(60) ascii,
-f237 char(255) binary,
-f238 varchar(0) binary,
-f239 varbinary(1000),
-f240 varchar(120) unicode,
-f241 char(100) unicode,
-f242 bit(30)
-) engine = myisam;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb4.txt'
-into table tb4;
-USE test1;
-drop table if exists tb2 ;
-create table tb2 (
-f59 numeric (0) unsigned,
-f60 numeric (64) unsigned,
-f61 numeric (0) zerofill,
-f62 numeric (64) zerofill,
-f63 numeric (0) unsigned zerofill,
-f64 numeric (64) unsigned zerofill,
-f65 numeric (0,0),
-f66 numeric (63,30),
-f67 numeric (0,0) unsigned,
-f68 numeric (63,30) unsigned,
-f69 numeric (0,0) zerofill,
-f70 numeric (63,30) zerofill,
-f71 numeric (0,0) unsigned zerofill,
-f72 numeric (63,30) unsigned zerofill,
-f73 real,
-f74 real unsigned,
-f75 real zerofill,
-f76 real unsigned zerofill,
-f77 double default 7.7,
-f78 double unsigned default 7.7,
-f79 double zerofill default 7.7,
-f80 double unsigned zerofill default 8.8,
-f81 float not null default 8.8,
-f82 float unsigned not null default 8.8,
-f83 float zerofill not null default 8.8,
-f84 float unsigned zerofill not null default 8.8,
-f85 float(0) not null default 8.8,
-f86 float(23) not null default 8.8,
-f87 float(0) unsigned not null default 8.8,
-f88 float(23) unsigned not null default 8.8,
-f89 float(0) zerofill not null default 8.8,
-f90 float(23) zerofill not null default 8.8,
-f91 float(0) unsigned zerofill not null default 8.8,
-f92 float(23) unsigned zerofill not null default 8.8,
-f93 float(24) not null default 8.8,
-f94 float(53) not null default 8.8,
-f95 float(24) unsigned not null default 8.8,
-f96 float(53) unsigned not null default 8.8,
-f97 float(24) zerofill not null default 8.8,
-f98 float(53) zerofill not null default 8.8,
-f99 float(24) unsigned zerofill not null default 8.8,
-f100 float(53) unsigned zerofill not null default 8.8,
-f101 date not null default '2000-01-01',
-f102 time not null default 20,
-f103 datetime not null default '2/2/2',
-f104 timestamp not null default 20001231235959,
-f105 year not null default 2000,
-f106 year(3) not null default 2000,
-f107 year(4) not null default 2000,
-f108 enum("1enum","2enum") not null default "1enum",
-f109 set("1set","2set") not null default "1set",
-f110 VARBINARY(64) null,
-f111 VARBINARY(27) null ,
-f112 VARBINARY(64) null ,
-f113 VARBINARY(192) null ,
-f114 VARBINARY(192) ,
-f115 VARBINARY(27) null ,
-f116 VARBINARY(64) null,
-f117 VARBINARY(192) null
-) engine = myisam;
-load data infile '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/myisam_tb2.txt'
-into table tb2;
-USE test;
-USE test;
-DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
-CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MyISAM;
-CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MyISAM;
-CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MyISAM;
-CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MyISAM;
-CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = MyISAM;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t1;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t2;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t4;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t10;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t11;
-drop TABLE if exists t3;
-CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MyISAM;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t3.txt' INTO TABLE t3;
-drop database if exists test4;
-CREATE database test4;
-use test4;
-CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
-ENGINE = MyISAM;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t6;
-use test;
-drop TABLE if exists t7, t8;
-CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM;
-CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t7;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t8;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-drop TABLE if exists t9;
-CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MyISAM;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t9.txt' INTO TABLE t9;
-DROP DATABASE IF EXISTS db_datadict;
-CREATE DATABASE db_datadict;
+CREATE DATABASE test2;
+CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
SELECT *,
LEFT( table_comment,
IF(INSTR(table_comment,'InnoDB free') = 0
@@ -423,287 +19,11 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t2
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Dynamic
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Dynamic
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Dynamic
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
@@ -723,7 +43,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA test1
-TABLE_NAME tb2
+TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
@@ -745,12 +65,12 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test4
-TABLE_NAME t6
+TABLE_SCHEMA test2
+TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -767,9 +87,16 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+Tables_in_test2
+t1
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
# Establish connection testuser1 (user=testuser1)
SELECT *,
LEFT( table_comment,
@@ -784,218 +111,11 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t2
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
@@ -1014,54 +134,8 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Dynamic
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE MyISAM
-VERSION 10
-ROW_FORMAT Dynamic
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
+TABLE_SCHEMA test1
+TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE MyISAM
VERSION 10
@@ -1082,21 +156,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
DROP DATABASE test1;
-DROP DATABASE test4;
-DROP TABLE test.t1;
-DROP TABLE test.t2;
-DROP TABLE test.t3;
-DROP TABLE test.t4;
-DROP TABLE test.t7;
-DROP TABLE test.t8;
-DROP TABLE test.t9;
-DROP TABLE test.t10;
-DROP TABLE test.t11;
-DROP TABLE test.tb1;
-DROP TABLE test.tb2;
-DROP TABLE test.tb3;
-DROP TABLE test.tb4;
+DROP DATABASE test2;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
new file mode 100644
index 00000000000..25c482bb73c
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
@@ -0,0 +1,192 @@
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+DROP DATABASE IF EXISTS test1;
+DROP DATABASE IF EXISTS test2;
+CREATE DATABASE test1;
+CREATE DATABASE test2;
+CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+SELECT *,
+LEFT( table_comment,
+IF(INSTR(table_comment,'InnoDB free') = 0
+AND INSTR(table_comment,'number_of_replicas') = 0,
+LENGTH(table_comment),
+INSTR(table_comment,'InnoDB free')
++ INSTR(table_comment,'number_of_replicas') - 1))
+AS "user_comment",
+'-----------------------------------------------------' AS "Separator"
+FROM information_schema.tables
+WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
+ORDER BY table_schema,table_name;
+TABLE_CATALOG NULL
+TABLE_SCHEMA test1
+TABLE_NAME t1
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA test1
+TABLE_NAME t2
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA test2
+TABLE_NAME t1
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+Tables_in_test2
+t1
+DROP USER testuser1@localhost;
+CREATE USER testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
+# Establish connection testuser1 (user=testuser1)
+SELECT *,
+LEFT( table_comment,
+IF(INSTR(table_comment,'InnoDB free') = 0
+AND INSTR(table_comment,'number_of_replicas') = 0,
+LENGTH(table_comment),
+INSTR(table_comment,'InnoDB free')
++ INSTR(table_comment,'number_of_replicas') - 1))
+AS "user_comment",
+'-----------------------------------------------------' AS "Separator"
+FROM information_schema.tables
+WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
+ORDER BY table_schema,table_name;
+TABLE_CATALOG NULL
+TABLE_SCHEMA test1
+TABLE_NAME t1
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA test1
+TABLE_NAME t2
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA test2
+TABLE_NAME t1
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION latin1_swedish_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+Tables_in_test2
+t1
+# Switch to connection default and close connection testuser1
+DROP USER testuser1@localhost;
+DROP DATABASE test1;
+DROP DATABASE test2;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_mysql.result b/mysql-test/suite/funcs_1/r/is_tables_mysql.result
index d407f224b7d..49a4267d170 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_mysql.result
@@ -1,5 +1,5 @@
-DROP DATABASE IF EXISTS db_datadict;
-CREATE DATABASE db_datadict;
+DROP DATABASE IF EXISTS test1;
+CREATE DATABASE test1;
SELECT *,
LEFT( table_comment,
IF(INSTR(table_comment,'InnoDB free') = 0
@@ -405,7 +405,7 @@ user_comment Users and global privileges
Separator -----------------------------------------------------
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
# Establish connection testuser1 (user=testuser1)
SELECT *,
LEFT( table_comment,
@@ -421,4 +421,4 @@ WHERE table_schema = 'mysql'
ORDER BY table_schema,table_name;
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
+DROP DATABASE test1;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
new file mode 100644
index 00000000000..e5416555189
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
@@ -0,0 +1,815 @@
+DROP DATABASE IF EXISTS test1;
+CREATE DATABASE test1;
+SELECT *,
+LEFT( table_comment,
+IF(INSTR(table_comment,'InnoDB free') = 0
+AND INSTR(table_comment,'number_of_replicas') = 0,
+LENGTH(table_comment),
+INSTR(table_comment,'InnoDB free')
++ INSTR(table_comment,'number_of_replicas') - 1))
+AS "user_comment",
+'-----------------------------------------------------' AS "Separator"
+FROM information_schema.tables
+WHERE table_schema = 'mysql'
+ORDER BY table_schema,table_name;
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME columns_priv
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Column privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME db
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Database privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME func
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment User defined functions
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_category
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment help categories
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_keyword
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment help keywords
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_relation
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment keyword-topic relation
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_topic
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment help topics
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME host
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Host privileges; Merged with database privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME proc
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Stored Procedures
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME procs_priv
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Procedure privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME tables_priv
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Table privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT 6
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zones
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_leap_second
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Leap seconds information for time zones
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_name
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zone names
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_transition
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zone transitions
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_transition_type
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zone transition types
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME user
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Users and global privileges
+Separator -----------------------------------------------------
+DROP USER testuser1@localhost;
+CREATE USER testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
+# Establish connection testuser1 (user=testuser1)
+SELECT *,
+LEFT( table_comment,
+IF(INSTR(table_comment,'InnoDB free') = 0
+AND INSTR(table_comment,'number_of_replicas') = 0,
+LENGTH(table_comment),
+INSTR(table_comment,'InnoDB free')
++ INSTR(table_comment,'number_of_replicas') - 1))
+AS "user_comment",
+'-----------------------------------------------------' AS "Separator"
+FROM information_schema.tables
+WHERE table_schema = 'mysql'
+ORDER BY table_schema,table_name;
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME columns_priv
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Column privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME db
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Database privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME func
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment User defined functions
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_category
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment help categories
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_keyword
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment help keywords
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_relation
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment keyword-topic relation
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME help_topic
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment help topics
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME host
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Host privileges; Merged with database privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME proc
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Stored Procedures
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME procs_priv
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Procedure privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME tables_priv
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Table privileges
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT 6
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zones
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_leap_second
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Leap seconds information for time zones
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_name
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zone names
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_transition
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zone transitions
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME time_zone_transition_type
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Time zone transition types
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA mysql
+TABLE_NAME user
+TABLE_TYPE BASE TABLE
+ENGINE MyISAM
+VERSION 10
+ROW_FORMAT Dynamic
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_bin
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment Users and global privileges
+Separator -----------------------------------------------------
+# Switch to connection default and close connection testuser1
+DROP USER testuser1@localhost;
+DROP DATABASE test1;
diff --git a/mysql-test/suite/funcs_1/r/is_tables_ndb.result b/mysql-test/suite/funcs_1/r/is_tables_ndb.result
index 467f4566912..4ce150353c1 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_ndb.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_ndb.result
@@ -1,66 +1,10 @@
DROP DATABASE IF EXISTS test1;
+DROP DATABASE IF EXISTS test2;
CREATE DATABASE test1;
-USE test;
-USE test;
-USE test;
-DROP TABLE IF EXISTS t1, t2, t4, t10, t11;
-CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = NDB;
-CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = NDB;
-CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = NDB;
-CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = NDB;
-CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int)
-ENGINE = NDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t1;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t2;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t4;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t10;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t11;
-drop TABLE if exists t3;
-CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = NDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t3.txt' INTO TABLE t3;
-drop database if exists test4;
-CREATE database test4;
-use test4;
-CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int)
-ENGINE = NDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t4.txt' INTO TABLE t6;
-use test;
-drop TABLE if exists t7, t8;
-CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = NDB;
-CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = NDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t7;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t7.txt' INTO TABLE t8;
-Warnings:
-Warning 1265 Data truncated for column 'f3' at row 1
-Warning 1265 Data truncated for column 'f3' at row 2
-Warning 1265 Data truncated for column 'f3' at row 3
-Warning 1265 Data truncated for column 'f3' at row 4
-Warning 1265 Data truncated for column 'f3' at row 5
-Warning 1265 Data truncated for column 'f3' at row 6
-Warning 1265 Data truncated for column 'f3' at row 7
-Warning 1265 Data truncated for column 'f3' at row 8
-Warning 1265 Data truncated for column 'f3' at row 9
-Warning 1265 Data truncated for column 'f3' at row 10
-drop TABLE if exists t9;
-CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = NDB;
-LOAD DATA INFILE '<MYSQLTEST_VARDIR>/std_data_ln/funcs_1/t9.txt' INTO TABLE t9;
-DROP DATABASE IF EXISTS db_datadict;
-CREATE DATABASE db_datadict;
+CREATE DATABASE test2;
+CREATE TABLE test1.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test1.t2 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
+CREATE TABLE test2.t1 (f1 VARCHAR(20)) ENGINE = <engine_to_be_used>;
SELECT *,
LEFT( table_comment,
IF(INSTR(table_comment,'InnoDB free') = 0
@@ -74,12 +18,12 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE ndbcluster
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -97,81 +41,12 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE ndbcluster
VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -189,104 +64,12 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test4
-TABLE_NAME t6
+TABLE_SCHEMA test2
+TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE ndbcluster
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -303,9 +86,16 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+Tables_in_test2
+t1
DROP USER testuser1@localhost;
CREATE USER testuser1@localhost;
-GRANT SELECT ON db_datadict.* TO testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
# Establish connection testuser1 (user=testuser1)
SELECT *,
LEFT( table_comment,
@@ -320,12 +110,12 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE ndbcluster
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -343,196 +133,12 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE ndbcluster
VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test4
-TABLE_NAME t6
-TABLE_TYPE BASE TABLE
-ENGINE ndbcluster
-VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT Dynamic
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -549,17 +155,13 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+SHOW TABLES FROM test1;
+Tables_in_test1
+t1
+t2
+SHOW TABLES FROM test2;
+ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'test2'
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
-DROP DATABASE db_datadict;
DROP DATABASE test1;
-DROP DATABASE test4;
-DROP TABLE test.t1;
-DROP TABLE test.t2;
-DROP TABLE test.t3;
-DROP TABLE test.t4;
-DROP TABLE test.t7;
-DROP TABLE test.t8;
-DROP TABLE test.t9;
-DROP TABLE test.t10;
-DROP TABLE test.t11;
+DROP DATABASE test2;
diff --git a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
new file mode 100644
index 00000000000..5e0c7601da7
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
@@ -0,0 +1,208 @@
+SHOW TABLES FROM information_schema LIKE 'TRIGGERS';
+Tables_in_information_schema (TRIGGERS)
+TRIGGERS
+#######################################################################
+# 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.TRIGGERS;
+CREATE PROCEDURE test.p1() SELECT * FROM information_schema.TRIGGERS;
+CREATE FUNCTION test.f1() returns BIGINT
+BEGIN
+DECLARE counter BIGINT DEFAULT NULL;
+SELECT COUNT(*) INTO counter FROM information_schema.TRIGGERS;
+RETURN counter;
+END//
+# Attention: The printing of the next result sets is disabled.
+SELECT * FROM information_schema.TRIGGERS;
+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.12.1: INFORMATION_SCHEMA.TRIGGERS layout
+#########################################################################
+DESCRIBE information_schema.TRIGGERS;
+Field Type Null Key Default Extra
+TRIGGER_CATALOG varchar(512) YES NULL
+TRIGGER_SCHEMA varchar(64) NO
+TRIGGER_NAME varchar(64) NO
+EVENT_MANIPULATION varchar(6) NO
+EVENT_OBJECT_CATALOG varchar(512) YES NULL
+EVENT_OBJECT_SCHEMA varchar(64) NO
+EVENT_OBJECT_TABLE varchar(64) NO
+ACTION_ORDER bigint(4) NO 0
+ACTION_CONDITION longtext YES NULL
+ACTION_STATEMENT longtext NO NULL
+ACTION_ORIENTATION varchar(9) NO
+ACTION_TIMING varchar(6) NO
+ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
+ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
+ACTION_REFERENCE_OLD_ROW varchar(3) NO
+ACTION_REFERENCE_NEW_ROW varchar(3) NO
+CREATED datetime YES NULL
+SQL_MODE longtext NO NULL
+DEFINER longtext NO NULL
+SHOW CREATE TABLE information_schema.TRIGGERS;
+Table Create Table
+TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
+ `TRIGGER_CATALOG` varchar(512) default NULL,
+ `TRIGGER_SCHEMA` varchar(64) NOT NULL default '',
+ `TRIGGER_NAME` varchar(64) NOT NULL default '',
+ `EVENT_MANIPULATION` varchar(6) NOT NULL default '',
+ `EVENT_OBJECT_CATALOG` varchar(512) default NULL,
+ `EVENT_OBJECT_SCHEMA` varchar(64) NOT NULL default '',
+ `EVENT_OBJECT_TABLE` varchar(64) NOT NULL default '',
+ `ACTION_ORDER` bigint(4) NOT NULL default '0',
+ `ACTION_CONDITION` longtext,
+ `ACTION_STATEMENT` longtext NOT NULL,
+ `ACTION_ORIENTATION` varchar(9) NOT NULL default '',
+ `ACTION_TIMING` varchar(6) NOT NULL default '',
+ `ACTION_REFERENCE_OLD_TABLE` varchar(64) default NULL,
+ `ACTION_REFERENCE_NEW_TABLE` varchar(64) default NULL,
+ `ACTION_REFERENCE_OLD_ROW` varchar(3) NOT NULL default '',
+ `ACTION_REFERENCE_NEW_ROW` varchar(3) NOT NULL default '',
+ `CREATED` datetime default NULL,
+ `SQL_MODE` longtext NOT NULL,
+ `DEFINER` longtext NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8
+SHOW COLUMNS FROM information_schema.TRIGGERS;
+Field Type Null Key Default Extra
+TRIGGER_CATALOG varchar(512) YES NULL
+TRIGGER_SCHEMA varchar(64) NO
+TRIGGER_NAME varchar(64) NO
+EVENT_MANIPULATION varchar(6) NO
+EVENT_OBJECT_CATALOG varchar(512) YES NULL
+EVENT_OBJECT_SCHEMA varchar(64) NO
+EVENT_OBJECT_TABLE varchar(64) NO
+ACTION_ORDER bigint(4) NO 0
+ACTION_CONDITION longtext YES NULL
+ACTION_STATEMENT longtext NO NULL
+ACTION_ORIENTATION varchar(9) NO
+ACTION_TIMING varchar(6) NO
+ACTION_REFERENCE_OLD_TABLE varchar(64) YES NULL
+ACTION_REFERENCE_NEW_TABLE varchar(64) YES NULL
+ACTION_REFERENCE_OLD_ROW varchar(3) NO
+ACTION_REFERENCE_NEW_ROW varchar(3) NO
+CREATED datetime YES NULL
+SQL_MODE longtext NO NULL
+DEFINER longtext NO NULL
+SELECT * FROM information_schema.triggers
+WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
+OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
+OR action_reference_new_table IS NOT 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
+##################################################################################
+# Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS 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';
+DROP USER 'testuser3'@'localhost';
+CREATE USER 'testuser3'@'localhost';
+DROP USER 'testuser4'@'localhost';
+CREATE USER 'testuser4'@'localhost';
+GRANT SUPER ON *.* TO 'testuser1'@'localhost';
+GRANT SUPER ON *.* TO 'testuser3'@'localhost';
+GRANT SUPER ON *.* TO 'testuser4'@'localhost';
+GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
+# Establish connection testuser1 (user=testuser1)
+CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
+ENGINE = <engine_type>;
+CREATE TRIGGER trg1 BEFORE INSERT
+ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
+GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
+GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
+SELECT * FROM information_schema.triggers
+WHERE trigger_name = 'trg1';
+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
+NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
+SHOW TRIGGERS FROM db_datadict;
+Trigger Event Table Statement Timing Created sql_mode Definer
+trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
+# Establish connection testuser2 (user=testuser2)
+SHOW GRANTS FOR 'testuser2'@'localhost';
+# No SUPER Privilege --> no result for query
+SELECT * FROM information_schema.triggers
+WHERE trigger_name = 'trg1';
+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
+NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
+SHOW TRIGGERS FROM db_datadict;
+Trigger Event Table Statement Timing Created sql_mode Definer
+trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
+# Establish connection testuser3 (user=testuser3)
+SHOW GRANTS FOR 'testuser3'@'localhost';
+# SUPER Privilege + SELECT Privilege on t1 --> result for query
+SELECT * FROM information_schema.triggers
+WHERE trigger_name = 'trg1';
+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
+NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
+SHOW TRIGGERS FROM db_datadict;
+Trigger Event Table Statement Timing Created sql_mode Definer
+trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
+# Establish connection testuser4 (user=testuser4)
+SHOW GRANTS FOR 'testuser4'@'localhost';
+# SUPER Privilege + no SELECT Privilege on t1 --> no result for query
+SELECT * FROM information_schema.triggers
+WHERE trigger_name = 'trg1';
+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
+NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
+SHOW TRIGGERS FROM db_datadict;
+Trigger Event Table Statement Timing Created sql_mode Definer
+trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
+# Switch to connection default and close connections testuser1 - testuser4
+SELECT * FROM information_schema.triggers
+WHERE trigger_name = 'trg1';
+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
+NULL db_datadict trg1 INSERT NULL db_datadict t1 0 NULL SET @test_before = 2, new.f1 = @test_before ROW BEFORE NULL NULL OLD NEW NULL testuser1@localhost
+SHOW TRIGGERS FROM db_datadict;
+Trigger Event Table Statement Timing Created sql_mode Definer
+trg1 INSERT t1 SET @test_before = 2, new.f1 = @test_before BEFORE NULL testuser1@localhost
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'testuser3'@'localhost';
+DROP USER 'testuser4'@'localhost';
+DROP DATABASE db_datadict;
+#########################################################################
+# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TRIGGERS modifications
+#########################################################################
+########################################################################
+# 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 tables are not supported
+########################################################################
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+CREATE TABLE db_datadict.t1 (f1 BIGINT)
+ENGINE = <engine_type>;
+CREATE TRIGGER db_datadict.trg1 BEFORE INSERT
+ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
+INSERT INTO information_schema.triggers
+SELECT * FROM information_schema.triggers;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.triggers SET trigger_schema = 'test'
+WHERE table_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+TRUNCATE information_schema.triggers;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CREATE INDEX my_idx_on_triggers ON information_schema.triggers(trigger_schema);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.triggers DROP PRIMARY KEY;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.triggers ADD f1 INT;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE information_schema.triggers;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.triggers RENAME db_datadict.triggers;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/r/is_views_embedded.result b/mysql-test/suite/funcs_1/r/is_views_embedded.result
new file mode 100644
index 00000000000..21f799fca79
--- /dev/null
+++ b/mysql-test/suite/funcs_1/r/is_views_embedded.result
@@ -0,0 +1,241 @@
+SHOW TABLES FROM information_schema LIKE 'VIEWS';
+Tables_in_information_schema (VIEWS)
+VIEWS
+#######################################################################
+# 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.VIEWS;
+CREATE PROCEDURE test.p1() SELECT * FROM information_schema.VIEWS;
+CREATE FUNCTION test.f1() returns BIGINT
+BEGIN
+DECLARE counter BIGINT DEFAULT NULL;
+SELECT COUNT(*) INTO counter FROM information_schema.VIEWS;
+RETURN counter;
+END//
+# Attention: The printing of the next result sets is disabled.
+SELECT * FROM information_schema.VIEWS;
+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.13.1: INFORMATION_SCHEMA.VIEWS layout
+#########################################################################
+DESCRIBE information_schema.VIEWS;
+Field Type Null Key Default Extra
+TABLE_CATALOG varchar(512) YES NULL
+TABLE_SCHEMA varchar(64) NO
+TABLE_NAME varchar(64) NO
+VIEW_DEFINITION longtext NO NULL
+CHECK_OPTION varchar(8) NO
+IS_UPDATABLE varchar(3) NO
+DEFINER varchar(77) NO
+SECURITY_TYPE varchar(7) NO
+SHOW CREATE TABLE information_schema.VIEWS;
+Table Create Table
+VIEWS CREATE TEMPORARY TABLE `VIEWS` (
+ `TABLE_CATALOG` varchar(512) default NULL,
+ `TABLE_SCHEMA` varchar(64) NOT NULL default '',
+ `TABLE_NAME` varchar(64) NOT NULL default '',
+ `VIEW_DEFINITION` longtext NOT NULL,
+ `CHECK_OPTION` varchar(8) NOT NULL default '',
+ `IS_UPDATABLE` varchar(3) NOT NULL default '',
+ `DEFINER` varchar(77) NOT NULL default '',
+ `SECURITY_TYPE` varchar(7) NOT NULL default ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8
+SHOW COLUMNS FROM information_schema.VIEWS;
+Field Type Null Key Default Extra
+TABLE_CATALOG varchar(512) YES NULL
+TABLE_SCHEMA varchar(64) NO
+TABLE_NAME varchar(64) NO
+VIEW_DEFINITION longtext NO NULL
+CHECK_OPTION varchar(8) NO
+IS_UPDATABLE varchar(3) NO
+DEFINER varchar(77) NO
+SECURITY_TYPE varchar(7) NO
+SELECT table_catalog, table_schema, table_name
+FROM information_schema.views WHERE table_catalog IS NOT NULL;
+table_catalog table_schema table_name
+################################################################################
+# Testcase 3.2.13.2 + 3.2.13.3: INFORMATION_SCHEMA.VIEWS 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';
+DROP USER 'test_no_views'@'localhost';
+CREATE USER 'test_no_views'@'localhost';
+CREATE TABLE db_datadict.t1(f1 INT, f2 INT, f3 INT)
+ENGINE = <engine_type>;
+CREATE VIEW db_datadict.v_granted_to_1 AS SELECT * FROM db_datadict.t1;
+CREATE VIEW db_datadict.v_granted_glob AS SELECT f2, f3 FROM db_datadict.t1;
+GRANT SELECT ON db_datadict.t1 TO 'testuser1'@'localhost';
+GRANT SELECT ON db_datadict.v_granted_to_1 TO 'testuser1'@'localhost';
+GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
+SELECT * FROM information_schema.views
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
+NULL db_datadict v_granted_glob /* ALGORITHM=UNDEFINED */ select `db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER
+NULL db_datadict v_granted_to_1 /* ALGORITHM=UNDEFINED */ select `db_datadict`.`t1`.`f1` AS `f1`,`db_datadict`.`t1`.`f2` AS `f2`,`db_datadict`.`t1`.`f3` AS `f3` from `db_datadict`.`t1` NONE YES root@localhost DEFINER
+# Establish connection testuser1 (user=testuser1)
+SELECT * FROM information_schema.views
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
+NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
+NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
+# Establish connection testuser2 (user=testuser2)
+SELECT * FROM information_schema.views
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
+NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
+NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
+# Establish connection test_no_views (user=test_no_views)
+SELECT * FROM information_schema.views
+WHERE table_schema = 'db_datadict' ORDER BY table_name;
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
+NULL db_datadict v_granted_glob NONE YES root@localhost DEFINER
+NULL db_datadict v_granted_to_1 NONE YES root@localhost DEFINER
+# Switch to connection default and close all other connections
+DROP USER 'testuser1'@'localhost';
+DROP USER 'testuser2'@'localhost';
+DROP USER 'test_no_views'@'localhost';
+DROP DATABASE db_datadict;
+#########################################################################
+# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.VIEWS modifications
+#########################################################################
+DROP TABLE IF EXISTS test.t1_my_table;
+DROP DATABASE IF EXISTS db_datadict;
+CREATE DATABASE db_datadict;
+CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
+ENGINE = <engine_type>;
+DROP USER 'testuser1'@'localhost';
+CREATE USER 'testuser1'@'localhost';
+SELECT * FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
+CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
+SELECT * FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE
+NULL test t1_view /* ALGORITHM=UNDEFINED */ select distinct `test`.`t1_table`.`f1` AS `f1` from `test`.`t1_table` NONE NO root@localhost DEFINER
+SELECT table_name,definer FROM information_schema.views
+WHERE table_name = 't1_view';
+table_name definer
+t1_view root@localhost
+ALTER DEFINER = 'testuser1'@'localhost' VIEW test.t1_view AS
+SELECT DISTINCT f1 FROM test.t1_table;
+SELECT table_name,definer,security_type FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+table_name definer security_type
+t1_view testuser1@localhost DEFINER
+ALTER DEFINER = 'root'@'localhost' SQL SECURITY INVOKER VIEW test.t1_view AS
+SELECT f1 FROM test.t1_table WITH LOCAL CHECK OPTION;
+SELECT table_name,definer,security_type FROM information_schema.views
+WHERE table_name LIKE 't1_%';
+table_name definer security_type
+t1_view root@localhost INVOKER
+SELECT table_schema,table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema,table_name;
+table_schema table_name
+test t1_view
+RENAME TABLE test.t1_view TO db_datadict.t1_view;
+ERROR HY000: Changing schema from 'test' to 'db_datadict' is not allowed.
+DROP VIEW test.t1_view;
+CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
+SELECT table_schema,table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_schema,table_name;
+table_schema table_name
+db_datadict t1_view
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+t1_view
+RENAME TABLE db_datadict.t1_view TO db_datadict.t1_viewx;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+t1_viewx
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+t1_viewx
+DROP VIEW db_datadict.t1_viewx;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+t1_view
+DROP TABLE test.t1_table;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+t1_view
+Warnings:
+Warning 1356 View 'db_datadict.t1_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
+CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
+ENGINE = <engine_type>;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+t1_view
+DROP DATABASE db_datadict;
+SELECT table_name FROM information_schema.views
+WHERE table_name LIKE 't1_%'
+ORDER BY table_name;
+table_name
+DROP USER 'testuser1'@'localhost';
+DROP TABLE test.t1_table;
+########################################################################
+# 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;
+CREATE DATABASE db_datadict;
+CREATE VIEW db_datadict.v1 AS SELECT 1;
+INSERT INTO information_schema.views
+SELECT * FROM information_schema.views;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+INSERT INTO information_schema.views(table_schema, table_name)
+VALUES ('db2', 'v2');
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+UPDATE information_schema.views SET table_schema = 'test'
+WHERE table_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DELETE FROM information_schema.views WHERE table_name = 't1';
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+TRUNCATE information_schema.views;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+CREATE INDEX my_idx_on_views ON information_schema.views(table_schema);
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.views DROP PRIMARY KEY;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.views ADD f1 INT;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP TABLE information_schema.views;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.views RENAME db_datadict.views;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+ALTER TABLE information_schema.views RENAME information_schema.xviews;
+ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
+DROP DATABASE db_datadict;
diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc
index 1a4dd9ff327..29f5bd73b04 100644
--- a/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc
+++ b/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc
@@ -1,5 +1,9 @@
#### suite/funcs_1/storedproc/storedproc_06.inc
-#
+
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
--source suite/funcs_1/storedproc/load_sp_tb.inc
# ==============================================================================
diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc
index 8e32a43e18f..83f5f2105c5 100644
--- a/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc
+++ b/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc
@@ -1,5 +1,9 @@
#### suite/funcs_1/storedproc/storedproc_10.inc
-#
+
+# This test cannot be used for the embedded server because we check here
+# privilgeges.
+--source include/not_embedded.inc
+
--source suite/funcs_1/storedproc/load_sp_tb.inc
# ==============================================================================
diff --git a/mysql-test/suite/funcs_1/t/disabled.def b/mysql-test/suite/funcs_1/t/disabled.def
index c9b7c8fb4dd..e9b85036259 100644
--- a/mysql-test/suite/funcs_1/t/disabled.def
+++ b/mysql-test/suite/funcs_1/t/disabled.def
@@ -14,3 +14,4 @@ innodb_storedproc: (changes of WL#2984, using storeproc_nn instead)
memory_storedproc: (changes of WL#2984, using storeproc_nn instead)
myisam_storedproc: (changes of WL#2984, using storeproc_nn instead)
ndb_trig_1011ext: Bug#32656 NDB: Duplicate key error aborts transaction in handler. Doesn't talk back to SQL
+is_tables_ndb: Bug#37198 user without any right on schema sees NDB table
diff --git a/mysql-test/suite/funcs_1/t/innodb_trig_frkey.test b/mysql-test/suite/funcs_1/t/innodb_trig_frkey.test
index 57298fd9056..32da61ec876 100644
--- a/mysql-test/suite/funcs_1/t/innodb_trig_frkey.test
+++ b/mysql-test/suite/funcs_1/t/innodb_trig_frkey.test
@@ -7,10 +7,4 @@
# 2. Set $engine_type
let $engine_type= innodb;
-# Create some objects needed in many testcases
-USE test;
---source suite/funcs_1/include/innodb_tb3.inc
-
--source suite/funcs_1/triggers/trig_frkey.inc
-DROP TABLE test.tb3;
-
diff --git a/mysql-test/suite/funcs_1/t/is_basics_mixed.test b/mysql-test/suite/funcs_1/t/is_basics_mixed.test
index 30aeba12915..235b91c67d0 100644
--- a/mysql-test/suite/funcs_1/t/is_basics_mixed.test
+++ b/mysql-test/suite/funcs_1/t/is_basics_mixed.test
@@ -11,6 +11,19 @@
# Create this script based on older scripts and new code.
#
+# This test is strict adjusted to the behaviour of the non embedded server.
+# Example of common differences between both servers:
+# USE information_schema; CREATE VIEW tables AS SELECT 'garbage';
+# non embedded server:
+# - errname ER_DBACCESS_DENIED_ERROR
+# - ERROR 42000: Access denied for user 'root'@'localhost' to
+# database 'information_schema'
+# embedded server:
+# - errno 1
+# - Can't create/write to file
+# '.../var/master-data/information_schema/tables.frm~
+--source include/not_embedded.inc
+
--source suite/funcs_1/datadict/datadict.pre
# $engine_type must point to storage engine which is all time available.
diff --git a/mysql-test/suite/funcs_1/t/is_cml_innodb.test b/mysql-test/suite/funcs_1/t/is_cml_innodb.test
new file mode 100644
index 00000000000..a37e5c8d94c
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_cml_innodb.test
@@ -0,0 +1,41 @@
+# suite/funcs_1/t/is_cml_innodb.test
+#
+# Check the content of information_schema.columns about tables using
+# UNICODE columns.
+# Variant for storage engine InnoDB
+#
+# Author:
+# 2008-06-04 mleich Create this script based on older scripts and new code.
+#
+
+--source include/have_ucs2.inc
+
+# This test cannot be used for the embedded server because privileges
+# are expected within result sets.
+--source include/not_embedded.inc
+
+--source include/have_innodb.inc
+let $engine_type= InnoDB;
+USE test;
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+eval CREATE TABLE t1
+(
+ f1 CHAR UNICODE,
+ f2 CHAR(0) UNICODE,
+ f3 CHAR(10) UNICODE,
+ f5 VARCHAR(0) UNICODE,
+ f6 VARCHAR(255) UNICODE,
+ f7 VARCHAR(260) UNICODE,
+ f8 TEXT UNICODE,
+ f9 TINYTEXT UNICODE,
+ f10 MEDIUMTEXT UNICODE,
+ f11 LONGTEXT UNICODE
+) ENGINE = $engine_type;
+
+# We look only for the tables created here.
+let $my_where = WHERE table_schema LIKE 'test%';
+--source suite/funcs_1/datadict/columns.inc
+
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/t/is_cml_memory.test b/mysql-test/suite/funcs_1/t/is_cml_memory.test
new file mode 100644
index 00000000000..41602ac863a
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_cml_memory.test
@@ -0,0 +1,37 @@
+# suite/funcs_1/t/is_cml_memory.test
+#
+# Check the content of information_schema.columns about tables using
+# UNICODE columns.
+# Variant for storage engine MEMORY
+#
+# Author:
+# 2008-06-04 mleich Create this script based on older scripts and new code.
+#
+
+--source include/have_ucs2.inc
+
+# This test cannot be used for the embedded server because privileges
+# are expected within result sets.
+--source include/not_embedded.inc
+
+let $engine_type= MEMORY;
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+USE test;
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+eval CREATE TABLE t1
+(
+ f1 CHAR UNICODE,
+ f2 CHAR(0) UNICODE,
+ f3 CHAR(10) UNICODE,
+ f5 VARCHAR(0) UNICODE,
+ f6 VARCHAR(255) UNICODE,
+ f7 VARCHAR(260) UNICODE
+) ENGINE = $engine_type;
+
+# We look only for the tables created here.
+let $my_where = WHERE table_schema LIKE 'test%';
+--source suite/funcs_1/datadict/columns.inc
+
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/t/is_cml_myisam.test b/mysql-test/suite/funcs_1/t/is_cml_myisam.test
new file mode 100644
index 00000000000..904cefbd4d7
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_cml_myisam.test
@@ -0,0 +1,41 @@
+# suite/funcs_1/t/is_cml_myisam.test
+#
+# Check the content of information_schema.columns about tables using
+# UNICODE columns.
+# Variant for storage engine MyISAM
+#
+# Author:
+# 2008-06-04 mleich Create this script based on older scripts and new code.
+#
+
+--source include/have_ucs2.inc
+
+# This test cannot be used for the embedded server because privileges
+# are expected within result sets.
+--source include/not_embedded.inc
+
+let $engine_type= MyISAM;
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+USE test;
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+eval CREATE TABLE t1
+(
+ f1 CHAR UNICODE,
+ f2 CHAR(0) UNICODE,
+ f3 CHAR(10) UNICODE,
+ f5 VARCHAR(0) UNICODE,
+ f6 VARCHAR(255) UNICODE,
+ f7 VARCHAR(260) UNICODE,
+ f8 TEXT UNICODE,
+ f9 TINYTEXT UNICODE,
+ f10 MEDIUMTEXT UNICODE,
+ f11 LONGTEXT UNICODE
+) ENGINE = $engine_type;
+
+# We look only for the tables created here.
+let $my_where = WHERE table_schema LIKE 'test%';
+--source suite/funcs_1/datadict/columns.inc
+
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/t/is_cml_ndb.test b/mysql-test/suite/funcs_1/t/is_cml_ndb.test
new file mode 100644
index 00000000000..55899be830b
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_cml_ndb.test
@@ -0,0 +1,41 @@
+# suite/funcs_1/t/is_cml_ndb.test
+#
+# Check the content of information_schema.columns about tables using
+# UNICODE columns.
+# Variant for storage engine NDB
+#
+# Author:
+# 2008-06-04 mleich Create this script based on older scripts and new code.
+#
+
+--source include/have_ucs2.inc
+
+# This test cannot be used for the embedded server because privileges
+# are expected within result sets.
+--source include/not_embedded.inc
+
+--source include/have_ndb.inc
+let $engine_type= NDB;
+USE test;
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+eval CREATE TABLE t1
+(
+ f1 CHAR UNICODE,
+ f2 CHAR(0) UNICODE,
+ f3 CHAR(10) UNICODE,
+ f5 VARCHAR(0) UNICODE,
+ f6 VARCHAR(255) UNICODE,
+ f7 VARCHAR(260) UNICODE,
+ f8 TEXT UNICODE,
+ f9 TINYTEXT UNICODE,
+ f10 MEDIUMTEXT UNICODE,
+ f11 LONGTEXT UNICODE
+) ENGINE = $engine_type;
+
+# We look only for the tables created here.
+let $my_where = WHERE table_schema LIKE 'test%';
+--source suite/funcs_1/datadict/columns.inc
+
+DROP TABLE t1;
diff --git a/mysql-test/suite/funcs_1/t/is_column_privileges.test b/mysql-test/suite/funcs_1/t/is_column_privileges.test
index 8f125051060..cb8c50c01b7 100644
--- a/mysql-test/suite/funcs_1/t/is_column_privileges.test
+++ b/mysql-test/suite/funcs_1/t/is_column_privileges.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MEMORY;
let $other_engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test b/mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test
index 3ed8597e309..33269fe929c 100644
--- a/mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test
+++ b/mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test
@@ -8,7 +8,10 @@
# testsuite funcs_1
# Create this script based on older scripts and new code.
#
-#
+
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
--echo ##############################################################################
--echo # Testcases 3.2.9.2+3.2.9.3 INFORMATION_SCHEMA.SCHEMATA accessible information
diff --git a/mysql-test/suite/funcs_1/t/is_columns.test b/mysql-test/suite/funcs_1/t/is_columns.test
index 385de733ac3..efb52acd48c 100644
--- a/mysql-test/suite/funcs_1/t/is_columns.test
+++ b/mysql-test/suite/funcs_1/t/is_columns.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MEMORY;
let $other_engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_columns_innodb.test b/mysql-test/suite/funcs_1/t/is_columns_innodb.test
index 04b9f8354e4..7d8ca9a3a8e 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_innodb.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_innodb.test
@@ -10,6 +10,10 @@
# Create this script based on older scripts and new code.
#
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
--source include/have_innodb.inc
let $engine_type= InnoDB;
--source suite/funcs_1/datadict/datadict_load.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_is.test b/mysql-test/suite/funcs_1/t/is_columns_is.test
index 41a7d180be8..743b11d7bff 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_is.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_is.test
@@ -2,6 +2,9 @@
#
# Check the content of information_schema.columns about tables within
# the database information_schema.
+# Variant for the non embedded server
+# The expected results must equal is_columns_is_embedded except that
+# columns.privileges are not empty.
#
# Note: The INFORMATION_SCHEMA table PROFILING is optional (exists in MySQL
# Community version only) and therefore we exclude it from retrieval.
@@ -12,8 +15,8 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
+
let $my_where = WHERE table_schema = 'information_schema'
AND table_name <> 'profiling';
-# --source suite/funcs_1/datadict/datadict.pre
--source suite/funcs_1/datadict/columns.inc
-
diff --git a/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test b/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test
new file mode 100644
index 00000000000..7bc29624f1d
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_columns_is_embedded.test
@@ -0,0 +1,23 @@
+# suite/funcs_1/t/is_columns_is_embedded.test
+#
+# Check the content of information_schema.columns about tables within
+# the database information_schema.
+# Variant for the embedded server
+# The expected results must equal is_columns_is except that
+# columns.privileges is empty.
+#
+# Note: The INFORMATION_SCHEMA table PROFILING is optional (exists in MySQL
+# Community version only) and therefore we exclude it from retrieval.
+#
+# Author:
+# 2008-06-06 mleich Create this variant for the embedded server
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+
+let $my_where = WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling';
+--source suite/funcs_1/datadict/columns.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_memory.test b/mysql-test/suite/funcs_1/t/is_columns_memory.test
index 6cbf3b298b4..b76325d114a 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_memory.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_memory.test
@@ -10,6 +10,10 @@
# Create this script based on older scripts and new code.
#
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
let $engine_type= MEMORY;
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
--source suite/funcs_1/datadict/datadict_load.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_myisam.test b/mysql-test/suite/funcs_1/t/is_columns_myisam.test
index d98cd0347c6..09b5b088489 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_myisam.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_myisam.test
@@ -2,7 +2,9 @@
#
# Check the content of information_schema.columns about tables within
# the databases created by the user.
-# Variant for storage engine MyISAM
+# Variant for storage engine MyISAM and the non embedded server
+# The expected results must equal is_columns_myisam_embedded except that
+# that the privilege system works (affects some result sets).
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -10,6 +12,7 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
let $engine_type= MyISAM;
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
--source suite/funcs_1/datadict/datadict_load.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test b/mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test
new file mode 100644
index 00000000000..0d5f1a72cdb
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test
@@ -0,0 +1,30 @@
+# suite/funcs_1/t/is_columns_myisam_embedded.test
+#
+# Check the content of information_schema.columns about tables within
+# the databases created by the user.
+# Variant for storage engine MyISAM and the embedded server
+# The expected results must equal is_columns_myisam except that all users
+# have all privileges (affects some result sets).
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+let $value= query_get_value(SHOW VARIABLES LIKE 'version_compile_os',Value,1);
+if (`SELECT '$value' LIKE 'apple-darwin%'`)
+{
+ skip Bug#37380 Test funcs_1.is_columns_myisam_embedded fails on OS X;
+}
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+let $engine_type= MyISAM;
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+--source suite/funcs_1/datadict/datadict_load.inc
+
+# We look only for the tables created by datadict_load.inc.
+let $my_where = WHERE table_schema LIKE 'test%';
+--source suite/funcs_1/datadict/columns.inc
+
+--source suite/funcs_1/include/cleanup.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_mysql.test b/mysql-test/suite/funcs_1/t/is_columns_mysql.test
index 26539d0c8e0..a844e18f5be 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_mysql.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_mysql.test
@@ -2,6 +2,9 @@
#
# Check the content of information_schema.columns about tables within
# the database mysql.
+# Variant for the non embedded server
+# The expected results must equal is_columns_mysql_embedded except that
+# columns.privileges are not empty.
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -9,5 +12,7 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
+
let $my_where = WHERE table_schema = 'mysql';
--source suite/funcs_1/datadict/columns.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_mysql_embedded.test b/mysql-test/suite/funcs_1/t/is_columns_mysql_embedded.test
new file mode 100644
index 00000000000..d1ed45425ec
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_columns_mysql_embedded.test
@@ -0,0 +1,19 @@
+# suite/funcs_1/t/is_columns_mysql_embedded.test
+#
+# Check the content of information_schema.columns about tables within
+# the database mysql.
+# Variant for the embedded server
+# The expected results must equal is_columns_mysql except that
+# columns.privileges is empty.
+#
+# Author:
+# 2008-06-06 mleich Create this variant for the embedded server
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+
+let $my_where = WHERE table_schema = 'mysql';
+--source suite/funcs_1/datadict/columns.inc
diff --git a/mysql-test/suite/funcs_1/t/is_columns_ndb.test b/mysql-test/suite/funcs_1/t/is_columns_ndb.test
index 960e5f079bb..3d2a8d7aa5b 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_ndb.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_ndb.test
@@ -10,6 +10,10 @@
# Create this script based on older scripts and new code.
#
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
--source include/have_ndb.inc
let $engine_type= ndb;
--source suite/funcs_1/datadict/datadict_load.inc
diff --git a/mysql-test/suite/funcs_1/t/is_key_column_usage.test b/mysql-test/suite/funcs_1/t/is_key_column_usage.test
index 219277c8645..a6bd8fc3989 100644
--- a/mysql-test/suite/funcs_1/t/is_key_column_usage.test
+++ b/mysql-test/suite/funcs_1/t/is_key_column_usage.test
@@ -2,13 +2,12 @@
#
# Check the layout of information_schema.key_column_usage and the impact of
# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA/COLUMN ... on it.
+# Variant for the non embedded server
+# The expected results must equal is_key_column_usage_embedded except that
+# that the privilege system works (affects some result sets).
#
-# Note:
-# This test is not intended
-# - to show information about the all time existing tables
-# within the databases information_schema and mysql
-# - for checking storage engine properties
-# Therefore please do not alter $engine_type and $other_engine_type.
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_key_column_usage.inc
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -16,329 +15,5 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
-
-let $engine_type = MEMORY;
-# let $other_engine_type = MyISAM;
-
-let $is_table = KEY_COLUMN_USAGE;
-
-# The table INFORMATION_SCHEMA.KEY_COLUMN_USAGE must exist
-eval SHOW TABLES FROM information_schema LIKE '$is_table';
-
---echo #######################################################################
---echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
---echo #######################################################################
-# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
-# statement, just as if it were an ordinary user-defined table.
-#
---source suite/funcs_1/datadict/is_table_query.inc
-
-
---echo #########################################################################
---echo # Testcase 3.2.7.1: INFORMATION_SCHEMA.KEY_COLUMN_USAGE layout
---echo #########################################################################
-# Ensure that the INFORMATION_SCHEMA.KEY_COLUMN_USAGE table has the following
-# columns, in the following order:
-#
-# CONSTRAINT_CATALOG (always shows NULL),
-# CONSTRAINT_SCHEMA (shows the database, or schema, in which an accessible
-# constraint, or index, resides),
-# CONSTRAINT_NAME (shows the name of the accessible constraint),
-# TABLE_CATALOG (always shows NULL),
-# TABLE_SCHEMA (shows the database, or schema, in which the table constrained
-# by that constraint resides),
-# TABLE_NAME (shows the name of the table constrained by the constraint),
-# COLUMN_NAME (shows the name of a column that is the index key, or part of
-# the index key),
-# ORDINAL_POSITION (shows the ordinal position of the column within the
-# constraint index),
-# POSITION_IN_UNIQUE_CONSTRAINT (shows, for a foreign key column, the ordinal
-# position of the referenced column within the referenced unique index;
-# otherwise NULL).
-# added with 5.0.6:
-# REFERENCED_TABLE_SCHEMA,
-# REFERENCED_TABLE_NAME,
-# REFERENCED_COLUMN_NAME
-#
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval DESCRIBE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW CREATE TABLE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW COLUMNS FROM information_schema.$is_table;
-
-# Note: Retrieval of information within information_schema.columns about
-# information_schema.key_column_usage is in is_columns_is.test.
-
-# Show that CONSTRAINT_CATALOG and TABLE_CATALOG are always NULL.
-SELECT constraint_catalog, constraint_schema, constraint_name, table_catalog,
- table_schema, table_name, column_name
-FROM information_schema.key_column_usage
-WHERE constraint_catalog IS NOT NULL OR table_catalog IS NOT NULL;
-
-
---echo ########################################################################################
---echo # Testcase 3.2.7.2 + 3.2.7.3: INFORMATION_SCHEMA.KEY_COLUMN_USAGE accessible information
---echo ########################################################################################
-# 3.2.7.2: Ensure that the table shows the relevant information on every column, defined to
-# be part of an index key, which is accessible to the current user or to PUBLIC.
-# 3.2.7.3: Ensure that the table does not show any information on any indexed column that is
-# not accessible to the current user or PUBLIC.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser2'@'localhost';
-CREATE USER 'testuser2'@'localhost';
-
-USE db_datadict;
-
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE t1_1
- (f1 INT NOT NULL, PRIMARY KEY(f1),
- f2 INT, INDEX f2_ind(f2))
-ENGINE = $engine_type;
-GRANT SELECT ON t1_1 to 'testuser1'@'localhost';
-
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE t1_2
- (f1 INT NOT NULL, PRIMARY KEY(f1),
- f2 INT, INDEX f2_ind(f2))
-ENGINE = $engine_type;
-GRANT SELECT ON t1_2 to 'testuser2'@'localhost';
-#FIXME: add foreign keys
-
-let $select= SELECT * FROM information_schema.key_column_usage
-WHERE table_name LIKE 't1_%'
-ORDER BY constraint_catalog, constraint_schema, constraint_name,
- table_catalog, table_schema, table_name, ordinal_position;
-
-# show view of user root
-eval $select;
-
---echo # Establish connection testuser1 (user=testuser1)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1, localhost, testuser1, , db_datadict);
-eval $select;
-
---echo # Establish connection testuser2 (user=testuser2)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser2, localhost, testuser2, , db_datadict);
-eval $select;
-
-# Cleanup
---echo # Switch to connection default and close connections testuser1, testuser2
-connection default;
-disconnect testuser1;
-disconnect testuser2;
-DROP USER 'testuser1'@'localhost';
-DROP USER 'testuser2'@'localhost';
-DROP TABLE t1_1;
-DROP TABLE t1_2;
-DROP DATABASE IF EXISTS db_datadict;
-
-
---echo ########################################################################################
---echo # Testcase 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.KEY_COLUMN_USAGE modifications
---echo ########################################################################################
-# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
-# column) automatically inserts all relevant information on that
-# object into every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.14: Ensure that the alteration of any existing database object
-# automatically updates all relevant information on that object in
-# every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.15: Ensure that the dropping of any existing database object
-# automatically deletes all relevant information on that object from
-# every appropriate INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
-DROP TABLE IF EXISTS test.t1_my_table;
---enable_warnings
-CREATE DATABASE db_datadict;
-
-SELECT table_name FROM information_schema.key_column_usage
-WHERE table_name LIKE 't1_my_table%';
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE test.t1_my_table
- (f1 CHAR(12), f2 TIMESTAMP, f4 BIGINT, PRIMARY KEY(f1,f2))
-DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
-ENGINE = $engine_type;
-# Settings used in CREATE TABLE must be visible
-# in information_schema.key_column_usage.
---vertical_results
-SELECT * FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_table';
---horizontal_results
-#
-# Check modification of TABLE_NAME
-SELECT DISTINCT table_name FROM information_schema.key_column_usage
-WHERE table_name LIKE 't1_my_table%';
-RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
-SELECT DISTINCT table_name FROM information_schema.key_column_usage
-WHERE table_name LIKE 't1_my_table%';
-#
-# Check modification of TABLE_SCHEMA
-SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
-SELECT DISTINCT table_schema,table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-#
-# Check modification of COLUMN_NAME
-SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex'
-ORDER BY table_name, column_name;
-ALTER TABLE db_datadict.t1_my_tablex CHANGE COLUMN f1 first_col CHAR(12);
-SELECT DISTINCT table_name, column_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex'
-ORDER BY table_name, column_name;
-#
-# Note: The size of the column list and the not very selective qualification
-# is intended. I want to see that the schema names are equal and
-# all records about 't1_my_tablex'.
-let $my_select = SELECT constraint_schema, constraint_name, table_schema,
-table_name, column_name, ordinal_position
-FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex'
-ORDER BY constraint_schema, constraint_name, table_schema,
- table_name, ordinal_position;
-#
-# Check ADD INDEX being not UNIQUE (does not show up in key_column_usage)
-eval $my_select;
-CREATE INDEX f2 ON db_datadict.t1_my_tablex(f2);
-eval $my_select;
-DROP INDEX f2 ON db_datadict.t1_my_tablex;
-#
-# Check ADD UNIQUE INDEX without name explicit assigned
-eval $my_select;
-ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE (f2);
-eval $my_select;
-DROP INDEX f2 ON db_datadict.t1_my_tablex;
-#
-# Check ADD UNIQUE INDEX with name explicit assigned
-eval $my_select;
-ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f2);
-eval $my_select;
-DROP INDEX my_idx ON db_datadict.t1_my_tablex;
-eval $my_select;
-ALTER TABLE db_datadict.t1_my_tablex ADD UNIQUE my_idx (f4,first_col);
-eval $my_select;
-#
-# Check DROP COLUMN
-eval $my_select;
-ALTER TABLE db_datadict.t1_my_tablex
-DROP COLUMN first_col;
-eval $my_select;
-#
-# Check impact of DROP TABLE
-SELECT table_name, column_name
-FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex'
-ORDER BY table_name, column_name;
-DROP TABLE db_datadict.t1_my_tablex;
-SELECT table_name, column_name
-FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-#
-# No UNIQUE CONSTRAINT -> no entry in key_column_usage
-SELECT table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1_my_tablex
-ENGINE = $engine_type AS
-SELECT 1 AS f1;
-SELECT table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-# UNIQUE CONSTRAINT -> entry in key_column_usage
-ALTER TABLE db_datadict.t1_my_tablex ADD PRIMARY KEY(f1);
-SELECT table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-#
-# Check impact of DROP SCHEMA
-SELECT table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-DROP DATABASE db_datadict;
-SELECT table_name FROM information_schema.key_column_usage
-WHERE table_name = 't1_my_tablex';
-#
-
-
---echo ########################################################################
---echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
---echo # DDL on INFORMATION_SCHEMA table are not supported
---echo ########################################################################
-# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.8: Ensure that no user may create an index on an
-# INFORMATION_SCHEMA table.
-# 3.2.1.9: Ensure that no user may alter the definition of an
-# INFORMATION_SCHEMA table.
-# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
-# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
-# other database.
-# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
-# in an INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
-DROP TABLE IF EXISTS db_datadict.t1;
---enable_warnings
-CREATE DATABASE db_datadict;
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1 (f1 BIGINT)
-ENGINE = $engine_type;
-
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.key_column_usage
- (constraint_schema, constraint_name, table_name)
-VALUES ( 'mysql', 'primary', 'db');
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.key_column_usage
-SELECT * FROM information_schema.key_column_usage;
-
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.key_column_usage
-SET table_name = 'db1' WHERE constraint_name = 'primary';
-
---error ER_DBACCESS_DENIED_ERROR
-DELETE FROM information_schema.key_column_usage WHERE table_name = 't1';
---error ER_DBACCESS_DENIED_ERROR
-TRUNCATE information_schema.key_column_usage;
-
---error ER_DBACCESS_DENIED_ERROR
-CREATE INDEX i3 ON information_schema.key_column_usage(table_name);
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.key_column_usage ADD f1 INT;
-
---error ER_DBACCESS_DENIED_ERROR
-DROP TABLE information_schema.key_column_usage;
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.key_column_usage
-RENAME db_datadict.key_column_usage;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.key_column_usage
-RENAME information_schema.xkey_column_usage;
-
-# Cleanup
-DROP TABLE db_datadict.t1;
-DROP DATABASE db_datadict;
-
+--source include/not_embedded.inc
+--source suite/funcs_1/datadict/is_key_column_usage.inc
diff --git a/mysql-test/suite/funcs_1/t/is_key_column_usage_embedded.test b/mysql-test/suite/funcs_1/t/is_key_column_usage_embedded.test
new file mode 100644
index 00000000000..ccdc8dec3d9
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_key_column_usage_embedded.test
@@ -0,0 +1,20 @@
+# suite/funcs_1/t/is_key_column_usage_embedded.test
+#
+# Check the layout of information_schema.key_column_usage and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA/COLUMN ... on it.
+# Variant for the embedded server
+# The expected results must equal is_key_column_usage except that all users
+# have all privileges (affects some result sets).
+#
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_key_column_usage.inc
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+--source suite/funcs_1/datadict/is_key_column_usage.inc
diff --git a/mysql-test/suite/funcs_1/t/is_routines.test b/mysql-test/suite/funcs_1/t/is_routines.test
index 5f015b8624b..30a0e02c23a 100644
--- a/mysql-test/suite/funcs_1/t/is_routines.test
+++ b/mysql-test/suite/funcs_1/t/is_routines.test
@@ -2,13 +2,12 @@
#
# Check the layout of information_schema.routines and the impact of
# CREATE/ALTER/DROP PROCEDURE/FUNCTION ... on it.
+# Variant for the non embedded server
+# The expected results must equal is_routines_embedded except that
+# that the privilege system works (affects some result sets).
#
-# Note:
-# This test is not intended
-# - to show information about the all time existing routines (there are no
-# in the moment) within the databases information_schema and mysql
-# - for checking storage engine properties
-# Therefore please do not alter $engine_type and $other_engine_type.
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_routines.inc
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -16,456 +15,5 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
-
-let $engine_type = MEMORY;
-let $other_engine_type = MyISAM;
-
-let $is_table = ROUTINES;
-
-# The table INFORMATION_SCHEMA.TABLES must exist
-eval SHOW TABLES FROM information_schema LIKE '$is_table';
-
---echo #######################################################################
---echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
---echo #######################################################################
-# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
-# statement, just as if it were an ordinary user-defined table.
-#
---source suite/funcs_1/datadict/is_table_query.inc
-
-
---echo #########################################################################
---echo # Testcase 3.2.8.1: INFORMATION_SCHEMA.ROUTINES layout
---echo #########################################################################
-# Ensure that the INFORMATION_SCHEMA.ROUTINES table has the following columns,
-# in the following order:
-#
-# SPECIFIC_NAME (shows the name of an accessible stored procedure, or routine),
-# ROUTINE_CATALOG (always shows NULL),
-# ROUTINE_SCHEMA (shows the database, or schema, in which the routine resides),
-# ROUTINE_NAME (shows the same stored procedure name),
-# ROUTINE_TYPE (shows whether the stored procedure is a procedure or a function),
-# DTD_IDENTIFIER (shows, for a function, the complete data type definition of
-# the value the function will return; otherwise NULL),
-# ROUTINE_BODY (shows the language in which the stored procedure is written;
-# currently always SQL),
-# ROUTINE_DEFINITION (shows as much of the routine body as is possible in the
-# allotted space),
-# EXTERNAL_NAME (always shows NULL),
-# EXTERNAL_LANGUAGE (always shows NULL),
-# PARAMETER_STYLE (shows the routine's parameter style; always SQL),
-# IS_DETERMINISTIC (shows whether the routine is deterministic),
-# SQL_DATA_ACCESS (shows the routine's defined sql-data-access clause value),
-# SQL_PATH (always shows NULL),
-# SECURITY_TYPE (shows whether the routine's defined security_type is 'definer'
-# or 'invoker'),
-# CREATED (shows the timestamp of the time the routine was created),
-# LAST_ALTERED (shows the timestamp of the time the routine was last altered),
-# SQL_MODE (shows the sql_mode setting at the time the routine was created),
-# ROUTINE_COMMENT (shows the comment, if any, defined for the routine;
-# otherwise NULL),
-# DEFINER (shows the user who created the routine).
-#
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval DESCRIBE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW CREATE TABLE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW COLUMNS FROM information_schema.$is_table;
-
-USE test;
---disable_warnings
-DROP PROCEDURE IF EXISTS sp_for_routines;
-DROP FUNCTION IF EXISTS function_for_routines;
---enable_warnings
-CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
-CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
-
-# Show that the column values of
-# ROUTINE_CATALOG, EXTERNAL_NAME, EXTERNAL_LANGUAGE, SQL_PATH are always NULL
-# and
-# ROUTINE_BODY, PARAMETER_STYLE are 'SQL'
-# and
-# SPECIFIC_NAME = ROUTINE_NAME.
-SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
- routine_body,external_name,external_language,parameter_style,sql_path
-FROM information_schema.routines
-WHERE routine_catalog IS NOT NULL OR external_name IS NOT NULL
- OR external_language IS NOT NULL OR sql_path IS NOT NULL
- OR routine_body <> 'SQL' OR parameter_style <> 'SQL'
- OR specific_name <> routine_name;
-
-DROP PROCEDURE sp_for_routines;
-DROP FUNCTION function_for_routines;
-
-
---echo ################################################################################
---echo # Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
---echo ################################################################################
-# 3.2.8.2: Ensure that the table shows the relevant information on every SQL-invoked
-# routine (i.e. stored procedure) which is accessible to the current user
-# or to PUBLIC.
-# 3.2.8.3: Ensure that the table does not show any information on any stored procedure
-# that is not accessible to the current user or PUBLIC.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
-DROP DATABASE IF EXISTS db_datadict_2;
---enable_warnings
-
-CREATE DATABASE db_datadict;
-USE db_datadict;
---replace_result $other_engine_type <other_engine_type>
-eval
-CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
-ENGINE = $other_engine_type;
-INSERT INTO res_6_408002_1(f1, f2, f3, f4)
-VALUES('abc', 'xyz', '1989-11-09', 0815);
---disable_warnings
-DROP PROCEDURE IF EXISTS sp_6_408002_1;
---enable_warnings
-delimiter //;
-CREATE PROCEDURE sp_6_408002_1()
-BEGIN
- SELECT * FROM db_datadict.res_6_408002_1;
-END//
-delimiter ;//
-
-CREATE DATABASE db_datadict_2;
-USE db_datadict_2;
---replace_result $other_engine_type <other_engine_type>
-eval
-CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
-ENGINE = $other_engine_type;
-INSERT INTO res_6_408002_2(f1, f2, f3, f4)
-VALUES('abc', 'xyz', '1990-10-03', 4711);
---disable_warnings
-DROP PROCEDURE IF EXISTS sp_6_408002_2;
---enable_warnings
-delimiter //;
-CREATE PROCEDURE sp_6_408002_2()
-BEGIN
- SELECT * FROM db_datadict_2.res_6_408002_2;
-END//
-delimiter ;//
-
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser2'@'localhost';
-CREATE USER 'testuser2'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser3'@'localhost';
-CREATE USER 'testuser3'@'localhost';
-
-
-GRANT SELECT ON db_datadict_2.* TO 'testuser1'@'localhost';
-GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
-
-GRANT EXECUTE ON db_datadict.* TO 'testuser1'@'localhost';
-GRANT SELECT ON db_datadict.* TO 'testuser2'@'localhost';
-
-GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
-TO 'testuser2'@'localhost';
-GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
-FLUSH PRIVILEGES;
-
---echo # Establish connection testuser1 (user=testuser1)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1, localhost, testuser1, , db_datadict);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
-SELECT * FROM information_schema.routines;
-
---echo # Establish connection testuser2 (user=testuser2)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser2, localhost, testuser2, , db_datadict);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
-SELECT * FROM information_schema.routines;
-
---echo # Establish connection testuser3 (user=testuser3)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser3, localhost, testuser3, , test);
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
-SELECT * FROM information_schema.routines;
-
-# Cleanup
---echo # Switch to connection default and close connections testuser1,testuser2,testuser3
-connection default;
-disconnect testuser1;
-disconnect testuser2;
-disconnect testuser3;
-
-DROP USER 'testuser1'@'localhost';
-DROP USER 'testuser2'@'localhost';
-DROP USER 'testuser3'@'localhost';
-
-USE test;
-DROP DATABASE db_datadict;
-DROP DATABASE db_datadict_2;
-
-
---echo #########################################################################
---echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
---echo #########################################################################
-# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
-# column) automatically inserts all relevant information on that
-# object into every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.14: Ensure that the alteration of any existing database object
-# automatically updates all relevant information on that object in
-# every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.15: Ensure that the dropping of any existing database object
-# automatically deletes all relevant information on that object from
-# every appropriate INFORMATION_SCHEMA table.
-#
-# Some more tests are in t/information_schema_routines.test which exists
-# in MySQL 5.1 and up only.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-
-SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-USE db_datadict;
-CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
-CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
---vertical_results
---replace_column 16 <created> 17 <modified>
-SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
-ORDER BY routine_name;
---horizontal_results
-
-ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
-ALTER FUNCTION function_for_routines COMMENT 'updated comments';
---vertical_results
---replace_column 16 <created> 17 <modified>
-SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
-ORDER BY routine_name;
---horizontal_results
-
-DROP PROCEDURE sp_for_routines;
-DROP FUNCTION function_for_routines;
-SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-
-CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
-CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
---vertical_results
---replace_column 16 <created> 17 <modified>
-SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
-ORDER BY routine_name;
---horizontal_results
-use test;
-DROP DATABASE db_datadict;
-SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
-
-
---echo #########################################################################
---echo # 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
---echo # ROUTINE_DEFINITION column
---echo #########################################################################
-# Ensure that a stored procedure with a routine body that is too large to fit
-# into the INFORMATION_SCHEMA.ROUTINES.ROUTINE_DEFINITION column correctly shows
-# as much of the information as is possible within the allotted size.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-USE db_datadict;
-#
---replace_result $other_engine_type <other_engine_type>
-eval
-CREATE TABLE db_datadict.res_6_408004_1
- (f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
-ENGINE = $other_engine_type;
-INSERT INTO db_datadict.res_6_408004_1
-VALUES ('abc', 98765 , 99999999 , 98765, 10);
-#
---replace_result $other_engine_type <other_engine_type>
-eval
-CREATE TABLE db_datadict.res_6_408004_2
- (f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
-ENGINE = $other_engine_type;
-INSERT INTO db_datadict.res_6_408004_2
-VALUES ('abc', 98765 , 99999999 , 98765, 10);
-
---echo # Checking the max. possible length of (currently) 4 GByte is not
---echo # in this environment here.
-
-delimiter //;
-CREATE PROCEDURE sp_6_408004 ()
-BEGIN
- DECLARE done INTEGER DEFAULt 0;
- DECLARE variable_number_1 LONGTEXT;
- DECLARE variable_number_2 MEDIUMINT;
- DECLARE variable_number_3 LONGBLOB;
- DECLARE variable_number_4 REAL;
- DECLARE variable_number_5 YEAR;
- DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
- DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
- DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
- DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
- DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
- DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
- BEGIN
- OPEN cursor_number_1;
- WHILE done <> 1 DO
- FETCH cursor_number_1
- INTO variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5;
- IF done <> 0 THEN
- INSERT INTO res_6_408004_2
- VALUES (variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5);
- END IF;
- END WHILE;
- BEGIN
- BEGIN
- SET done = 0;
- OPEN cursor_number_2;
- WHILE done <> 1 DO
- FETCH cursor_number_2
- INTO variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5;
- IF done <> 0 THEN
- INSERT INTO res_6_408004_2
- VALUES(variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5);
- END IF;
- END WHILE;
- END;
- SET done = 0;
- OPEN cursor_number_3;
- WHILE done <> 1 DO
- FETCH cursor_number_3
- INTO variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5;
- IF done <> 0 THEN
- INSERT INTO res_6_408004_2
- VALUES(variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5);
- END IF;
- END WHILE;
- END;
- END;
- BEGIN
- SET done = 0;
- OPEN cursor_number_4;
- WHILE done <> 1 DO
- FETCH cursor_number_4
- INTO variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5;
- IF done <> 0 THEN
- INSERT INTO res_6_408004_2
- VALUES (variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5);
- END IF;
- END WHILE;
- END;
- BEGIN
- SET @a='test row';
- SELECT @a;
- SELECT @a;
- SELECT @a;
- END;
- BEGIN
- SET done = 0;
- OPEN cursor_number_5;
- WHILE done <> 1 DO
- FETCH cursor_number_5
- INTO variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5;
- IF done <> 0 THEN
- INSERT INTO res_6_408004_2
- VALUES (variable_number_1, variable_number_2, variable_number_3,
- variable_number_4, variable_number_5);
- END IF;
- END WHILE;
- END;
- BEGIN
- SET @a='test row';
- SELECT @a;
- SELECT @a;
- SELECT @a;
- END;
-END//
-delimiter ;//
-
-CALL db_datadict.sp_6_408004 ();
-SELECT * FROM db_datadict.res_6_408004_2;
-
---vertical_results
---replace_column 16 "YYYY-MM-DD hh:mm:ss" 17 "YYYY-MM-DD hh:mm:ss"
-SELECT *, LENGTH(routine_definition) FROM information_schema.routines
-WHERE routine_schema = 'db_datadict';
---horizontal_results
-
-# Cleanup
-DROP DATABASE db_datadict;
-# ----------------------------------------------------------------------------------------------
-
-
---echo ########################################################################
---echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
---echo # DDL on INFORMATION_SCHEMA table are not supported
---echo ########################################################################
-# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.8: Ensure that no user may create an index on an INFORMATION_SCHEMA table.
-# 3.2.1.9: Ensure that no user may alter the definition of an
-# INFORMATION_SCHEMA table.
-# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
-# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
-# other database.
-# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
-# in an INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-USE db_datadict;
-CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
-USE test;
-
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.routines (routine_name, routine_type )
-VALUES ('p2', 'procedure');
-
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.routines SET routine_name = 'p2'
-WHERE routine_body = 'sql';
-
---error ER_DBACCESS_DENIED_ERROR
-DELETE FROM information_schema.routines ;
-#
---error ER_DBACCESS_DENIED_ERROR
-TRUNCATE information_schema.routines ;
-
---error ER_DBACCESS_DENIED_ERROR
-CREATE INDEX i7 ON information_schema.routines (routine_name);
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.routines ADD f1 INT;
-#
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.routines DISCARD TABLESPACE;
-
---error ER_DBACCESS_DENIED_ERROR
-DROP TABLE information_schema.routines ;
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.routines RENAME db_datadict.routines;
-#
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
-
-# Cleanup
-DROP DATABASE db_datadict;
-
+--source include/not_embedded.inc
+--source suite/funcs_1/datadict/is_routines.inc
diff --git a/mysql-test/suite/funcs_1/t/is_routines_embedded.test b/mysql-test/suite/funcs_1/t/is_routines_embedded.test
new file mode 100644
index 00000000000..86e1145690d
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_routines_embedded.test
@@ -0,0 +1,20 @@
+# suite/funcs_1/t/is_routines_embedded.test
+#
+# Check the layout of information_schema.routines and the impact of
+# CREATE/ALTER/DROP PROCEDURE/FUNCTION ... on it.
+# Variant for the embedded server
+# The expected results must equal is_routines except that all users
+# have all privileges (affects some result sets).
+#
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_routines.inc
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+--source suite/funcs_1/datadict/is_routines.inc
diff --git a/mysql-test/suite/funcs_1/t/is_schema_privileges.test b/mysql-test/suite/funcs_1/t/is_schema_privileges.test
index 4eb4a273362..1f408d71b39 100644
--- a/mysql-test/suite/funcs_1/t/is_schema_privileges.test
+++ b/mysql-test/suite/funcs_1/t/is_schema_privileges.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MEMORY;
let $other_engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test b/mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test
index cb34d1bad2d..3f60f71fe9a 100644
--- a/mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test
+++ b/mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test
@@ -8,7 +8,10 @@
# testsuite funcs_1
# Create this script based on older scripts and new code.
#
-#
+
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
--echo ##############################################################################
--echo # Testcases 3.2.9.2+3.2.9.3 INFORMATION_SCHEMA.SCHEMATA accessible information
diff --git a/mysql-test/suite/funcs_1/t/is_schemata.test b/mysql-test/suite/funcs_1/t/is_schemata.test
index 7eb08dba463..e262869e6d4 100644
--- a/mysql-test/suite/funcs_1/t/is_schemata.test
+++ b/mysql-test/suite/funcs_1/t/is_schemata.test
@@ -2,12 +2,12 @@
#
# Check the layout of information_schema.schemata, permissions and the impact of
# CREATE/ALTER/DROP SCHEMA on it.
+# Variant for the non embedded server
+# The expected results must equal is_schemata_embedded except that
+# that the privilege system works (affects some result sets).
#
-# Note:
-# This test is not intended
-# - to show information about the all time existing databases
-# information_schema and mysql
-# - for checking storage engine properties
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_schemata.inc
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -15,232 +15,5 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
-
-let $is_table = SCHEMATA;
-
-# The table INFORMATION_SCHEMA.SCHEMATA must exist
-eval SHOW TABLES FROM information_schema LIKE '$is_table';
-
---echo #######################################################################
---echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
---echo #######################################################################
-# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
-# statement, just as if it were an ordinary user-defined table.
-#
---source suite/funcs_1/datadict/is_table_query.inc
-
-
---echo #########################################################################
---echo # Testcase 3.2.9.1: INFORMATION_SCHEMA.SCHEMATA layout;
---echo #########################################################################
-# Ensure that the INFORMATION_SCHEMA.SCHEMATA table has the following columns,
-# in the following order:
-#
-# CATALOG_NAME (always shows NULL),
-# SCHEMA_NAME (shows the name of a database, or schema, on which the current
-# user or PUBLIC has privileges),
-# DEFAULT_CHARACTER_SET_NAME (shows the name of that database's default
-# character set),
-# DEFAULT_COLLATION_NAME (shows the database defaul collation)
-# SQL_PATH (always shows NULL).
-#
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval DESCRIBE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW CREATE TABLE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW COLUMNS FROM information_schema.$is_table;
-
-# Note: Retrieval of information within information_schema.columns about
-# information_schema.schemata is in is_columns_is.test.
-
-# Show that CATALOG_NAME and SQL_PATH are always NULL.
-SELECT catalog_name, schema_name, sql_path
-FROM information_schema.schemata
-WHERE catalog_name IS NOT NULL or sql_path IS NOT NULL;
-
-
---echo ###############################################################################
---echo # Testcases 3.2.9.2+3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
---echo ###############################################################################
-# 3.2.9.2 Ensure that the table shows the relevant information for every
-# database on which the current user or PUBLIC have privileges.
-# 3.2.9.3 Ensure that the table does not show any information on any databases
-# on which the current user and PUBLIC have no privileges.
-#
-# Note: Check of content within information_schema.schemata about the databases
-# information_schema and mysql is in
-# suite/funcs_1/t/is_schemata_is_mysql.test.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict_1;
-DROP DATABASE IF EXISTS db_datadict_2;
---enable_warnings
-CREATE DATABASE db_datadict_1;
-CREATE DATABASE db_datadict_2;
-
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser2'@'localhost';
-CREATE USER 'testuser2'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser3'@'localhost';
-CREATE USER 'testuser3'@'localhost';
-
-GRANT SELECT ON db_datadict_1.* to 'testuser1'@'localhost';
-GRANT SELECT ON db_datadict_1.* to 'testuser2'@'localhost';
-GRANT SELECT ON db_datadict_2.* to 'testuser2'@'localhost';
-
-let $my_select = SELECT * FROM information_schema.schemata
-WHERE schema_name LIKE 'db_datadict_%' ORDER BY schema_name;
-let $my_show = SHOW DATABASES LIKE 'db_datadict_%';
-
-eval $my_select;
---sorted_result
-eval $my_show;
-
---echo # Establish connection testuser1 (user=testuser1)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1, localhost, testuser1, , db_datadict_1);
-# Shows db_datadict_1
-eval $my_select;
---sorted_result
-eval $my_show;
-
---echo # Establish connection testuser2 (user=testuser2)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser2, localhost, testuser2, , db_datadict_2);
-# Shows db_datadict_1 and db_datadict_2
-eval $my_select;
---sorted_result
-eval $my_show;
-
---echo # Establish connection testuser3 (user=testuser3)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser3, localhost, testuser3, , test);
-# Shows neither db_datadict_1 nor db_datadict_2
-eval $my_select;
---sorted_result
-eval $my_show;
-
-# Cleanup
---echo # Switch to connection default and close connections testuser1,testuser2,testuser3
-connection default;
-disconnect testuser1;
-disconnect testuser2;
-disconnect testuser3;
-DROP USER 'testuser1'@'localhost';
-DROP USER 'testuser2'@'localhost';
-DROP USER 'testuser3'@'localhost';
-DROP DATABASE db_datadict_1;
-DROP DATABASE db_datadict_2;
-
-
---echo #################################################################################
---echo # Testcases 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.SCHEMATA modifications
---echo #################################################################################
-# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
-# column) automatically inserts all relevant information on that
-# object into every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.14: Ensure that the alteration of any existing database object
-# automatically updates all relevant information on that object in
-# every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.15: Ensure that the dropping of any existing database object
-# automatically deletes all relevant information on that object from
-# every appropriate INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-
-SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
-CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
-SELECT * FROM information_schema.schemata WHERE schema_name = 'db_datadict';
-
-# Check modify default CHARACTER SET
-SELECT schema_name, default_character_set_name
-FROM information_schema.schemata WHERE schema_name = 'db_datadict';
-ALTER SCHEMA db_datadict CHARACTER SET 'utf8';
-SELECT schema_name, default_character_set_name
-FROM information_schema.schemata WHERE schema_name = 'db_datadict';
-ALTER SCHEMA db_datadict CHARACTER SET 'latin1';
-
-# Check modify default COLLATION
-SELECT schema_name, default_collation_name FROM information_schema.schemata
-WHERE schema_name = 'db_datadict';
-ALTER SCHEMA db_datadict COLLATE 'latin1_general_cs';
-SELECT schema_name, default_collation_name FROM information_schema.schemata
-WHERE schema_name = 'db_datadict';
-
-# Check DROP DATABASE
-SELECT schema_name
-FROM information_schema.schemata WHERE schema_name = 'db_datadict';
-DROP DATABASE db_datadict;
-SELECT schema_name
-FROM information_schema.schemata WHERE schema_name = 'db_datadict';
-
-
---echo ########################################################################
---echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
---echo # DDL on INFORMATION_SCHEMA tables are not supported
---echo ########################################################################
-# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.8: Ensure that no user may create an index on an INFORMATION_SCHEMA table.
-# 3.2.1.9: Ensure that no user may alter the definition of an
-# INFORMATION_SCHEMA table.
-# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
-# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
-# other database.
-# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
-# in an INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
-
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.schemata
- (catalog_name, schema_name, default_character_set_name, sql_path)
-VALUES (NULL, 'db1', 'latin1', NULL);
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.schemata
-SELECT * FROM information_schema.schemata;
-
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.schemata
-SET default_character_set_name = 'utf8'
-WHERE schema_name = 'db_datadict';
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.schemata SET catalog_name = 't_4711';
-
---error ER_DBACCESS_DENIED_ERROR
-DELETE FROM information_schema.schemata WHERE schema_name = 'db_datadict';
---error ER_DBACCESS_DENIED_ERROR
-TRUNCATE information_schema.schemata;
-
---error ER_DBACCESS_DENIED_ERROR
-CREATE INDEX i1 ON information_schema.schemata(schema_name);
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.schemata ADD f1 INT;
-
---error ER_DBACCESS_DENIED_ERROR
-DROP TABLE information_schema.schemata;
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.schemata RENAME db_datadict.schemata;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.schemata RENAME information_schema.xschemata;
-
-# Cleanup
-DROP DATABASE db_datadict;
-
+--source include/not_embedded.inc
+--source suite/funcs_1/datadict/is_schemata.inc
diff --git a/mysql-test/suite/funcs_1/t/is_schemata_embedded.test b/mysql-test/suite/funcs_1/t/is_schemata_embedded.test
new file mode 100644
index 00000000000..5fbb023dd8e
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_schemata_embedded.test
@@ -0,0 +1,20 @@
+# suite/funcs_1/t/is_schemata_embedded.test
+#
+# Check the layout of information_schema.schemata, permissions and the impact of
+# CREATE/ALTER/DROP SCHEMA on it.
+# Variant for the embedded server
+# The expected results must equal is_schemata except that all users
+# have all privileges (affects some result sets).
+#
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_schemata.inc
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+--source suite/funcs_1/datadict/is_schemata.inc
diff --git a/mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test b/mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test
index cabcfa640d7..9bfbf0cf335 100644
--- a/mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test
+++ b/mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test
@@ -8,7 +8,10 @@
# testsuite funcs_1
# Create this script based on older scripts and new code.
#
-#
+
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
--echo #################################################################################
--echo # Testcases 3.2.9.2 + 3.2.9.3: INFORMATION_SCHEMA.SCHEMATA accessible information
diff --git a/mysql-test/suite/funcs_1/t/is_statistics.test b/mysql-test/suite/funcs_1/t/is_statistics.test
index 5b17b711fff..458892a6d91 100644
--- a/mysql-test/suite/funcs_1/t/is_statistics.test
+++ b/mysql-test/suite/funcs_1/t/is_statistics.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MEMORY;
let $other_engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_statistics_mysql.test b/mysql-test/suite/funcs_1/t/is_statistics_mysql.test
index a75cc922777..a1250b67b8c 100644
--- a/mysql-test/suite/funcs_1/t/is_statistics_mysql.test
+++ b/mysql-test/suite/funcs_1/t/is_statistics_mysql.test
@@ -2,6 +2,9 @@
#
# Check the content of information_schema.statistics about tables within
# the database mysql for a high and a low privileged user.
+# Variant for the non embedded server
+# The expected results must equal is_statistics_mysql_embedded except that
+# that the privilege system works (affects some result sets).
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -9,7 +12,7 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
let $database = mysql;
let $my_where = WHERE table_schema = 'mysql';
--source suite/funcs_1/datadict/statistics.inc
-
diff --git a/mysql-test/suite/funcs_1/t/is_statistics_mysql_embedded.test b/mysql-test/suite/funcs_1/t/is_statistics_mysql_embedded.test
new file mode 100644
index 00000000000..6fedbe4d3a8
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_statistics_mysql_embedded.test
@@ -0,0 +1,19 @@
+# suite/funcs_1/t/is_statistics_mysql_embedded.test
+#
+# Check the content of information_schema.statistics about tables within
+# the database mysql for a high and a low privileged user.
+# Variant for the embedded server
+# The expected results must equal is_statistics_mysql except that all users
+# have all privileges (affects some result sets).
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+let $database = mysql;
+let $my_where = WHERE table_schema = 'mysql';
+--source suite/funcs_1/datadict/statistics.inc
diff --git a/mysql-test/suite/funcs_1/t/is_table_constraints.test b/mysql-test/suite/funcs_1/t/is_table_constraints.test
index 60d5ebce703..a64b3bfaa6e 100644
--- a/mysql-test/suite/funcs_1/t/is_table_constraints.test
+++ b/mysql-test/suite/funcs_1/t/is_table_constraints.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test b/mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test
index 5ef1561ccdf..a909676943e 100644
--- a/mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test
+++ b/mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test
@@ -2,6 +2,9 @@
#
# Check the content of information_schema.table_constraints about tables within
# the database mysql (= the system tables) with different privileged users.
+# Variant for the non embedded server
+# The expected results must equal is_table_constraints_mysql_embedded
+# except that the privilege system works (affects some result sets).
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -9,6 +12,6 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
let $table_schema = mysql;
--source suite/funcs_1/datadict/table_constraints.inc
-
diff --git a/mysql-test/suite/funcs_1/t/is_table_constraints_mysql_embedded.test b/mysql-test/suite/funcs_1/t/is_table_constraints_mysql_embedded.test
new file mode 100644
index 00000000000..8994be31be8
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_table_constraints_mysql_embedded.test
@@ -0,0 +1,18 @@
+# suite/funcs_1/t/is_table_constraints_mysql_embedded.test
+#
+# Check the content of information_schema.table_constraints about tables within
+# the database mysql (= the system tables) with different privileged users.
+# Variant for the embedded server
+# The expected results must equal is_table_constraints_mysql
+# except that all users have all privileges (affects some result sets).
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+let $table_schema = mysql;
+--source suite/funcs_1/datadict/table_constraints.inc
diff --git a/mysql-test/suite/funcs_1/t/is_table_privileges.test b/mysql-test/suite/funcs_1/t/is_table_privileges.test
index b095a5ddad6..5ea0dd7c6a7 100644
--- a/mysql-test/suite/funcs_1/t/is_table_privileges.test
+++ b/mysql-test/suite/funcs_1/t/is_table_privileges.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MEMORY;
let $other_engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_tables.test b/mysql-test/suite/funcs_1/t/is_tables.test
index 35b6b7ef007..1c7620ffd45 100644
--- a/mysql-test/suite/funcs_1/t/is_tables.test
+++ b/mysql-test/suite/funcs_1/t/is_tables.test
@@ -2,14 +2,12 @@
#
# Check the layout of information_schema.tables and the impact of
# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+# Variant for the non embedded server
+# The expected results must equal is_tables_embedded except that
+# that the privilege system works (affects some result sets).
#
-# Note:
-# This test is not intended
-# - to show information about the all time existing tables
-# within the databases information_schema and mysql
-# - for checking storage engine properties
-# Therefore please do not alter $engine_type and $other_engine_type.
-# Some results of the subtests depend on the storage engines assigned.
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_tables.inc
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -17,458 +15,5 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
-
-let $engine_type = MEMORY;
-let $other_engine_type = MyISAM;
-
-let $is_table = TABLES;
-
-# The table INFORMATION_SCHEMA.TABLES must exist
-eval SHOW TABLES FROM information_schema LIKE '$is_table';
-
---echo #######################################################################
---echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
---echo #######################################################################
-# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
-# statement, just as if it were an ordinary user-defined table.
-#
---source suite/funcs_1/datadict/is_table_query.inc
-
-
---echo #########################################################################
---echo # Testcase 3.2.12.1: INFORMATION_SCHEMA.TABLES layout
---echo #########################################################################
-# Ensure that the INFORMATION_SCHEMA.TABLES table has the following columns,
-# in the following order:
-#
-# TABLE_CATALOG (always shows NULL),
-# TABLE_SCHEMA (shows the name of the database, or schema, in which an
-# accessible table resides),
-# TABLE_NAME (shows the name of a table which the current user may access),
-# TABLE_TYPE (shows whether the table is a BASE TABLE, a TEMPORARY table,
-# or a VIEW),
-# ENGINE (shows the storage engine used for the table),
-# VERSION (shows the version number of the table's .frm file),
-# ROW_FORMAT (shows the table's row storage format; either FIXED, DYNAMIC
-# or COMPRESSED),
-# TABLE_ROWS (shows the number of rows in the table),
-# AVG_ROW_LENGTH (shows the average length of the table's rows),
-# DATA_LENGTH (shows the length of the table's data file),
-# MAX_DATA_LENGTH (shows the maximum length of the table's data file),
-# INDEX_LENGTH (shows the length of the index file associated with the table),
-# DATA_FREE (shows the number of allocated, unused bytes),
-# AUTO_INCREMENT (shows the next AUTO_INCREMENT value, where applicable),
-# CREATE_TIME (shows the timestamp of the time the table was created),
-# UPDATE_TIME (shows the timestamp of the time the table's data file was
-# last updated),
-# CHECK_TIME (shows the timestamp of the time the table was last checked),
-# TABLE_COLLATION (shows the table's default collation),
-# CHECKSUM (shows the live checksum value for the table, if any; otherwise NULL),
-# CREATE_OPTIONS (shows any additional options used in the table's definition;
-# otherwise NULL),
-# TABLE_COMMENT (shows the comment added to the table's definition;
-# otherwise NULL).
-#
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval DESCRIBE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW CREATE TABLE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW COLUMNS FROM information_schema.$is_table;
-
-# Note: Retrieval of information within information_schema.columns about
-# information_schema.tables is in is_columns_is.test.
-
-# Show that TABLE_CATALOG is always NULL.
-SELECT table_catalog, table_schema, table_name
-FROM information_schema.tables WHERE table_catalog IS NOT NULL;
-
-
---echo ################################################################################
---echo # Testcase 3.2.12.2 + 3.2.12.3: INFORMATION_SCHEMA.TABLES accessible information
---echo ################################################################################
-# 3.2.12.2: Ensure that the table shows the relevant information on every base table
-# and view on which the current user or PUBLIC has privileges.
-# 3.2.12.3: Ensure that the table does not show any information on any tables
-# on which the current user and public have no privileges.
-#
-# Note: Check of content within information_schema.tables about tables within
-# database is in
-# mysql is_tables_mysql.test
-# information_schema is_tables_is.test
-# test% is_tables_<engine>.test
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
-GRANT CREATE, CREATE VIEW, INSERT, SELECT ON db_datadict.*
- TO 'testuser1'@'localhost' WITH GRANT OPTION;
---error 0,ER_CANNOT_USER
-DROP USER 'testuser2'@'localhost';
-CREATE USER 'testuser2'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser3'@'localhost';
-CREATE USER 'testuser3'@'localhost';
-
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.tb1 (f1 INT, f2 INT, f3 INT)
-ENGINE = $engine_type;
-
-GRANT SELECT ON db_datadict.tb1 TO 'testuser1'@'localhost';
-GRANT ALL ON db_datadict.tb1 TO 'testuser2'@'localhost' WITH GRANT OPTION;
-
-let $my_select = SELECT * FROM information_schema.tables
-WHERE table_schema = 'db_datadict' ORDER BY table_name;
-let $my_show = SHOW TABLES FROM db_datadict;
-
---echo # Establish connection testuser1 (user=testuser1)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1, localhost, testuser1, , db_datadict);
-# tb2 is not granted to anyone
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE tb2 (f1 DECIMAL)
-ENGINE = $engine_type;
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE tb3 (f1 VARCHAR(200))
-ENGINE = $engine_type;
-GRANT SELECT ON db_datadict.tb3 to 'testuser3'@'localhost';
-GRANT INSERT ON db_datadict.tb3 to 'testuser2'@'localhost';
-CREATE VIEW v3 AS SELECT * FROM tb3;
-GRANT SELECT ON db_datadict.v3 to 'testuser3'@'localhost';
-
-if ($have_bug_32285)
-{
---disable_ps_protocol
-}
-# We do not want to check here values affected by
-# - the storage engine used
-# - Operating system / Filesystem
-# - start time of test
-# 1 TABLE_CATALOG
-# 2 TABLE_SCHEMA
-# 3 TABLE_NAME
-# 4 TABLE_TYPE
-# 5 ENGINE affected by storage engine used
-# 6 VERSION
-# 7 ROW_FORMAT affected by storage engine used
-# 8 TABLE_ROWS
-# 9 AVG_ROW_LENGTH affected by storage engine used
-# 10 DATA_LENGTH affected by storage engine used and maybe OS
-# 11 MAX_DATA_LENGTH affected by storage engine used and maybe OS
-# 12 INDEX_LENGTH affected by storage engine used and maybe OS
-# 13 DATA_FREE affected by storage engine used and maybe OS
-# 14 AUTO_INCREMENT
-# 15 CREATE_TIME depends roughly on start time of test (*)
-# 16 UPDATE_TIME depends roughly on start time of test (*)
-# 17 CHECK_TIME depends roughly on start time of test and storage engine (*)
-# 18 TABLE_COLLATION
-# 19 CHECKSUM affected by storage engine used
-# 20 CREATE_OPTIONS
-# 21 TABLE_COMMENT affected by some storage engines
-# (*) In case of view or temporary table NULL.
---replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
-eval $my_select;
---enable_ps_protocol
---sorted_result
-eval $my_show;
-
---echo # Establish connection testuser2 (user=testuser2)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser2, localhost, testuser2, , db_datadict);
-if ($have_bug_32285)
-{
---disable_ps_protocol
-}
---replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
-eval $my_select;
---enable_ps_protocol
---sorted_result
-eval $my_show;
-
---echo # Establish connection testuser3 (user=testuser3)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser3, localhost, testuser3, , db_datadict);
-if ($have_bug_32285)
-{
---disable_ps_protocol
-}
---replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
-eval $my_select;
---enable_ps_protocol
---sorted_result
-eval $my_show;
-
---echo # Switch to connection default (user=root)
-connection default;
-# we see only 'public' tables
-if ($have_bug_32285)
-{
---disable_ps_protocol
-}
---replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
-eval $my_select;
---enable_ps_protocol
---sorted_result
-eval $my_show;
-
-# Cleanup
---echo # Close connection testuser1, testuser2, testuser3
-disconnect testuser1;
-disconnect testuser2;
-disconnect testuser3;
-DROP USER 'testuser1'@'localhost';
-DROP USER 'testuser2'@'localhost';
-DROP USER 'testuser3'@'localhost';
-DROP DATABASE db_datadict;
-
-
---echo #########################################################################
---echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TABLES modifications
---echo #########################################################################
-# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
-# column) automatically inserts all relevant information on that
-# object into every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.14: Ensure that the alteration of any existing database object
-# automatically updates all relevant information on that object in
-# every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.15: Ensure that the dropping of any existing database object
-# automatically deletes all relevant information on that object from
-# every appropriate INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP TABLE IF EXISTS test.t1_my_table;
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-
-SELECT table_name FROM information_schema.tables
-WHERE table_name LIKE 't1_my_table%';
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE test.t1_my_table (f1 BIGINT)
-DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
-COMMENT = 'Initial Comment' ENGINE = $engine_type;
-# Settings used in CREATE TABLE must be visible in information_schema.tables.
---vertical_results
---replace_column 5 "#ENG#" 7 "#RF#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT" 16 "#UT#" 17 "#CT#" 19 "#CS#"
-SELECT * FROM information_schema.tables
-WHERE table_name = 't1_my_table';
---horizontal_results
-#
-# Check modification of TABLE_NAME
-SELECT table_name FROM information_schema.tables
-WHERE table_name LIKE 't1_my_table%';
-RENAME TABLE test.t1_my_table TO test.t1_my_tablex;
-SELECT table_name FROM information_schema.tables
-WHERE table_name LIKE 't1_my_table%';
-#
-# Check modification of TABLE_SCHEMA
-SELECT table_schema,table_name FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-RENAME TABLE test.t1_my_tablex TO db_datadict.t1_my_tablex;
-SELECT table_schema,table_name FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check modification of ENGINE
---replace_result $engine_type <engine_type>
-SELECT table_name, engine FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
---replace_result $other_engine_type <other_engine_type>
-eval
-ALTER TABLE db_datadict.t1_my_tablex
-ENGINE = $other_engine_type;
---replace_result $other_engine_type <other_engine_type>
-SELECT table_name, engine FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check modification of TABLE_ROWS
-SELECT table_name, table_rows FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-INSERT INTO db_datadict.t1_my_tablex VALUES(1),(2);
-SELECT table_name, table_rows FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check indirect modification of TABLE_COLLATION
-SELECT table_name, table_collation FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-ALTER TABLE db_datadict.t1_my_tablex DEFAULT CHARACTER SET utf8;
-SELECT table_name, table_collation FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-# Check direct modification of TABLE_COLLATION
-SELECT table_name, table_collation FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-ALTER TABLE db_datadict.t1_my_tablex
-DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;
-SELECT table_name, table_collation FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check modification of TABLE_COMMENT
-SELECT table_name, TABLE_COMMENT FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-ALTER TABLE db_datadict.t1_my_tablex COMMENT 'Changed Comment';
-SELECT table_name, TABLE_COMMENT FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check modification of AUTO_INCREMENT
-SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-ALTER TABLE db_datadict.t1_my_tablex
-ADD f2 BIGINT AUTO_INCREMENT, ADD PRIMARY KEY (f2);
-SELECT table_name, AUTO_INCREMENT FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check modification of ROW_FORMAT
-SELECT table_name, ROW_FORMAT FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-ALTER TABLE db_datadict.t1_my_tablex ROW_FORMAT = dynamic;
-SELECT table_name, ROW_FORMAT FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check "growth" of UPDATE_TIME and modification of CHECKSUM
-SELECT table_name, checksum FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-ALTER TABLE db_datadict.t1_my_tablex CHECKSUM = 1;
-SELECT table_name, checksum IS NOT NULL FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
-FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-# Enforce a time difference bigger than the smallest unit (1 second).
---real_sleep 1.1
-INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
-SELECT UPDATE_TIME > @UPDATE_TIME
- AS "Is current UPDATE_TIME bigger than before last INSERT?"
-FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-SELECT checksum <> @checksum
- AS "Is current CHECKSUM different than before last INSERT?"
-FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Information is used later
-SELECT CREATE_TIME INTO @CREATE_TIME FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check impact of DROP TABLE
-SELECT table_name FROM information_schema.tables
-WHERE table_name LIKE 't1_my_table%';
-DROP TABLE db_datadict.t1_my_tablex;
-SELECT table_name FROM information_schema.tables
-WHERE table_name LIKE 't1_my_table%';
-#
-# Check "growth" of CREATE_TIME
---replace_result $other_engine_type <other_engine_type>
-eval
-CREATE TABLE test.t1_my_tablex (f1 BIGINT)
-ENGINE = $other_engine_type;
-SELECT CREATE_TIME > @CREATE_TIME
- AS "Is current CREATE_TIME bigger than for the old dropped table?"
-FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-DROP TABLE test.t1_my_tablex;
-#
-# Check a VIEW
-CREATE VIEW test.t1_my_tablex AS SELECT 1;
---vertical_results
-SELECT * FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
---horizontal_results
-DROP VIEW test.t1_my_tablex;
-SELECT table_name FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-#
-# Check a temporary table
---replace_result $other_engine_type <other_engine_type>
-eval
-CREATE TEMPORARY TABLE test.t1_my_tablex
-ENGINE = $other_engine_type
- AS SELECT 1;
---vertical_results
-SELECT table_name, table_type FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
---horizontal_results
-DROP TEMPORARY TABLE test.t1_my_tablex;
-#
-# Check impact of DROP SCHEMA
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1_my_tablex
-ENGINE = $engine_type AS
-SELECT 1;
-SELECT table_name FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-DROP DATABASE db_datadict;
-SELECT table_name FROM information_schema.tables
-WHERE table_name = 't1_my_tablex';
-
-
---echo ########################################################################
---echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
---echo # DDL on INFORMATION_SCHEMA tables are not supported
---echo ########################################################################
-# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.8: Ensure that no user may create an index on an
-# INFORMATION_SCHEMA table.
-# 3.2.1.9: Ensure that no user may alter the definition of an
-# INFORMATION_SCHEMA table.
-# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
-# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
-# other database.
-# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
-# in an INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1 (f1 BIGINT)
-ENGINE = $engine_type;
-
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.tables
-SELECT * FROM information_schema.tables;
-
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.tables SET table_schema = 'test'
-WHERE table_name = 't1';
-
---error ER_DBACCESS_DENIED_ERROR
-DELETE FROM information_schema.tables WHERE table_name = 't1';
---error ER_DBACCESS_DENIED_ERROR
-TRUNCATE information_schema.tables;
-
---error ER_DBACCESS_DENIED_ERROR
-CREATE INDEX my_idx_on_tables ON information_schema.tables(table_schema);
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.tables DROP PRIMARY KEY;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.tables ADD f1 INT;
-
---error ER_DBACCESS_DENIED_ERROR
-DROP TABLE information_schema.tables;
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.tables RENAME db_datadict.tables;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.tables RENAME information_schema.xtables;
-
-# Cleanup
-DROP DATABASE db_datadict;
-
+--source include/not_embedded.inc
+--source suite/funcs_1/datadict/is_tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_embedded.test b/mysql-test/suite/funcs_1/t/is_tables_embedded.test
new file mode 100644
index 00000000000..d3c59ffff36
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_tables_embedded.test
@@ -0,0 +1,20 @@
+# suite/funcs_1/t/is_tables_embedded.test
+#
+# Check the layout of information_schema.tables and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+# Variant for the embedded server
+# The expected results must equal is_tables except that all users
+# have all privileges (affects some result sets).
+#
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_tables.inc
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+--source suite/funcs_1/datadict/is_tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_innodb.test b/mysql-test/suite/funcs_1/t/is_tables_innodb.test
index 31a3900c7c3..ed6b7e60bbd 100644
--- a/mysql-test/suite/funcs_1/t/is_tables_innodb.test
+++ b/mysql-test/suite/funcs_1/t/is_tables_innodb.test
@@ -10,13 +10,13 @@
# Create this script based on older scripts and new code.
#
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
--source include/have_innodb.inc
let $engine_type= InnoDB;
---source suite/funcs_1/datadict/datadict_load.inc
---enable_abort_on_error
-# We look only for the tables created by datadict_load.inc.
+# We look only for the tables created by suite/funcs_1/datadict/tables.inc
let $my_where = WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE';
---source suite/funcs_1/datadict/tables1.inc
-
---source suite/funcs_1/include/cleanup.inc
+--source suite/funcs_1/datadict/tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_memory.test b/mysql-test/suite/funcs_1/t/is_tables_memory.test
index 8b5da595462..68909aee866 100644
--- a/mysql-test/suite/funcs_1/t/is_tables_memory.test
+++ b/mysql-test/suite/funcs_1/t/is_tables_memory.test
@@ -10,13 +10,13 @@
# Create this script based on older scripts and new code.
#
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
let $engine_type= MEMORY;
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
---source suite/funcs_1/datadict/datadict_load.inc
---enable_abort_on_error
-# We look only for the tables created by datadict_load.inc.
+# We look only for the tables created by suite/funcs_1/datadict/tables.inc
let $my_where = WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE';
---source suite/funcs_1/datadict/tables1.inc
-
---source suite/funcs_1/include/cleanup.inc
+--source suite/funcs_1/datadict/tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_myisam.test b/mysql-test/suite/funcs_1/t/is_tables_myisam.test
index 4fc88364d87..c3f7c87b0ed 100644
--- a/mysql-test/suite/funcs_1/t/is_tables_myisam.test
+++ b/mysql-test/suite/funcs_1/t/is_tables_myisam.test
@@ -2,7 +2,9 @@
#
# Check the content of information_schema.tables about tables within
# the databases created by the user.
-# Variant for storage engine MyISAM
+# Variant for storage engine MyISAM and the non embedded server
+# The expected results must equal is_columns_myisam_embedded except that
+# that the privilege system works (affects some result sets).
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -10,13 +12,10 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
let $engine_type= MyISAM;
SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
---source suite/funcs_1/datadict/datadict_load.inc
---enable_abort_on_error
-# We look only for the tables created by datadict_load.inc.
+# We look only for the tables created by suite/funcs_1/datadict/tables.inc
let $my_where = WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE';
---source suite/funcs_1/datadict/tables1.inc
-
---source suite/funcs_1/include/cleanup.inc
+--source suite/funcs_1/datadict/tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_myisam_embedded.test b/mysql-test/suite/funcs_1/t/is_tables_myisam_embedded.test
new file mode 100644
index 00000000000..d4595900939
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_tables_myisam_embedded.test
@@ -0,0 +1,22 @@
+# suite/funcs_1/t/is_tables_myisam_embedded.test
+#
+# Check the content of information_schema.tables about tables within
+# the databases created by the user.
+# Variant for storage engine MyISAM and the embedded server
+# The expected results must equal is_tabless_myisam except that
+# that the privilege system works (affects some result sets).
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+let $engine_type= MyISAM;
+SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
+
+# We look only for the tables created by suite/funcs_1/datadict/tables.inc
+let $my_where = WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE';
+--source suite/funcs_1/datadict/tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_mysql.test b/mysql-test/suite/funcs_1/t/is_tables_mysql.test
index a6c3a72a1cf..838704051f8 100644
--- a/mysql-test/suite/funcs_1/t/is_tables_mysql.test
+++ b/mysql-test/suite/funcs_1/t/is_tables_mysql.test
@@ -2,6 +2,9 @@
#
# Check the content of information_schema.tables about tables within
# the database mysql (= the system tables).
+# Variant for the non embedded server
+# The expected results must equal is_tables_mysql_embedded except that
+# that the privilege system works (affects some result sets).
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -9,6 +12,6 @@
# Create this script based on older scripts and new code.
#
+--source include/not_embedded.inc
let $my_where = WHERE table_schema = 'mysql';
--source suite/funcs_1/datadict/tables1.inc
-
diff --git a/mysql-test/suite/funcs_1/t/is_tables_mysql_embedded.test b/mysql-test/suite/funcs_1/t/is_tables_mysql_embedded.test
new file mode 100644
index 00000000000..3f4ca17cdd3
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_tables_mysql_embedded.test
@@ -0,0 +1,18 @@
+# suite/funcs_1/t/is_tables_mysql_embedded.test
+#
+# Check the content of information_schema.tables about tables within
+# the database mysql (= the system tables).
+# Variant for the embedded server
+# The expected results must equal is_tables_mysql except that all users
+# have all privileges (affects some result sets).
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+let $my_where = WHERE table_schema = 'mysql';
+--source suite/funcs_1/datadict/tables1.inc
diff --git a/mysql-test/suite/funcs_1/t/is_tables_ndb.test b/mysql-test/suite/funcs_1/t/is_tables_ndb.test
index 49ce60b08bd..d21831b75c8 100644
--- a/mysql-test/suite/funcs_1/t/is_tables_ndb.test
+++ b/mysql-test/suite/funcs_1/t/is_tables_ndb.test
@@ -10,25 +10,13 @@
# Create this script based on older scripts and new code.
#
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
+
--source include/have_ndb.inc
let $engine_type= NDB;
---source suite/funcs_1/datadict/datadict_load.inc
---enable_abort_on_error
-# We look only for the tables created by datadict_load.inc.
+# We look only for the tables created by suite/funcs_1/datadict/tables.inc
let $my_where = WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE';
---source suite/funcs_1/datadict/tables1.inc
-
-# This test runs with a different set of tables.
-# --source suite/funcs_1/include/cleanup.inc
-DROP DATABASE test1;
-DROP DATABASE test4;
-DROP TABLE test.t1;
-DROP TABLE test.t2;
-DROP TABLE test.t3;
-DROP TABLE test.t4;
-DROP TABLE test.t7;
-DROP TABLE test.t8;
-DROP TABLE test.t9;
-DROP TABLE test.t10;
-DROP TABLE test.t11;
+--source suite/funcs_1/datadict/tables.inc
diff --git a/mysql-test/suite/funcs_1/t/is_triggers.test b/mysql-test/suite/funcs_1/t/is_triggers.test
index 261f082fb50..fd42cb4e734 100644
--- a/mysql-test/suite/funcs_1/t/is_triggers.test
+++ b/mysql-test/suite/funcs_1/t/is_triggers.test
@@ -2,14 +2,12 @@
#
# Check the layout of information_schema.triggers and the impact of
# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+# Variant for the non embedded server
+# The expected results must equal is_triggers_embedded except that
+# that the privilege system works (affects some result sets).
#
-# Note:
-# This test is not intended
-# - to show information about the all time existing triggers
-# (there are no in the moment) within the databases information_schema
-# and mysql
-# - for checking storage engine properties
-# Therefore please do not alter $engine_type and $other_engine_type.
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_triggers.inc
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -17,237 +15,5 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
-
-let $engine_type = MEMORY;
-let $other_engine_type = MyISAM;
-
-let $is_table = TRIGGERS;
-
-# The table INFORMATION_SCHEMA.TRIGGERS must exist
-eval SHOW TABLES FROM information_schema LIKE '$is_table';
-
---echo #######################################################################
---echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
---echo #######################################################################
-# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
-# statement, just as if it were an ordinary user-defined table.
-#
---source suite/funcs_1/datadict/is_table_query.inc
-
-
---echo #########################################################################
---echo # Testcase 3.2.12.1: INFORMATION_SCHEMA.TRIGGERS layout
---echo #########################################################################
-# Ensure that the INFORMATION_SCHEMA.TRIGGERS table has the following columns,
-# in the following order:
-#
-# TRIGGER_CATALOG NULL
-# TRIGGER_SCHEMA name of the database in which the trigger occurs
-# TRIGGER_NAME
-# EVENT_MANIPULATION event associated with the trigger
-# ('INSERT', 'DELETE', or 'UPDATE')
-# EVENT_OBJECT_CATALOG NULL
-# EVENT_OBJECT_SCHEMA database in which the table associated with the
-# trigger occurs
-# EVENT_OBJECT_TABLE name of the table associated with the trigger
-# ACTION_ORDER 0
-# ACTION_CONDITION NULL
-# ACTION_STATEMENT
-# ACTION_ORIENTATION ROW
-# ACTION_TIMING 'BEFORE' or 'AFTER'
-# ACTION_REFERENCE_OLD_TABLE NULL
-# ACTION_REFERENCE_NEW_TABLE NULL
-# ACTION_REFERENCE_OLD_ROW OLD
-# ACTION_REFERENCE_NEW_ROW NEW
-# CREATED NULL (0)
-# SQL_MODE server SQL mode that was in effect at the time
-# when the trigger was created
-# (also used during trigger execution)
-# DEFINER who defined the trigger
-#
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval DESCRIBE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW CREATE TABLE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW COLUMNS FROM information_schema.$is_table;
-
-
-# Note: Retrieval of information within information_schema.columns about
-# information_schema.tables is in is_columns_is.test.
-
-# Show that several columns are always NULL.
-SELECT * FROM information_schema.triggers
-WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
- OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
- OR action_reference_new_table IS NOT NULL;
-
-
---echo ##################################################################################
---echo # Testcase 3.2.18.2 + 3.2.18.3: INFORMATION_SCHEMA.TRIGGERS accessible information
---echo ##################################################################################
-# 3.2.18.2: Ensure that the table shows the relevant information on every
-# trigger on which the current user or PUBLIC has privileges.
-# 3.2.18.3: Ensure that the table does not show any information on any trigger
-# on which the current user and public have no privileges.
-# The SUPER privilege is required for
-# - creation of triggers
-# - retrieval in INFORMATION_SCHEMA.TRIGGERS (affects size of result set)
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser2'@'localhost';
-CREATE USER 'testuser2'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser3'@'localhost';
-CREATE USER 'testuser3'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser4'@'localhost';
-CREATE USER 'testuser4'@'localhost';
-
-GRANT SUPER ON *.* TO 'testuser1'@'localhost';
-GRANT SUPER ON *.* TO 'testuser3'@'localhost';
-GRANT SUPER ON *.* TO 'testuser4'@'localhost';
-GRANT ALL ON db_datadict.* TO 'testuser1'@'localhost' WITH GRANT OPTION;
-
-let $my_select = SELECT * FROM information_schema.triggers
-WHERE trigger_name = 'trg1';
-let $my_show = SHOW TRIGGERS FROM db_datadict;
---echo # Establish connection testuser1 (user=testuser1)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1, localhost, testuser1, , db_datadict);
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1 (f1 INT, f2 INT, f3 INT)
-ENGINE = $engine_type;
-CREATE TRIGGER trg1 BEFORE INSERT
-ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
-GRANT ALL ON db_datadict.t1 TO 'testuser2'@'localhost';
-GRANT SELECT ON db_datadict.t1 TO 'testuser3'@'localhost';
-eval $my_select;
-eval $my_show;
-
---echo # Establish connection testuser2 (user=testuser2)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser2, localhost, testuser2, , db_datadict);
-SHOW GRANTS FOR 'testuser2'@'localhost';
---echo # No SUPER Privilege --> no result for query
-eval $my_select;
-eval $my_show;
-
---echo # Establish connection testuser3 (user=testuser3)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser3, localhost, testuser3, , test);
-SHOW GRANTS FOR 'testuser3'@'localhost';
---echo # SUPER Privilege + SELECT Privilege on t1 --> result for query
-eval $my_select;
-eval $my_show;
-
---echo # Establish connection testuser4 (user=testuser4)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser4, localhost, testuser4, , test);
-SHOW GRANTS FOR 'testuser4'@'localhost';
---echo # SUPER Privilege + no SELECT Privilege on t1 --> no result for query
-eval $my_select;
-eval $my_show;
-
---echo # Switch to connection default and close connections testuser1 - testuser4
-connection default;
-disconnect testuser1;
-disconnect testuser2;
-disconnect testuser3;
-disconnect testuser4;
-eval $my_select;
-eval $my_show;
-DROP USER 'testuser1'@'localhost';
-DROP USER 'testuser2'@'localhost';
-DROP USER 'testuser3'@'localhost';
-DROP USER 'testuser4'@'localhost';
-DROP DATABASE db_datadict;
-
-
---echo #########################################################################
---echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.TRIGGERS modifications
---echo #########################################################################
-# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
-# column) automatically inserts all relevant information on that
-# object into every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.14: Ensure that the alteration of any existing database object
-# automatically updates all relevant information on that object in
-# every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.15: Ensure that the dropping of any existing database object
-# automatically deletes all relevant information on that object from
-# every appropriate INFORMATION_SCHEMA table.
-# FIXME: To be implemented
-
-
---echo ########################################################################
---echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
---echo # DDL on INFORMATION_SCHEMA tables are not supported
---echo ########################################################################
-# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.8: Ensure that no user may create an index on an
-# INFORMATION_SCHEMA table.
-# 3.2.1.9: Ensure that no user may alter the definition of an
-# INFORMATION_SCHEMA table.
-# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
-# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
-# other database.
-# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
-# in an INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1 (f1 BIGINT)
-ENGINE = $engine_type;
-CREATE TRIGGER db_datadict.trg1 BEFORE INSERT
-ON db_datadict.t1 FOR EACH ROW SET @test_before = 2, new.f1 = @test_before;
-
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.triggers
-SELECT * FROM information_schema.triggers;
-
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.triggers SET trigger_schema = 'test'
-WHERE table_name = 't1';
-
---error ER_DBACCESS_DENIED_ERROR
-DELETE FROM information_schema.triggers WHERE trigger_name = 't1';
---error ER_DBACCESS_DENIED_ERROR
-TRUNCATE information_schema.triggers;
-
---error ER_DBACCESS_DENIED_ERROR
-CREATE INDEX my_idx_on_triggers ON information_schema.triggers(trigger_schema);
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.triggers DROP PRIMARY KEY;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.triggers ADD f1 INT;
-
---error ER_DBACCESS_DENIED_ERROR
-DROP TABLE information_schema.triggers;
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.triggers RENAME db_datadict.triggers;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.triggers RENAME information_schema.xtriggers;
-
-# Cleanup
-DROP DATABASE db_datadict;
-
+--source include/not_embedded.inc
+--source suite/funcs_1/datadict/is_triggers.inc
diff --git a/mysql-test/suite/funcs_1/t/is_triggers_embedded.test b/mysql-test/suite/funcs_1/t/is_triggers_embedded.test
new file mode 100644
index 00000000000..d8e99c77bff
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_triggers_embedded.test
@@ -0,0 +1,20 @@
+# suite/funcs_1/t/is_triggers_embedded.test
+#
+# Check the layout of information_schema.triggers and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+# Variant for the embedded server
+# The expected results must equal is_triggers except that all users
+# have all privileges (affects some result sets).
+#
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_triggers.inc
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+--source suite/funcs_1/datadict/is_triggers.inc
diff --git a/mysql-test/suite/funcs_1/t/is_user_privileges.test b/mysql-test/suite/funcs_1/t/is_user_privileges.test
index dc39ad6fe4f..1d0d3e51aae 100644
--- a/mysql-test/suite/funcs_1/t/is_user_privileges.test
+++ b/mysql-test/suite/funcs_1/t/is_user_privileges.test
@@ -16,7 +16,9 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
+# This test cannot be used for the embedded server because we check here
+# privileges.
+--source include/not_embedded.inc
let $engine_type = MEMORY;
let $other_engine_type = MyISAM;
diff --git a/mysql-test/suite/funcs_1/t/is_views.test b/mysql-test/suite/funcs_1/t/is_views.test
index 9819fe1ffe0..b8c9c114e5f 100644
--- a/mysql-test/suite/funcs_1/t/is_views.test
+++ b/mysql-test/suite/funcs_1/t/is_views.test
@@ -2,13 +2,12 @@
#
# Check the layout of information_schema.views and the impact of
# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+# Variant for the non embedded server
+# The expected results must equal is_views_embedded except that
+# that the privilege system works (affects some result sets).
#
-# Note:
-# - This test should not check storage engine properties.
-# - Please do not change the storage engines used within this test
-# except you know that the impact is acceptable.
-# Some storage engines might not support the modification of
-# properties like in the following tests.
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_views.inc
#
# Author:
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
@@ -16,290 +15,5 @@
# Create this script based on older scripts and new code.
#
-# --source suite/funcs_1/datadict/datadict.pre
-
-let $engine_type = MEMORY;
-let $other_engine_type = MyISAM;
-
-let $is_table = VIEWS;
-
-# The table INFORMATION_SCHEMA.VIEWS must exist
-eval SHOW TABLES FROM information_schema LIKE '$is_table';
-
---echo #######################################################################
---echo # Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
---echo #######################################################################
-# Ensure that every INFORMATION_SCHEMA table can be queried with a SELECT
-# statement, just as if it were an ordinary user-defined table.
-#
---source suite/funcs_1/datadict/is_table_query.inc
-
-
---echo #########################################################################
---echo # Testcase 3.2.13.1: INFORMATION_SCHEMA.VIEWS layout
---echo #########################################################################
-# Ensure that the INFORMATION_SCHEMA.VIEWS table has the following columns,
-# in the following order:
-#
-# TABLE_CATALOG (always shows NULL),
-# TABLE_SCHEMA (shows the database, or schema, in which an accessible
-# view resides),
-# TABLE_NAME (shows the name of a view accessible to the current user),
-# VIEW_DEFINITION (shows the SELECT statement that makes up the
-# view's definition),
-# CHECK_OPTION (shows the value of the WITH CHECK OPTION clause used to define
-# the view, either NONE, LOCAL or CASCADED),
-# IS_UPDATABLE (shows whether the view is an updatable view),
-# DEFINER (added with 5.0.14),
-# SECURITY_TYPE (added with 5.0.14).
-#
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval DESCRIBE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW CREATE TABLE information_schema.$is_table;
---source suite/funcs_1/datadict/datadict_bug_12777.inc
-eval SHOW COLUMNS FROM information_schema.$is_table;
-
-# Note: Retrieval of information within information_schema.columns about
-# information_schema.views is in is_columns_is.test.
-
-# Show that TABLE_CATALOG is always NULL.
-SELECT table_catalog, table_schema, table_name
-FROM information_schema.views WHERE table_catalog IS NOT NULL;
-
-
---echo ################################################################################
---echo # Testcase 3.2.13.2 + 3.2.13.3: INFORMATION_SCHEMA.VIEWS accessible information
---echo ################################################################################
-# 3.2.13.2: Ensure that the table shows the relevant information on every view for
-# which the current user or PUBLIC has the SHOW CREATE VIEW privilege.
-# 3.2.13.3: Ensure that the table does not show any information on any views for which
-# the current user and PUBLIC have no SHOW CREATE VIEW privilege.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'testuser2'@'localhost';
-CREATE USER 'testuser2'@'localhost';
---error 0,ER_CANNOT_USER
-DROP USER 'test_no_views'@'localhost';
-CREATE USER 'test_no_views'@'localhost';
-
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE db_datadict.t1(f1 INT, f2 INT, f3 INT)
-ENGINE = $engine_type;
-CREATE VIEW db_datadict.v_granted_to_1 AS SELECT * FROM db_datadict.t1;
-CREATE VIEW db_datadict.v_granted_glob AS SELECT f2, f3 FROM db_datadict.t1;
-
-GRANT SELECT ON db_datadict.t1 TO 'testuser1'@'localhost';
-GRANT SELECT ON db_datadict.v_granted_to_1 TO 'testuser1'@'localhost';
-GRANT SHOW VIEW, CREATE VIEW ON db_datadict.* TO 'testuser2'@'localhost';
-
-let $select = SELECT * FROM information_schema.views
-WHERE table_schema = 'db_datadict' ORDER BY table_name;
-eval $select;
-
---echo # Establish connection testuser1 (user=testuser1)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser1, localhost, testuser1, , test);
-eval $select;
-
---echo # Establish connection testuser2 (user=testuser2)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (testuser2, localhost, testuser2, , test);
-eval $select;
-
---echo # Establish connection test_no_views (user=test_no_views)
---replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
-connect (test_no_views, localhost, test_no_views, , test);
-eval $select;
-
-# Cleanup
---echo # Switch to connection default and close all other connections
-connection default;
-disconnect testuser1;
-disconnect testuser2;
-disconnect test_no_views;
-DROP USER 'testuser1'@'localhost';
-DROP USER 'testuser2'@'localhost';
-DROP USER 'test_no_views'@'localhost';
-DROP DATABASE db_datadict;
-
---echo #########################################################################
---echo # 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.VIEWS modifications
---echo #########################################################################
-# 3.2.1.13: Ensure that the creation of any new database object (e.g. table or
-# column) automatically inserts all relevant information on that
-# object into every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.14: Ensure that the alteration of any existing database object
-# automatically updates all relevant information on that object in
-# every appropriate INFORMATION_SCHEMA table.
-# 3.2.1.15: Ensure that the dropping of any existing database object
-# automatically deletes all relevant information on that object from
-# every appropriate INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP TABLE IF EXISTS test.t1_my_table;
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
-DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
-ENGINE = $engine_type;
---error 0,ER_CANNOT_USER
-DROP USER 'testuser1'@'localhost';
-CREATE USER 'testuser1'@'localhost';
-
-# Check just created VIEW
-SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
-CREATE VIEW test.t1_view AS SELECT DISTINCT f1 FROM test.t1_table;
-SELECT * FROM information_schema.views
-WHERE table_name LIKE 't1_%';
-#
-# Check modification of DEFINER, SECURITY_TYPE, IS_UPDATABLE, VIEW_DEFINITION,
-# CHECK_OPTION
-SELECT table_name,definer FROM information_schema.views
-WHERE table_name = 't1_view';
-ALTER DEFINER = 'testuser1'@'localhost' VIEW test.t1_view AS
-SELECT DISTINCT f1 FROM test.t1_table;
-# The next result set could suffer from
-# Bug#22763 Disrepancy between SHOW CREATE VIEW and I_S.VIEWS
-# because the VIEW definition is missing.
-# Therefore we exclude the problematic columns from the result set.
-SELECT table_name,definer,security_type FROM information_schema.views
-WHERE table_name LIKE 't1_%';
-ALTER DEFINER = 'root'@'localhost' SQL SECURITY INVOKER VIEW test.t1_view AS
-SELECT f1 FROM test.t1_table WITH LOCAL CHECK OPTION;
-SELECT table_name,definer,security_type FROM information_schema.views
-WHERE table_name LIKE 't1_%';
-#
-# Check modification of TABLE_SCHEMA
-SELECT table_schema,table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_schema,table_name;
---error ER_FORBID_SCHEMA_CHANGE
-RENAME TABLE test.t1_view TO db_datadict.t1_view;
-# Workaround for missing move to another database
-DROP VIEW test.t1_view;
-CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
-SELECT table_schema,table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_schema,table_name;
-#
-# Check modification of TABLE_NAME
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-RENAME TABLE db_datadict.t1_view TO db_datadict.t1_viewx;
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-#
-# Check impact of DROP VIEW
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-DROP VIEW db_datadict.t1_viewx;
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-CREATE VIEW db_datadict.t1_view AS SELECT * FROM test.t1_table;
-#
-# Check impact of DROP base TABLE of VIEW
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-DROP TABLE test.t1_table;
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
---replace_result $engine_type <engine_type>
-eval
-CREATE TABLE test.t1_table (f1 BIGINT, f2 CHAR(10))
-DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci COMMENT = 'Initial Comment'
-ENGINE = $engine_type;
-#
-# Check impact of DROP SCHEMA
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-DROP DATABASE db_datadict;
-SELECT table_name FROM information_schema.views
-WHERE table_name LIKE 't1_%'
-ORDER BY table_name;
-
-# Cleanup
-DROP USER 'testuser1'@'localhost';
-DROP TABLE test.t1_table;
-
---echo ########################################################################
---echo # Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
---echo # DDL on INFORMATION_SCHEMA table are not supported
---echo ########################################################################
-# 3.2.1.3: Ensure that no user may execute an INSERT statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.4: Ensure that no user may execute an UPDATE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.5: Ensure that no user may execute a DELETE statement on any
-# INFORMATION_SCHEMA table.
-# 3.2.1.8: Ensure that no user may create an index on an
-# INFORMATION_SCHEMA table.
-# 3.2.1.9: Ensure that no user may alter the definition of an
-# INFORMATION_SCHEMA table.
-# 3.2.1.10: Ensure that no user may drop an INFORMATION_SCHEMA table.
-# 3.2.1.11: Ensure that no user may move an INFORMATION_SCHEMA table to any
-# other database.
-# 3.2.1.12: Ensure that no user may directly add to, alter, or delete any data
-# in an INFORMATION_SCHEMA table.
-#
---disable_warnings
-DROP DATABASE IF EXISTS db_datadict;
---enable_warnings
-CREATE DATABASE db_datadict;
-CREATE VIEW db_datadict.v1 AS SELECT 1;
-
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.views
-SELECT * FROM information_schema.views;
---error ER_DBACCESS_DENIED_ERROR
-INSERT INTO information_schema.views(table_schema, table_name)
-VALUES ('db2', 'v2');
-
---error ER_DBACCESS_DENIED_ERROR
-UPDATE information_schema.views SET table_schema = 'test'
-WHERE table_name = 't1';
-
---error ER_DBACCESS_DENIED_ERROR
-DELETE FROM information_schema.views WHERE table_name = 't1';
---error ER_DBACCESS_DENIED_ERROR
-TRUNCATE information_schema.views;
-
---error ER_DBACCESS_DENIED_ERROR
-CREATE INDEX my_idx_on_views ON information_schema.views(table_schema);
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.views DROP PRIMARY KEY;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.views ADD f1 INT;
-
---error ER_DBACCESS_DENIED_ERROR
-DROP TABLE information_schema.views;
-
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.views RENAME db_datadict.views;
---error ER_DBACCESS_DENIED_ERROR
-ALTER TABLE information_schema.views RENAME information_schema.xviews;
-
-# Cleanup
-DROP DATABASE db_datadict;
-
+--source include/not_embedded.inc
+--source suite/funcs_1/datadict/is_views.inc
diff --git a/mysql-test/suite/funcs_1/t/is_views_embedded.test b/mysql-test/suite/funcs_1/t/is_views_embedded.test
new file mode 100644
index 00000000000..66b4f59e897
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_views_embedded.test
@@ -0,0 +1,20 @@
+# suite/funcs_1/t/is_views_embedded.test
+#
+# Check the layout of information_schema.views and the impact of
+# CREATE/ALTER/DROP TABLE/VIEW/SCHEMA ... on it.
+# Variant for the embedded server
+# The expected results must equal is_views except that all users
+# have all privileges (affects some result sets).
+#
+# There is detailed information about this test within
+# suite/funcs_1/datadict/is_views.inc
+#
+# Author:
+# 2008-06-06 mleich Create this this variant for the embedded server.
+#
+
+if (`SELECT VERSION() NOT LIKE '%embedded%'`)
+{
+ --skip Test requires: embedded server
+}
+--source suite/funcs_1/datadict/is_views.inc
diff --git a/mysql-test/suite/funcs_1/t/memory_trig_0102.test b/mysql-test/suite/funcs_1/t/memory_trig_0102.test
index f13ca29e583..a9e4f1142d0 100644
--- a/mysql-test/suite/funcs_1/t/memory_trig_0102.test
+++ b/mysql-test/suite/funcs_1/t/memory_trig_0102.test
@@ -4,5 +4,6 @@
#
# Set $engine_type
let $engine_type= memory;
+--source suite/funcs_1/include/bug28309_skip.inc
--source suite/funcs_1/triggers/triggers_0102.inc
diff --git a/mysql-test/suite/funcs_1/t/memory_trig_0407.test b/mysql-test/suite/funcs_1/t/memory_trig_0407.test
index be87f191b2c..93efe2d0fe8 100644
--- a/mysql-test/suite/funcs_1/t/memory_trig_0407.test
+++ b/mysql-test/suite/funcs_1/t/memory_trig_0407.test
@@ -4,5 +4,6 @@
#
# Set $engine_type
let $engine_type= memory;
+--source suite/funcs_1/include/bug28309_skip.inc
--source suite/funcs_1/triggers/triggers_0407.inc
diff --git a/mysql-test/suite/funcs_1/t/memory_trig_1011ext.test b/mysql-test/suite/funcs_1/t/memory_trig_1011ext.test
index e604d172f75..339a5a9cd9a 100644
--- a/mysql-test/suite/funcs_1/t/memory_trig_1011ext.test
+++ b/mysql-test/suite/funcs_1/t/memory_trig_1011ext.test
@@ -4,5 +4,6 @@
#
# Set $engine_type
let $engine_type= memory;
+--source suite/funcs_1/include/bug28309_skip.inc
--source suite/funcs_1/triggers/triggers_1011ext.inc
diff --git a/mysql-test/suite/funcs_1/t/memory_views.test b/mysql-test/suite/funcs_1/t/memory_views.test
index b506f08cf31..9bf9af11dfa 100644
--- a/mysql-test/suite/funcs_1/t/memory_views.test
+++ b/mysql-test/suite/funcs_1/t/memory_views.test
@@ -4,6 +4,7 @@
#
# Set $engine_type
let $engine_type= memory;
+--source suite/funcs_1/include/bug28309_skip.inc
# Create some objects needed in many testcases
USE test;
diff --git a/mysql-test/suite/funcs_1/triggers/trig_frkey.inc b/mysql-test/suite/funcs_1/triggers/trig_frkey.inc
index 5d6b6a72b1e..5aba368f531 100644
--- a/mysql-test/suite/funcs_1/triggers/trig_frkey.inc
+++ b/mysql-test/suite/funcs_1/triggers/trig_frkey.inc
@@ -1,50 +1,59 @@
#################################################################
-# This file inclde tests that address the foreign key cases of
+# This file include tests that address the foreign key cases of
# the following requirements since they are specific to innodb.
# Other test cases for these requirements are included in the
-# triggers_master.test file.
+# triggers_*.inc files.
#################################################################
--disable_abort_on_error
-#Section x.x.x.1
+# Section x.x.x.1
# Test case: Verifing that a trigger that activates a primary key results in
# the primary key acting correctly on the foreign key
let $message= Testcase x.x.x.1:;
--source include/show_msg.inc
- --disable_warnings
- DROP TABLE IF EXISTS t0, t1, t2;
- --enable_warnings
-
- eval CREATE TABLE t0 (col1 char(50)) ENGINE=$engine_type;
- eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
- PRIMARY KEY (id)) ENGINE=$engine_type;
- eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
- INDEX par_ind (f_id), col1 char(50),
- FOREIGN KEY (f_id) REFERENCES t1(id)
- ON DELETE SET NULL) ENGINE=$engine_type;
-
- insert into t1 values (1,'Department A');
- insert into t1 values (2,'Department B');
- insert into t1 values (3,'Department C');
- insert into t2 values (1,2,'Emp 1');
- insert into t2 values (2,2,'Emp 2');
- insert into t2 values (3,2,'Emp 3');
-
- create trigger trig after insert on t0 for each row
- delete from t1 where col1=new.col1;
-
- select * from t2;
-lock tables t0 write, t1 write;
- insert into t0 values ('Department B');
-unlock tables;
- select * from t2;
+--disable_warnings
+DROP TABLE IF EXISTS t0, t1, t2;
+--enable_warnings
+
+--replace_result $engine_type <engine_to_be_tested>
+eval
+CREATE TABLE t0 (col1 CHAR(50))
+ENGINE = $engine_type;
+--replace_result $engine_type <engine_to_be_tested>
+eval
+CREATE TABLE t1 (id INT NOT NULL, col1 CHAR(50), PRIMARY KEY (id))
+ENGINE = $engine_type;
+--replace_result $engine_type <engine_to_be_tested>
+eval
+CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
+ INDEX par_ind (f_id), col1 CHAR(50),
+ FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL)
+ENGINE = $engine_type;
+
+INSERT INTO t1 VALUES (1,'Department A');
+INSERT INTO t1 VALUES (2,'Department B');
+INSERT INTO t1 VALUES (3,'Department C');
+INSERT INTO t2 VALUES (1,2,'Emp 1');
+INSERT INTO t2 VALUES (2,2,'Emp 2');
+INSERT INTO t2 VALUES (3,2,'Emp 3');
+
+CREATE TRIGGER trig AFTER INSERT ON t0 FOR EACH ROW
+DELETE FROM t1 WHERE col1 = new.col1;
+
+--sorted_result
+SELECT * FROM t2;
+LOCK TABLES t0 WRITE, t1 WRITE;
+INSERT INTO t0 VALUES ('Department B');
+UNLOCK TABLES;
+--sorted_result
+SELECT * FROM t2;
# Cleanup
- drop trigger trig;
- drop table t2, t1;
+DROP TRIGGER trig;
+DROP TABLE t2, t1;
#Section x.x.x.2
@@ -53,41 +62,47 @@ unlock tables;
let $message= Testcase x.x.x.2:;
--source include/show_msg.inc
- --disable_warnings
- DROP TABLE IF EXISTS t1, t2;
- --enable_warnings
-
- eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),
- PRIMARY KEY (id)) ENGINE=$engine_type;
- eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
- INDEX par_ind (f_id), col1 char(50),
- FOREIGN KEY (f_id) REFERENCES t1(id)
- ON UPDATE CASCADE) ENGINE=$engine_type;
-
- insert into t1 values (1,'Department A');
- insert into t1 values (2,'Department B');
- insert into t1 values (3,'Department C');
- insert into t2 values (1,2,'Emp 1');
- insert into t2 values (2,3,'Emp 2');
-
- --error 1452
- insert into t2 values (3,4,'Emp 3');
-
- create trigger tr_t2 before insert on t2 for each row
- insert into t1 values(new.f_id, concat('New Department ', new.f_id));
-
-lock tables t1 write, t2 write;
- insert into t2 values (3,4,'Emp 3');
-unlock tables;
-
- select * from t1;
- select * from t2;
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+--enable_warnings
+
+--replace_result $engine_type <engine_to_be_tested>
+eval
+CREATE TABLE t1 (id INT NOT NULL, col1 CHAR(50), PRIMARY KEY (id))
+ENGINE = $engine_type;
+--replace_result $engine_type <engine_to_be_tested>
+eval
+CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,
+ INDEX par_ind (f_id), col1 CHAR(50),
+ FOREIGN KEY (f_id) REFERENCES t1(id) ON UPDATE CASCADE)
+ENGINE = $engine_type;
+
+INSERT INTO t1 VALUES (1,'Department A');
+INSERT INTO t1 VALUES (2,'Department B');
+INSERT INTO t1 VALUES (3,'Department C');
+INSERT INTO t2 VALUES (1,2,'Emp 1');
+INSERT INTO t2 VALUES (2,3,'Emp 2');
+
+--error ER_NO_REFERENCED_ROW_2
+insert into t2 VALUES (3,4,'Emp 3');
+
+CREATE TRIGGER tr_t2 BEFORE INSERT ON t2 FOR EACH ROW
+INSERT INTO t1 VALUES(new.f_id, CONCAT('New Department ', new.f_id));
+
+LOCK TABLES t1 WRITE, t2 WRITE;
+INSERT INTO t2 VALUES (3,4,'Emp 3');
+UNLOCK TABLES;
+
+--sorted_result
+SELECT * FROM t1;
+--sorted_result
+SELECT * FROM t2;
# Cleanup
- drop trigger tr_t2;
- drop table t2, t1, t0;
-
+DROP TRIGGER tr_t2;
+DROP TABLE t2, t1, t0;
-let $message= Foreign Key tests disabled (bug 11472 - stored in trig_frkey2.test);
---source include/show_msg.inc
+--echo
+--echo Foreign Key tests disabled (bug 11472 - stored in trig_frkey2.test)
+--echo -------------------------------------------------------------------
diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03.inc b/mysql-test/suite/funcs_1/triggers/triggers_03.inc
index b0b98bf27e5..d0bfc5e9c0e 100644
--- a/mysql-test/suite/funcs_1/triggers/triggers_03.inc
+++ b/mysql-test/suite/funcs_1/triggers/triggers_03.inc
@@ -5,6 +5,10 @@
# (test case numbering refer to requirement document TP v1.1)
#======================================================================
+# This test cannot be used for the embedded server because we check here
+# privilgeges.
+--source include/not_embedded.inc
+
USE test;
--source suite/funcs_1/include/tb3.inc
diff --git a/mysql-test/suite/funcs_1/views/func_view.inc b/mysql-test/suite/funcs_1/views/func_view.inc
index fee9fe190b2..709560cdf99 100644
--- a/mysql-test/suite/funcs_1/views/func_view.inc
+++ b/mysql-test/suite/funcs_1/views/func_view.inc
@@ -92,7 +92,7 @@
# ./mysql-test-run.pl --socket=var/tmp/master.sock --start-dirty
# 3. Issue the statements needed by using "mysql" or "mysqltest".
#
-# Maybe an internal routine of this test fails. Please ask me (ML) or
+# Maybe an internal routine of this test fails. Please ask me (mleich) or
# enable the logging of auxiliary queries and try to analyze the
# problem.
#
@@ -343,7 +343,7 @@ INSERT INTO t1_values SET
# fv1.inc sets t1_selects.disable_result to 'No' and the effect will be,
# that the result set will be logged.
#
-# If you do have the time to check the result sets do the insert of the
+# If you do not have the time to check the result sets do the insert of the
# SELECT with function via:
# eval SET @my_select =
# '<your SELECT>';
@@ -406,11 +406,11 @@ eval INSERT INTO t1_values SET select_id = @select_id,
# 1. Cast Functions and Operators
# 1.1 CAST
#
-# Note(ML): I guess the CAST routines are used in many other functions.
-# Therefore check also nearly all "ugly" variants like
-# CAST(<string composed of non digits> AS DECIMAL) here.
+# Note(mleich): I guess the CAST routines are used in many other functions.
+# Therefore check also nearly all "ugly" variants like
+# CAST(<string composed of non digits> AS DECIMAL) here.
#
-# suite/funcs_1/views/fv_cast.inc contains
+# suite/funcs_1/views/fv_cast.inc contains
# SELECT CAST($col_type AS $target_type), ...
#
#
@@ -771,7 +771,7 @@ $col_type, id FROM t1_values';
#
# 2.2.1 IF(expr1,expr2,expr3) with expr1 = <column>
#
-# Note(ML): Strings, which do not contain a number -> FALSE
+# Note(mleich): Strings, which do not contain a number -> FALSE
#
# suite/funcs_1/views/fv_if1.inc contains
# SELECT IF($col_type, 'IS TRUE', 'IS NOT TRUE'), ...
@@ -818,9 +818,10 @@ let $col_type= my_year;
# suite/funcs_1/views/fv_if2.inc contains
# SELECT IF($col_type IS NULL, 'IS NULL', 'IS NOT NULL'), ...
#
-# Note(ML): July 2005 IF($col_type IS NULL, ...) is mapped to a VIEW definition
-# create ... view ... as
-# select if(isnull(`test`.`t1`.`f1`),_latin1'IS NULL',
+# Note(mleich): July 2005
+# IF($col_type IS NULL, ...) is mapped to a VIEW definition
+# create ... view ... as
+# select if(isnull(`test`.`t1`.`f1`),_latin1'IS NULL',
# _latin1'IS NOT NULL'),...
#
# Bug#11689 success on Create view .. IF(col1 IS NULL,...), col2 ; but SELECT fails
diff --git a/mysql-test/suite/funcs_1/views/views_master.inc b/mysql-test/suite/funcs_1/views/views_master.inc
index b6628070705..bc475c6807c 100644
--- a/mysql-test/suite/funcs_1/views/views_master.inc
+++ b/mysql-test/suite/funcs_1/views/views_master.inc
@@ -3998,7 +3998,7 @@ DESCRIBE v1;
SELECT * FROM t1 order by f1, f2;
SELECT * FROM v1 order by 2;
# Some statements for comparison
-# - the ugly SQRT('DEF) as constant
+# - the ugly SQRT('DEF') as constant
SELECT SQRT('DEF');
# - Will a VIEW based on the same definition show the same result ?
CREATE VIEW v2 AS SELECT SQRT('DEF');