summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/funcs_1/t/is_collations.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/funcs_1/t/is_collations.test')
-rw-r--r--mysql-test/suite/funcs_1/t/is_collations.test114
1 files changed, 114 insertions, 0 deletions
diff --git a/mysql-test/suite/funcs_1/t/is_collations.test b/mysql-test/suite/funcs_1/t/is_collations.test
new file mode 100644
index 00000000..db34a7b7
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/is_collations.test
@@ -0,0 +1,114 @@
+# suite/funcs_1/t/is_collations.test
+#
+# Check the layout of information_schema.collations and some
+# functionality related 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.
+#
+
+let $is_table = COLLATIONS;
+
+# The table INFORMATION_SCHEMA.COLLATIONS 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.3.1: INFORMATION_SCHEMA.COLLATIONS layout
+--echo #########################################################################
+# Ensure that the INFORMATION_SCHEMA.COLLATIONS table has the following
+# columns, in the following order:
+#
+# COLLATION_NAME (shows a collation name),
+# CHARACTER_SET_NAME (shows the name of the character set to which the
+# collation applies),
+# ID (shows a numeric identifier for that collation/character set combination),
+# IS_DEFAULT (shows whether the collation is the default collation for the
+# character set shown),
+# IS_COMPILED (indicates whether the collation is compiled into the MySQL server),
+# SORTLEN (shows a value related to the amount of memory required to sort
+# strings using this collation/character set combination).
+#
+eval DESCRIBE information_schema.$is_table;
+eval SHOW CREATE TABLE information_schema.$is_table;
+eval SHOW COLUMNS FROM information_schema.$is_table;
+
+# Note: Retrieval of information within information_schema.columns about
+# information_schema.collations is in is_columns_is.test.
+# Retrieval of information_schema.collations content is in
+# charset_collation.inc (sourced by charset_collation_*.test).
+
+echo # Testcases 3.2.3.2 and 3.2.3.3 are checked in suite/funcs_1/t/charset_collation*.test;
+
+--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;
+
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.collations
+SELECT * FROM information_schema.collations;
+--error ER_DBACCESS_DENIED_ERROR
+INSERT INTO information_schema.collations
+ (collation_name,character_set_name,id,is_default,is_compiled,sortlen)
+VALUES ( 'cp1251_bin', 'cp1251',50, '', '',0);
+
+--error ER_DBACCESS_DENIED_ERROR,ER_NON_UPDATABLE_TABLE
+UPDATE information_schema.collations SET description = 'just updated';
+
+--error ER_DBACCESS_DENIED_ERROR
+DELETE FROM information_schema.collations WHERE table_name = 't1';
+--error ER_DBACCESS_DENIED_ERROR
+TRUNCATE information_schema.collations;
+
+--error ER_DBACCESS_DENIED_ERROR
+CREATE INDEX my_idx ON information_schema.collations(character_set_name);
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.collations DROP PRIMARY KEY;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.collations ADD f1 INT;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.collations ENABLE KEYS;
+
+--error ER_DBACCESS_DENIED_ERROR
+DROP TABLE information_schema.collations;
+
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.collations RENAME db_datadict.collations;
+--error ER_DBACCESS_DENIED_ERROR
+ALTER TABLE information_schema.collations
+RENAME information_schema.xcollations;
+
+# Cleanup
+DROP DATABASE db_datadict;
+