# 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; --echo # Establish connection con (user=dbdict_test) 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 _general_ci and _bin seem # to be available all time. # ################################################################################ let $char_set_condition= character_set_name IN ('utf8','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 --echo # Switch to connection default + disconnect con connection default; disconnect con; DROP USER dbdict_test@localhost;