From ee347d87200c05ed4e9c0dfcde84a54a5dc3e805 Mon Sep 17 00:00:00 2001 From: rene-ye Date: Tue, 3 Jul 2018 10:45:43 -0700 Subject: [PATCH 1/2] String compare for hash keys added missing line for bulkcopy tests. --- .../com/microsoft/sqlserver/jdbc/SQLServerConnection.java | 5 ++++- .../microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java index 005951319..f4d13ef15 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java @@ -129,6 +129,7 @@ static class CityHash128Key implements java.io.Serializable { * Always refresh SerialVersionUID when prompted */ private static final long serialVersionUID = 166788428640603097L; + String unhashedString; private long[] segments; private int hashCode; @@ -138,6 +139,7 @@ static class CityHash128Key implements java.io.Serializable { } CityHash128Key(String s) { + unhashedString = s; byte[] bytes = new byte[s.length()]; s.getBytes(0, s.length(), bytes, 0); segments = CityHash.cityHash128(bytes, 0, bytes.length); @@ -147,7 +149,8 @@ public boolean equals(Object obj) { if (!(obj instanceof CityHash128Key)) return false; - return java.util.Arrays.equals(segments, ((CityHash128Key) obj).segments); + return (java.util.Arrays.equals(segments, ((CityHash128Key) obj).segments)//checks if hash is equal; && short circuits so if hashes aren't equal, string cmp won't be executed + && this.unhashedString.equals(((CityHash128Key) obj).unhashedString));//checks if string is equal } public int hashCode() { diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java index e2dffc747..8fb29a80c 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java @@ -236,6 +236,7 @@ String getClassNameInternal() { userSQL = parsedSQL.processedSQL; userSQLParamPositions = parsedSQL.parameterPositions; initParams(userSQLParamPositions.length); + useBulkCopyForBatchInsert = conn.getUseBulkCopyForBatchInsert(); } /** From d20e5d515b6e6629d09f4167fe2a94526a0fc542 Mon Sep 17 00:00:00 2001 From: rene-ye Date: Tue, 3 Jul 2018 10:46:57 -0700 Subject: [PATCH 2/2] comment change --- .../java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java index f4d13ef15..244932c59 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerConnection.java @@ -149,7 +149,7 @@ public boolean equals(Object obj) { if (!(obj instanceof CityHash128Key)) return false; - return (java.util.Arrays.equals(segments, ((CityHash128Key) obj).segments)//checks if hash is equal; && short circuits so if hashes aren't equal, string cmp won't be executed + return (java.util.Arrays.equals(segments, ((CityHash128Key) obj).segments)//checks if hash is equal, short-circuitting; && this.unhashedString.equals(((CityHash128Key) obj).unhashedString));//checks if string is equal }