List:Commits« Previous MessageNext Message »
From:Timothy Smith Date:June 27 2008 10:31pm
Subject:bzr commit into mysql-5.0 branch (timothy.smith:2641)
View as plain text  
#At file:///home/tsmith/m/bzr/50-bugteam-b20748/

 2641 Timothy Smith	2008-06-27 [merge]
      Merge from upstream (my:5.0-bugteam)
added:
  mysql-test/include/wait_condition.inc
  mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
  mysql-test/suite/funcs_1/datadict/is_routines.inc
  mysql-test/suite/funcs_1/datadict/is_schemata.inc
  mysql-test/suite/funcs_1/datadict/is_tables.inc
  mysql-test/suite/funcs_1/datadict/is_triggers.inc
  mysql-test/suite/funcs_1/datadict/is_views.inc
  mysql-test/suite/funcs_1/datadict/tables.inc
  mysql-test/suite/funcs_1/include/bug28309_skip.inc
  mysql-test/suite/funcs_1/r/is_cml_innodb.result
  mysql-test/suite/funcs_1/r/is_cml_memory.result
  mysql-test/suite/funcs_1/r/is_cml_myisam.result
  mysql-test/suite/funcs_1/r/is_cml_ndb.result
  mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
  mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
  mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result
  mysql-test/suite/funcs_1/r/is_routines_embedded.result
  mysql-test/suite/funcs_1/r/is_schemata_embedded.result
  mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_tables_embedded.result
  mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
  mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_triggers_embedded.result
  mysql-test/suite/funcs_1/r/is_views_embedded.result
  mysql-test/suite/funcs_1/t/is_cml_innodb.test
  mysql-test/suite/funcs_1/t/is_cml_memory.test
  mysql-test/suite/funcs_1/t/is_cml_myisam.test
  mysql-test/suite/funcs_1/t/is_cml_ndb.test
  mysql-test/suite/funcs_1/t/is_columns_is_embedded.test
  mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test
  mysql-test/suite/funcs_1/t/is_columns_mysql_embedded.test
  mysql-test/suite/funcs_1/t/is_key_column_usage_embedded.test
  mysql-test/suite/funcs_1/t/is_routines_embedded.test
  mysql-test/suite/funcs_1/t/is_schemata_embedded.test
  mysql-test/suite/funcs_1/t/is_statistics_mysql_embedded.test
  mysql-test/suite/funcs_1/t/is_table_constraints_mysql_embedded.test
  mysql-test/suite/funcs_1/t/is_tables_embedded.test
  mysql-test/suite/funcs_1/t/is_tables_myisam_embedded.test
  mysql-test/suite/funcs_1/t/is_tables_mysql_embedded.test
  mysql-test/suite/funcs_1/t/is_triggers_embedded.test
  mysql-test/suite/funcs_1/t/is_views_embedded.test
