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

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

            Transition Time In Source Status Execution Times
            Alexander Barkov made transition -
            Open In Progress
            2m 47s 1
            Alexander Barkov made transition -
            In Progress Stalled
            1h 28m 1
            Alexander Barkov made transition -
            Stalled In Review
            34s 1
            Sergei Golubchik made transition -
            In Review Stalled
            22h 22m 1
            Alexander Barkov made transition -
            Stalled Closed
            17h 5m 1

            People

              bar Alexander Barkov
              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.