summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/funcs_1/t/charset_collation.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/funcs_1/t/charset_collation.test')
-rw-r--r--mysql-test/suite/funcs_1/t/charset_collation.test104
1 files changed, 104 insertions, 0 deletions
diff --git a/mysql-test/suite/funcs_1/t/charset_collation.test b/mysql-test/suite/funcs_1/t/charset_collation.test
new file mode 100644
index 00000000..d3d7a519
--- /dev/null
+++ b/mysql-test/suite/funcs_1/t/charset_collation.test
@@ -0,0 +1,104 @@
+# suite/funcs_1/t/charset_collation.test
+#
+# Tests checking the content of the information_schema tables
+# character_sets
+# collations
+# collation_character_set_applicability
+#
+# Created:
+# 2009-04-28 mleich Replace the charset_collation_* test which failed too often
+# because of changes
+# - in general available character sets and collations
+# - in build types
+# (Bug#40545, Bug#40209, Bug#40618, Bug#38346)
+#
+
+# Create a low privileged user.
+--error 0, ER_CANNOT_USER
+DROP USER dbdict_test@localhost;
+CREATE USER dbdict_test@localhost;
+
+connect (con,localhost,dbdict_test,,);
+################################################################################
+#
+# The original requirements for the following tests were:
+#
+# 3.2.2.2: Ensure that the table (information_schema.character_sets) shows the
+# relevant information on every character set for which the current
+# user or PUBLIC have the USAGE privilege.
+#
+# 3.2.2.3: Ensure that the table (information_schema.character_sets) does not
+# show any information on any character set for which the current user
+# or PUBLIC have no USAGE privilege.
+#
+#
+# 3.2.3.2: Ensure that the table (information_schema.collations) shows the
+# relevant information on every collation for which the current user
+# or PUBLIC have the USAGE privilege.
+#
+# 3.2.3.3: Ensure that the table (information_schema.collations) does not show
+# any information on any collations for which the current user and
+# PUBLIC have no USAGE privilege.
+#
+#
+# 3.2.4.2: Ensure that the table
+# information_schema.collation_character_set_applicability
+# shows the relevant information on every collation/character set
+# combination for which the current user or PUBLIC have the USAGE
+# privilege.
+#
+# 3.2.4.3: Ensure that the table
+# information_schema.collation_character_set_applicability
+# does not show any information on any collation/character set
+# combinations for which the current user and PUBLIC have no
+# USAGE privilege.
+#
+# Notes (2009-04-28 mleich):
+# - The requirements are outdated because grant/revoke privilege for using a
+# characterset/collation were never implemented.
+# Therefore the tests focus on the completeness and correctness of the
+# content (rows and columns) of these tables.
+# - The amount of collations/character sets grows with new MySQL releases.
+# Even within the same release the amount of records within these tables
+# can differ between different build types (community, enterprise, source,...)
+# Therefore we limit the queries to character sets and collations which
+# - exist in all build types
+# - have in all build types the same "state".
+# The character set
+# - utf8 is used for Metadata
+# - ascii is a quite usual
+# The collations <character set>_general_ci and <character set>_bin seem
+# to be available all time.
+#
+################################################################################
+
+let $char_set_condition= character_set_name IN ('utf8mb3','latin1','binary');
+let $collation_condition=
+ (collation_name LIKE CONCAT(character_set_name,'_general_ci')
+ OR
+ collation_name LIKE CONCAT(character_set_name,'_bin'));
+--echo
+eval SELECT *
+FROM information_schema.character_sets
+WHERE $char_set_condition
+ORDER BY character_set_name;
+
+--echo
+eval SELECT *
+FROM information_schema.collations
+WHERE $char_set_condition
+ AND $collation_condition
+ORDER BY collation_name;
+
+--echo
+eval SELECT *
+FROM information_schema.collation_character_set_applicability
+WHERE $char_set_condition
+ AND $collation_condition
+ORDER BY collation_name, character_set_name;
+
+
+# Cleanup
+connection default;
+disconnect con;
+DROP USER dbdict_test@localhost;