modified:
  client/mysql.cc
  mysql-test/r/mysql.result
  mysql-test/r/varbinary.result
  mysql-test/suite/funcs_1/datadict/columns.inc
  mysql-test/suite/funcs_1/datadict/tables1.inc
  mysql-test/suite/funcs_1/datadict/tables2.inc
  mysql-test/suite/funcs_1/include/innodb_tb1.inc
  mysql-test/suite/funcs_1/include/innodb_tb3.inc
  mysql-test/suite/funcs_1/include/innodb_tb4.inc
  mysql-test/suite/funcs_1/include/memory_tb4.inc
  mysql-test/suite/funcs_1/include/myisam_tb1.inc
  mysql-test/suite/funcs_1/include/myisam_tb3.inc
  mysql-test/suite/funcs_1/include/myisam_tb4.inc
  mysql-test/suite/funcs_1/r/innodb_trig_frkey.result
  mysql-test/suite/funcs_1/r/is_columns_innodb.result
  mysql-test/suite/funcs_1/r/is_columns_memory.result
  mysql-test/suite/funcs_1/r/is_columns_myisam.result
  mysql-test/suite/funcs_1/r/is_tables_innodb.result
  mysql-test/suite/funcs_1/r/is_tables_is.result
  mysql-test/suite/funcs_1/r/is_tables_memory.result
  mysql-test/suite/funcs_1/r/is_tables_myisam.result
  mysql-test/suite/funcs_1/r/is_tables_mysql.result
  mysql-test/suite/funcs_1/r/is_tables_ndb.result
  mysql-test/suite/funcs_1/storedproc/storedproc_06.inc
  mysql-test/suite/funcs_1/storedproc/storedproc_10.inc
  mysql-test/suite/funcs_1/t/disabled.def
  mysql-test/suite/funcs_1/t/innodb_trig_frkey.test
  mysql-test/suite/funcs_1/t/is_basics_mixed.test
  mysql-test/suite/funcs_1/t/is_column_privileges.test
  mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test
  mysql-test/suite/funcs_1/t/is_columns.test
  mysql-test/suite/funcs_1/t/is_columns_innodb.test
  mysql-test/suite/funcs_1/t/is_columns_is.test
  mysql-test/suite/funcs_1/t/is_columns_memory.test
  mysql-test/suite/funcs_1/t/is_columns_myisam.test
  mysql-test/suite/funcs_1/t/is_columns_mysql.test
  mysql-test/suite/funcs_1/t/is_columns_ndb.test
  mysql-test/suite/funcs_1/t/is_key_column_usage.test
  mysql-test/suite/funcs_1/t/is_routines.test
  mysql-test/suite/funcs_1/t/is_schema_privileges.test
  mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test
  mysql-test/suite/funcs_1/t/is_schemata.test
  mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test
  mysql-test/suite/funcs_1/t/is_statistics.test
  mysql-test/suite/funcs_1/t/is_statistics_mysql.test
  mysql-test/suite/funcs_1/t/is_table_constraints.test
  mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test
  mysql-test/suite/funcs_1/t/is_table_privileges.test
  mysql-test/suite/funcs_1/t/is_tables.test
  mysql-test/suite/funcs_1/t/is_tables_innodb.test
  mysql-test/suite/funcs_1/t/is_tables_memory.test
  mysql-test/suite/funcs_1/t/is_tables_myisam.test
  mysql-test/suite/funcs_1/t/is_tables_mysql.test
  mysql-test/suite/funcs_1/t/is_tables_ndb.test
  mysql-test/suite/funcs_1/t/is_triggers.test
  mysql-test/suite/funcs_1/t/is_user_privileges.test
  mysql-test/suite/funcs_1/t/is_views.test
  mysql-test/suite/funcs_1/t/memory_trig_0102.test
  mysql-test/suite/funcs_1/t/memory_trig_0407.test
  mysql-test/suite/funcs_1/t/memory_trig_1011ext.test
  mysql-test/suite/funcs_1/t/memory_views.test
  mysql-test/suite/funcs_1/triggers/trig_frkey.inc
  mysql-test/suite/funcs_1/triggers/triggers_03.inc
  mysql-test/suite/funcs_1/views/func_view.inc
  mysql-test/suite/funcs_1/views/views_master.inc
  mysql-test/t/mysql_delimiter.sql
  mysql-test/t/subselect.test
  mysql-test/t/varbinary.test
  sql/item.cc

