diff --git a/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractQueryProtocol.java b/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractQueryProtocol.java index 80e2e789d..13c1d8f39 100644 --- a/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractQueryProtocol.java +++ b/src/main/java/org/mariadb/jdbc/internal/protocol/AbstractQueryProtocol.java @@ -777,10 +777,9 @@ public ServerPrepareResult prepare(String sql, boolean executeOnMaster) throws S cmdPrologue(); lock.lock(); try { + //search in cache first if (options.cachePrepStmts && options.useServerPrepStmts) { - ServerPrepareResult pr = serverPrepareStatementCache.get(database + "-" + sql); - if (pr != null && pr.incrementShareCounter()) { return pr; } diff --git a/src/main/java/org/mariadb/jdbc/internal/util/Utils.java b/src/main/java/org/mariadb/jdbc/internal/util/Utils.java index 3cc910cdc..c38eb7bf7 100644 --- a/src/main/java/org/mariadb/jdbc/internal/util/Utils.java +++ b/src/main/java/org/mariadb/jdbc/internal/util/Utils.java @@ -711,17 +711,29 @@ public static String hexdump(int maxQuerySizeToLog, int offset, int length, byte return outputBuilder.toString(); default: - StringBuilder sb = new StringBuilder(); - sb.append("\n"); - byte[] arr; - for (int i = 0; i < byteArr.length - 1; i++) { - arr = byteArr[i]; - writeHex(arr, 0, arr.length, sb); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream( ); + try { + outputStream.write( byteArr[0] ); + outputStream.write( byteArr[1], offset, length ); + for (int i = 2; i< byteArr.length; i++) { + outputStream.write( byteArr[i] ); + } + } catch (IOException ioe) { + // eat + } + + byte[] concat = outputStream.toByteArray( ); + if (concat.length <= offset) { + return ""; } - arr = byteArr[byteArr.length - 1]; - int dataLength2 = Math.min(maxQuerySizeToLog, Math.min(arr.length - offset, length)); - writeHex(arr, offset, dataLength2, sb); - return sb.toString(); + + int stlength = Math.min(maxQuerySizeToLog, outputStream.size()); + + StringBuilder out = new StringBuilder(stlength * 3 + 80); + out.append("\n"); + writeHex(outputStream.toByteArray(), 0, outputStream.size(), out); + return out.toString(); } } @@ -755,6 +767,11 @@ private static void writeHex( int pos = offset; int posHexa = 0; + outputBuilder.append( + "+--------------------------------------------------+\n" + + "| 0 1 2 3 4 5 6 7 8 9 a b c d e f |\n" + + "+--------------------------------------------------+------------------+\n| "); + while (pos < dataLength + offset) { int byteValue = bytes[pos] & 0xFF; outputBuilder @@ -768,7 +785,7 @@ private static void writeHex( outputBuilder.append(" "); } if (posHexa == 16) { - outputBuilder.append(" ").append(hexaValue).append("\n"); + outputBuilder.append("| ").append(hexaValue).append(" |\n| "); posHexa = 0; } pos++; @@ -787,8 +804,15 @@ private static void writeHex( outputBuilder.append(" "); } - outputBuilder.append(" ").append(hexaValue, 0, posHexa).append("\n"); + for (; posHexa < 16; posHexa++) { + hexaValue[posHexa] = ' '; + } + + outputBuilder.append("| ") + .append(hexaValue) + .append(" |\n"); } + outputBuilder.append("+--------------------------------------------------+------------------+\n"); } private static String getHex(final byte[] raw) { diff --git a/src/test/java/org/mariadb/jdbc/SslTest.java b/src/test/java/org/mariadb/jdbc/SslTest.java index a31d19f82..965e8ec66 100644 --- a/src/test/java/org/mariadb/jdbc/SslTest.java +++ b/src/test/java/org/mariadb/jdbc/SslTest.java @@ -330,7 +330,7 @@ public void useSslForceTlsCombination() throws Exception { if (isMariadbServer() && !Platform.isWindows()) { useSslForceTls("TLSv1,TLSv1.1,TLSv1.2"); } else { - useSslForceTls("TLSv1,TLSv1"); + useSslForceTls("TLSv1,TLSv1.1"); } } @@ -339,7 +339,7 @@ public void useSslForceTlsCombinationWithSpace() throws Exception { if (isMariadbServer() && !Platform.isWindows()) { useSslForceTls("TLSv1, TLSv1.1, TLSv1.2"); } else { - useSslForceTls("TLSv1, TLSv1"); + useSslForceTls("TLSv1, TLSv1.1"); } } @@ -348,7 +348,7 @@ public void useSslForceTlsCombinationWithOnlySpace() throws Exception { if (isMariadbServer() && !Platform.isWindows()) { useSslForceTls("TLSv1 TLSv1.1 TLSv1.2"); } else { - useSslForceTls("TLSv1 TLSv1"); + useSslForceTls("TLSv1 TLSv1.1"); } } diff --git a/src/test/java/org/mariadb/jdbc/internal/util/UtilsTest.java b/src/test/java/org/mariadb/jdbc/internal/util/UtilsTest.java index b5725d5f5..66de8fd1c 100644 --- a/src/test/java/org/mariadb/jdbc/internal/util/UtilsTest.java +++ b/src/test/java/org/mariadb/jdbc/internal/util/UtilsTest.java @@ -74,12 +74,15 @@ public void testByteDump() { 0x6C, 0x5F, 0x6D, 0x6F, 0x64, 0x65 }; String result = - "\n" - + "4A 00 00 00 03 53 45 4C 45 43 54 20 40 40 6D 61 J....SELECT @@ma\n" - + "78 5F 61 6C 6C 6F 77 65 64 5F 70 61 63 6B 65 74 x_allowed_packet\n" - + "20 2C 20 40 40 73 79 73 74 65 6D 5F 74 69 6D 65 , @@system_time\n" - + "5F 7A 6F 6E 65 2C 20 40 40 74 69 6D 65 5F 7A 6F _zone, @@time_zo\n" - + "6E 65 2C 20 40 40 73 71 6C 5F 6D 6F 64 65 ne, @@sql_mode\n"; + "\n+--------------------------------------------------+\n" + + "| 0 1 2 3 4 5 6 7 8 9 a b c d e f |\n" + + "+--------------------------------------------------+------------------+\n" + + "| 4A 00 00 00 03 53 45 4C 45 43 54 20 40 40 6D 61 | J....SELECT @@ma |\n" + + "| 78 5F 61 6C 6C 6F 77 65 64 5F 70 61 63 6B 65 74 | x_allowed_packet |\n" + + "| 20 2C 20 40 40 73 79 73 74 65 6D 5F 74 69 6D 65 | , @@system_time |\n" + + "| 5F 7A 6F 6E 65 2C 20 40 40 74 69 6D 65 5F 7A 6F | _zone, @@time_zo |\n" + + "| 6E 65 2C 20 40 40 73 71 6C 5F 6D 6F 64 65 | ne, @@sql_mode |\n" + + "+--------------------------------------------------+------------------+\n"; assertEquals(result, Utils.hexdump(bb)); }