From: Date: September 19 2006 3:45am Subject: Connector/J commit: r5748 - in branches/branch_5_0/connector-j: . src/com/mysql/jdbc List-Archive: http://lists.mysql.com/commits/12177 X-Bug: 22456 Message-Id: <200609190145.k8J1j5Tg013519@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified: branches/branch_5_0/connector-j/CHANGES branches/branch_5_0/connector-j/src/com/mysql/jdbc/CharsetMapping.java branches/branch_5_0/connector-j/src/com/mysql/jdbc/Connection.java Log: Added new _ci collations to CharsetMapping, fixing Bug#22456 - utf8_unicode_ci not working. Modified: branches/branch_5_0/connector-j/CHANGES =================================================================== --- branches/branch_5_0/connector-j/CHANGES 2006-09-19 00:01:33 UTC (rev 5747) +++ branches/branch_5_0/connector-j/CHANGES 2006-09-19 01:45:03 UTC (rev 5748) @@ -34,6 +34,9 @@ prepare(stored procedure) and substitutes client-side prepared statement), addresses BUG#22297. + - Added new _ci collations to CharsetMapping, fixing + Bug#22456 - utf8_unicode_ci not working. + 07-26-06 - Version 5.0.3 - Fixed BUG#20650 - Statement.cancel() causes NullPointerException Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/CharsetMapping.java =================================================================== --- branches/branch_5_0/connector-j/src/com/mysql/jdbc/CharsetMapping.java 2006-09-19 00:01:33 UTC (rev 5747) +++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/CharsetMapping.java 2006-09-19 01:45:03 UTC (rev 5748) @@ -235,7 +235,7 @@ MULTIBYTE_CHARSETS = Collections.unmodifiableMap(tempMapMulti); - INDEX_TO_CHARSET = new String[99]; + INDEX_TO_CHARSET = new String[211]; try { INDEX_TO_CHARSET[1] = getJavaEncodingForMysqlEncoding("big5", null); @@ -399,6 +399,85 @@ null); INDEX_TO_CHARSET[98] = getJavaEncodingForMysqlEncoding("eucjpms", null); + + INDEX_TO_CHARSET[128] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[129] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[130] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[131] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[132] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[133] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[134] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[135] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[136] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[137] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[138] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[139] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[140] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[141] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[142] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[143] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[144] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[145] = getJavaEncodingForMysqlEncoding("ucs2", + null); + INDEX_TO_CHARSET[146] = getJavaEncodingForMysqlEncoding("ucs2", + null); + + INDEX_TO_CHARSET[192] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[193] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[194] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[195] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[196] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[197] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[198] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[199] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[200] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[201] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[202] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[203] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[204] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[205] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[206] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[207] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[208] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[209] = getJavaEncodingForMysqlEncoding("utf8", + null); + INDEX_TO_CHARSET[210] = getJavaEncodingForMysqlEncoding("utf8", + null); + } catch (SQLException sqlEx) { // ignore, it won't happen in this case } Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/Connection.java =================================================================== --- branches/branch_5_0/connector-j/src/com/mysql/jdbc/Connection.java 2006-09-19 00:01:33 UTC (rev 5747) +++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/Connection.java 2006-09-19 01:45:03 UTC (rev 5748) @@ -2341,6 +2341,14 @@ String serverEncodingToSet = CharsetMapping.INDEX_TO_CHARSET[this.io.serverCharsetIndex]; + if (serverEncodingToSet == null || serverEncodingToSet.length() == 0) { + throw SQLError.createSQLException( + "Unknown initial character set index '" + + this.io.serverCharsetIndex + + "' received from server. Initial client character set can be forced via the 'characterEncoding' property.", + SQLError.SQL_STATE_GENERAL_ERROR); + } + if (versionMeetsMinimum(4, 1, 0) && "ISO8859_1".equalsIgnoreCase(serverEncodingToSet)) { serverEncodingToSet = "Cp1252";