=== modified file 'client/mysql.cc'
--- a/client/mysql.cc	2008-03-28 18:02:27 +0000
+++ b/client/mysql.cc	2008-06-24 16:05:56 +0000
@@ -1779,7 +1779,7 @@ static int read_and_execute(bool interac
         the very beginning of a text file when
         you save the file using "Unicode UTF-8" format.
       */
-      if (!line_number &&
+      if (line && !line_number &&
            (uchar) line[0] == 0xEF &&
            (uchar) line[1] == 0xBB &&
            (uchar) line[2] == 0xBF)
@@ -2081,37 +2081,6 @@ static bool add_line(String &buffer,char
 	continue;
       }
     }
-    else if (!*ml_comment && !*in_string &&
-             (end_of_line - pos) >= 10 &&
-             !my_strnncoll(charset_info, (uchar*) pos, 10,
-                           (const uchar*) "delimiter ", 10))
-    {
-      // Flush previously accepted characters
-      if (out != line)
-      {
-        buffer.append(line, (uint32) (out - line));
-        out= line;
-      }
-
-      // Flush possible comments in the buffer
-      if (!buffer.is_empty())
-      {
-        if (com_go(&buffer, 0) > 0) // < 0 is not fatal
-          DBUG_RETURN(1);
-        buffer.length(0);
-      }
-
-      /*
-        Delimiter wants the get rest of the given line as argument to
-        allow one to change ';' to ';;' and back
-      */
-      buffer.append(pos);
-      if (com_delimiter(&buffer, pos) > 0)
-        DBUG_RETURN(1);
-
-      buffer.length(0);
-      break;
-    }
     else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter))
     {
       // Found a statement. Continue parsing after the delimiter
@@ -2156,7 +2125,14 @@ static bool add_line(String &buffer,char
     }
     else if (!*ml_comment && (!*in_string && (inchar == '#' ||
 			      inchar == '-' && pos[1] == '-' &&
-			      my_isspace(charset_info,pos[2]))))
+                              /*
+                                The third byte is either whitespace or is the
+                                end of the line -- which would occur only
+                                because of the user sending newline -- which is
+                                itself whitespace and should also match.
+                              */
+			      (my_isspace(charset_info,pos[2]) ||
+                               !pos[2]))))
     {
       // Flush previously accepted characters
       if (out != line)

=== added file 'mysql-test/include/wait_condition.inc'
--- a/mysql-test/include/wait_condition.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/wait_condition.inc	2008-06-25 14:59:38 +0000
@@ -0,0 +1,59 @@
+# include/wait_condition.inc
+#
+# SUMMARY
+#
+#    Waits until the passed statement returns true, or the operation
+#    times out.
+#
+# USAGE
+#
+#    let $wait_condition=
+#      SELECT c = 3 FROM t;
+#    --source include/wait_condition.inc
+#
+#   OR
+#
+#    let $wait_timeout= 60; # Override default 30 seconds with 60.
+#    let $wait_condition=
+#      SELECT c = 3 FROM t;
+#    --source include/wait_condition.inc
+#    --echo Executed the test condition $wait_condition_reps times
+#
+# EXAMPLE
+#    events_bugs.test, events_time_zone.test
+#
+
+--disable_query_log
+
+let $wait_counter= 300;
+if ($wait_timeout)
+{
+  let $wait_counter= `SELECT $wait_timeout * 10`;
+}
+# Reset $wait_timeout so that its value won't be used on subsequent
+# calls, and default will be used instead.
+let $wait_timeout= 0;
+
+# Keep track of how many times the wait condition is tested
+# This is used by some tests (e.g., main.status)
+let $wait_condition_reps= 0;
+while ($wait_counter)
+{
+    let $success= `$wait_condition`;
+    inc $wait_condition_reps;
+    if ($success)
+    {
+        let $wait_counter= 0;
+    }
+    if (!$success)
+    {
+        real_sleep 0.1;
+        dec $wait_counter;
+    }
+}
+if (!$success)
+{
+  echo Timeout in wait_condition.inc for $wait_condition;
+}
+
+--enable_query_log

=== modified file 'mysql-test/r/mysql.result'
--- a/mysql-test/r/mysql.result	2007-10-04 08:06:01 +0000
+++ b/mysql-test/r/mysql.result	2008-06-24 16:03:17 +0000
@@ -38,6 +38,8 @@ t2
 t3
 Tables_in_test
 t1
+delimiter
+1
 _
 Test delimiter : from command line
 a

=== modified file 'mysql-test/r/varbinary.result'
--- a/mysql-test/r/varbinary.result	2007-03-09 21:29:02 +0000
+++ b/mysql-test/r/varbinary.result	2008-06-27 15:56:41 +0000
@@ -78,3 +78,34 @@ alter table t1 modify a varchar(255);
 select length(a) from t1;
 length(a)
 6
+select 0b01000001;
+0b01000001
+A
+select 0x41;
+0x41
+A
+select b'01000001';
+b'01000001'
+A
+select x'41', 0+x'41';
+x'41'	0+x'41'
+A	65
+select N'abc', length(N'abc');
+abc	length(N'abc')
+abc	3
+select N'', length(N'');
+	length(N'')
+	0
+select '', length('');
+	length('')
+	0
+select b'', 0+b'';
+b''	0+b''
+	0
+select x'', 0+x'';
+x''	0+x''
+	0
+select 0x;
+ERROR 42S22: Unknown column '0x' in 'field list'
+select 0b;
+ERROR 42S22: Unknown column '0b' in 'field list'

=== modified file 'mysql-test/suite/funcs_1/datadict/columns.inc'
--- a/mysql-test/suite/funcs_1/datadict/columns.inc	2008-03-07 16:33:07 +0000
+++ b/mysql-test/suite/funcs_1/datadict/columns.inc	2008-06-16 18:39:58 +0000
@@ -84,4 +84,3 @@ SELECT CHARACTER_OCTET_LENGTH / CHARACTE
 FROM information_schema.columns
 $my_where
 ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
-

=== added file 'mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc	2008-06-16 18:39:58 +0000
@@ -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;
+

=== added file 'mysql-test/suite/funcs_1/datadict/is_routines.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_routines.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_routines.inc	2008-06-16 18:39:58 +0000
@@ -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;
+

=== added file 'mysql-test/suite/funcs_1/datadict/is_schemata.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_schemata.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_schemata.inc	2008-06-16 18:39:58 +0000
@@ -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;
+

=== added file 'mysql-test/suite/funcs_1/datadict/is_tables.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_tables.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_tables.inc	2008-06-16 18:39:58 +0000
@@ -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;
+

=== added file 'mysql-test/suite/funcs_1/datadict/is_triggers.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_triggers.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_triggers.inc	2008-06-16 18:39:58 +0000
@@ -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;
+

=== added file 'mysql-test/suite/funcs_1/datadict/is_views.inc'
--- a/mysql-test/suite/funcs_1/datadict/is_views.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/is_views.inc	2008-06-16 18:39:58 +0000
@@ -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;
+

=== added file 'mysql-test/suite/funcs_1/datadict/tables.inc'
--- a/mysql-test/suite/funcs_1/datadict/tables.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/datadict/tables.inc	2008-06-16 18:39:58 +0000
@@ -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;

=== modified file 'mysql-test/suite/funcs_1/datadict/tables1.inc'
--- a/mysql-test/suite/funcs_1/datadict/tables1.inc	2008-03-07 16:33:07 +0000
+++ b/mysql-test/suite/funcs_1/datadict/tables1.inc	2008-06-16 18:39:58 +0000
@@ -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;

=== modified file 'mysql-test/suite/funcs_1/datadict/tables2.inc'
--- a/mysql-test/suite/funcs_1/datadict/tables2.inc	2008-03-07 16:33:07 +0000
+++ b/mysql-test/suite/funcs_1/datadict/tables2.inc	2008-06-16 18:39:58 +0000
@@ -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
-

=== added file 'mysql-test/suite/funcs_1/include/bug28309_skip.inc'
--- a/mysql-test/suite/funcs_1/include/bug28309_skip.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/include/bug28309_skip.inc	2008-06-16 18:39:58 +0000
@@ -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 ?;
+}

