From 6019b1cd81d38a60b5d911df283833dabbef93bb Mon Sep 17 00:00:00 2001 From: Rucha Deodhar Date: Tue, 20 Oct 2026 00:44:15 -0400 Subject: [PATCH] MDEV-38991: mysql system schema using my.cnf(configuration) character set instead of utf8mb3 Analysis: When loading database options, missing values falls back to the dynamic server variable thd->variables.collation_server and hence it takes incorrect value. Fix: In case of missing values it should just take the default characterset. --- mysql-test/main/mdev_38991.opt | 2 ++ mysql-test/main/mdev_38991.result | 9 +++++++++ mysql-test/main/mdev_38991.test | 5 +++++ sql/sql_db.cc | 2 +- 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 mysql-test/main/mdev_38991.opt create mode 100644 mysql-test/main/mdev_38991.result create mode 100644 mysql-test/main/mdev_38991.test diff --git a/mysql-test/main/mdev_38991.opt b/mysql-test/main/mdev_38991.opt new file mode 100644 index 00000000000..ad37528fee0 --- /dev/null +++ b/mysql-test/main/mdev_38991.opt @@ -0,0 +1,2 @@ +--character-set-server=latin1 +--collation-server=latin1_swedish_ci diff --git a/mysql-test/main/mdev_38991.result b/mysql-test/main/mdev_38991.result new file mode 100644 index 00000000000..56d54976b88 --- /dev/null +++ b/mysql-test/main/mdev_38991.result @@ -0,0 +1,9 @@ +# +# MDEV-38991: mysql system schema using my.cnf(configuration) character set instead of utf8mb3 +# +SELECT schema_name, DEFAULT_CHARACTER_SET_NAME, default_collation_name FROM information_schema.schemata WHERE schema_name IN ('sys', 'information_schema', 'mysql', 'performance_schema'); +schema_name DEFAULT_CHARACTER_SET_NAME default_collation_name +sys utf8mb3 utf8mb3_general_ci +performance_schema utf8mb3 utf8mb3_general_ci +mysql latin1 latin1_swedish_ci +information_schema utf8mb3 utf8mb3_general_ci diff --git a/mysql-test/main/mdev_38991.test b/mysql-test/main/mdev_38991.test new file mode 100644 index 00000000000..b37dab0ef8c --- /dev/null +++ b/mysql-test/main/mdev_38991.test @@ -0,0 +1,5 @@ +--echo # +--echo # MDEV-38991: mysql system schema using my.cnf(configuration) character set instead of utf8mb3 +--echo # + +SELECT schema_name, DEFAULT_CHARACTER_SET_NAME, default_collation_name FROM information_schema.schemata WHERE schema_name IN ('sys', 'information_schema', 'mysql', 'performance_schema'); diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 8cc2b7bd5f3..e4176d0899f 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -671,7 +671,7 @@ err2: mysql_file_close(file, MYF(0)); err1: if (!create->default_table_charset) // In case of error - create->default_table_charset= thd->variables.collation_server; + create->default_table_charset= default_charset_info; DBUG_RETURN(error); }