From cac8dfaf2f81f7a612ec3eec2554bb5af1fae391 Mon Sep 17 00:00:00 2001 From: Rahim Kanji Date: Wed, 18 Mar 2026 16:29:50 +0500 Subject: [PATCH] Fix charset_unsigned_int-t for MySQL 8.4 --- test/tap/tests/charset_unsigned_int-t.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/test/tap/tests/charset_unsigned_int-t.cpp b/test/tap/tests/charset_unsigned_int-t.cpp index 80880ce37..1083acd00 100644 --- a/test/tap/tests/charset_unsigned_int-t.cpp +++ b/test/tap/tests/charset_unsigned_int-t.cpp @@ -58,14 +58,23 @@ int main(int argc, char** argv) { return exit_status(); } + // Get version early for version-specific charset checks + std::string version; + get_server_version(mysql, version); + int major = 0, minor = 0; + sscanf(version.c_str(), "%d.%d", &major, &minor); + bool is_mysql_84_plus = (major > 8) || (major == 8 && minor >= 4); + if (mysql_query(mysql, "set names 'utf8'")) return exit_status(); show_variable(mysql, var_collation_connection, var_value); - ok(var_value.compare("utf8_general_ci") == 0, "Initial client character set. Actual %s", var_value.c_str()); + if (is_mysql_84_plus) { + ok(var_value.compare("utf8mb3_general_ci") == 0, "MySQL 8.4+ Initial client character set. Actual %s", var_value.c_str()); + } else { + ok(var_value.compare("utf8_general_ci") == 0, "Initial client character set. Actual %s", var_value.c_str()); + } if (mysql_query(mysql, "set names utf8mb4 collate utf8mb4_croatian_ci")) return exit_status(); show_variable(mysql, var_collation_connection, var_value); - std::string version; - get_server_version(mysql, version); if (version.data()[0] == '5') { ok(var_value.compare("utf8mb4_general_ci") == 0, "Backend is mysql version < 8.0. Actual collation %s", var_value.c_str()); } else {