=== modified file 'mysql-test/suite/funcs_1/include/innodb_tb1.inc'
--- a/mysql-test/suite/funcs_1/include/innodb_tb1.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/innodb_tb1.inc	2008-06-16 18:39:58 +0000
@@ -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,

=== modified file 'mysql-test/suite/funcs_1/include/innodb_tb3.inc'
--- a/mysql-test/suite/funcs_1/include/innodb_tb3.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/innodb_tb3.inc	2008-06-16 18:39:58 +0000
@@ -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,

=== modified file 'mysql-test/suite/funcs_1/include/innodb_tb4.inc'
--- a/mysql-test/suite/funcs_1/include/innodb_tb4.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/innodb_tb4.inc	2008-06-16 18:39:58 +0000
@@ -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>

=== modified file 'mysql-test/suite/funcs_1/include/memory_tb4.inc'
--- a/mysql-test/suite/funcs_1/include/memory_tb4.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/memory_tb4.inc	2008-06-16 18:39:58 +0000
@@ -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>

=== modified file 'mysql-test/suite/funcs_1/include/myisam_tb1.inc'
--- a/mysql-test/suite/funcs_1/include/myisam_tb1.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/myisam_tb1.inc	2008-06-16 18:39:58 +0000
@@ -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,

=== modified file 'mysql-test/suite/funcs_1/include/myisam_tb3.inc'
--- a/mysql-test/suite/funcs_1/include/myisam_tb3.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/myisam_tb3.inc	2008-06-16 18:39:58 +0000
@@ -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,

=== modified file 'mysql-test/suite/funcs_1/include/myisam_tb4.inc'
--- a/mysql-test/suite/funcs_1/include/myisam_tb4.inc	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/include/myisam_tb4.inc	2008-06-16 18:39:58 +0000
@@ -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;
 

=== modified file 'mysql-test/suite/funcs_1/r/innodb_trig_frkey.result'
--- a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_cml_innodb.result'
--- a/mysql-test/suite/funcs_1/r/is_cml_innodb.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_cml_innodb.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_cml_memory.result'
--- a/mysql-test/suite/funcs_1/r/is_cml_memory.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_cml_memory.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_cml_myisam.result'
--- a/mysql-test/suite/funcs_1/r/is_cml_myisam.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_cml_myisam.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_cml_ndb.result'
--- a/mysql-test/suite/funcs_1/r/is_cml_ndb.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_cml_ndb.result	2008-06-16 18:39:58 +0000
@@ -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;

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_innodb.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result	2008-06-16 18:39:58 +0000
@@ -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	decim
 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	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	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	COL
 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	
 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	N
 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	N
 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

=== added file 'mysql-test/suite/funcs_1/r/is_columns_is_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result	2008-06-16 18:39:58 +0000
@@ -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)

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_memory.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_memory.result	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result	2008-06-16 18:39:58 +0000
@@ -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	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	COL
 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	N
 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

=== modified file 'mysql-test/suite/funcs_1/r/is_columns_myisam.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result	2008-05-13 13:46:38 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result	2008-06-16 18:39:58 +0000
@@ -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	decim
 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	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
 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	COL
 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	
 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	N
 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	N
 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

=== added file 'mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result	2008-06-16 18:39:58 +0000
@@ -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

=== added file 'mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_routines_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_routines_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_schemata_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result	2008-06-16 18:39:58 +0000
@@ -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;

=== added file 'mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result'
--- a/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result	2008-06-16 18:39:58 +0000
@@ -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