From 6edc091e7e034b6ba3a764f30391de827179c96a Mon Sep 17 00:00:00 2001 From: rusher Date: Mon, 8 Jun 2020 17:20:38 +0200 Subject: [PATCH] [CONJ-797] autodetection connection collation set to utf8mb4 equivalent collation for server configured to use UTF8mb3 collation --- .../protocol/AbstractConnectProtocol.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractConnectProtocol.java b/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractConnectProtocol.java index e68d33b3c..6e9a5f26e 100644 --- a/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractConnectProtocol.java +++ b/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractConnectProtocol.java @@ -1200,10 +1200,28 @@ private byte decideLanguage(int serverLanguage) { || (serverLanguage >= 224 && serverLanguage <= 247)) { return (byte) serverLanguage; } + if (getMajorServerVersion() == 5 && getMinorServerVersion() <= 1) { // 5.1 version doesn't know 4 bytes utf8 return (byte) 33; // utf8_general_ci } + + // if server language is utf8mb3, use utf8mb4 equivalent collation + if (serverLanguage == 33) { + // utf8mb4_general_ci + return 45; + } + + if (serverLanguage == 83) { + // utf8mb4_bin + return 46; + } + + if (serverLanguage >= 192 && serverLanguage <= 215) { + // equivalent utf8mb4 collation + return (byte) (serverLanguage - 32); + } + return (byte) 224; // UTF8MB4_UNICODE_CI; }