Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-29776

collation_connection and db_collation are too short in mysql.proc and mysql.event

    XMLWordPrintable

    Details

      Description

      The patch for MDEV-27009 changed the maximum collation name size from 32 to 64:

      -#define MY_CS_NAME_SIZE                        32
      +#define MY_CS_CHARACTER_SET_NAME_SIZE   32
      +#define MY_CS_COLLATION_NAME_SIZE       64
      

      INFORMATION_SCHEMA tables were fixed accordinly. However, tables mysql.proc and mysql.event were forgotten:

      SELECT table_schema, table_name, column_name, column_type
      FROM information_schema.columns WHERE column_name LIKE '%colla%';
      

      +--------------------+---------------------------------------+------------------------+-------------+
      | table_schema       | table_name                            | column_name            | column_type |
      +--------------------+---------------------------------------+------------------------+-------------+
      | mysql              | proc                                  | collation_connection   | char(32)    |
      | mysql              | proc                                  | db_collation           | char(32)    |
      | mysql              | event                                 | collation_connection   | char(32)    |
      | mysql              | event                                 | db_collation           | char(32)    |
      | information_schema | CHARACTER_SETS                        | DEFAULT_COLLATE_NAME   | varchar(64) |
      | information_schema | COLLATIONS                            | COLLATION_NAME         | varchar(64) |
      | information_schema | COLLATION_CHARACTER_SET_APPLICABILITY | COLLATION_NAME         | varchar(64) |
      | information_schema | COLLATION_CHARACTER_SET_APPLICABILITY | FULL_COLLATION_NAME    | varchar(64) |
      | information_schema | COLUMNS                               | COLLATION_NAME         | varchar(64) |
      | information_schema | EVENTS                                | COLLATION_CONNECTION   | varchar(64) |
      | information_schema | EVENTS                                | DATABASE_COLLATION     | varchar(64) |
      | information_schema | PARAMETERS                            | COLLATION_NAME         | varchar(64) |
      | information_schema | ROUTINES                              | COLLATION_NAME         | varchar(64) |
      | information_schema | ROUTINES                              | COLLATION_CONNECTION   | varchar(64) |
      | information_schema | ROUTINES                              | DATABASE_COLLATION     | varchar(64) |
      | information_schema | SCHEMATA                              | DEFAULT_COLLATION_NAME | varchar(64) |
      | information_schema | STATISTICS                            | COLLATION              | varchar(1)  |
      | information_schema | TABLES                                | TABLE_COLLATION        | varchar(64) |
      | information_schema | TRIGGERS                              | COLLATION_CONNECTION   | varchar(64) |
      | information_schema | TRIGGERS                              | DATABASE_COLLATION     | varchar(64) |
      | information_schema | VIEWS                                 | COLLATION_CONNECTION   | varchar(64) |
      +--------------------+---------------------------------------+------------------------+-------------+
      

      Some new collation names do not fit into 32 characters:

      SET NAMES 'utf8mb3' COLLATE 'utf8mb3_uca1400_swedish_nopad_ai_ci';
      CREATE FUNCTION f1() RETURNS INT RETURN 1;
      

      ERROR 1607 (HY000): Cannot create stored routine `f1`. Check warnings
      

      SHOW WARNINGS;
      

      +---------+------+--------------------------------------------------------------+
      | Level   | Code | Message                                                      |
      +---------+------+--------------------------------------------------------------+
      | Warning | 1265 | Data truncated for column 'collation_connection' at row 3226 |
      | Error   | 1607 | Cannot create stored routine `f1`. Check warnings            |
      +---------+------+--------------------------------------------------------------+
      

      Definitions for mysql.proc and mysql.event should be updated to use char(64) as the data type for the mentioned columns.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              bar Alexander Barkov
              Reporter:
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.