diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8875a0e1c..75e387bde 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
+## [6.4.0] Stable Release
+### Added
+- Support added for AAD Integrated Authentication with ADAL4J on Windows/Linux/Mac OS [#603](https://github.com/Microsoft/mssql-jdbc/pull/603)
+- Enable Recover after MSDTC is restarted [#581](https://github.com/Microsoft/mssql-jdbc/pull/581)
+- Added Version Update configuration rules to project [#541](https://github.com/Microsoft/mssql-jdbc/pull/541)
+- JDK 9 Compatibility + JDBC 4.3 API support added to the driver [#601 (https://github.com/Microsoft/mssql-jdbc/pull/601)
+
+### Fixed Issues
+- Re-introduced Retry Logic for Prepared Statement Caching implementation and remove detect change context function [#618](https://github.com/Microsoft/mssql-jdbc/pull/618) and [#620](https://github.com/Microsoft/mssql-jdbc/pull/620)
+- Fixes for SonarQube Reported issues [#599](https://github.com/Microsoft/mssql-jdbc/pull/599)
+- Fixes for Random Assertion Errors [#597](https://github.com/Microsoft/mssql-jdbc/pull/597)
+
+### Changed
+- Updated Appveyor to use JDK9 building driver and running tests [#619](https://github.com/Microsoft/mssql-jdbc/pull/619)
+- JDK 7 compilation support removed from the driver [#601](https://github.com/Microsoft/mssql-jdbc/pull/601)
+
## [6.3.6] Preview Release
### Added
- Added support for using database name as part of the key for handle cache [#561](https://github.com/Microsoft/mssql-jdbc/pull/561)
diff --git a/README.md b/README.md
index 6d2d0a746..4983f0c10 100644
--- a/README.md
+++ b/README.md
@@ -80,7 +80,7 @@ We're now on the Maven Central Repository. Add the following to your POM file to
com.microsoft.sqlserver
mssql-jdbc
- 6.2.2.jre8
+ 6.4.0.jre9
```
The driver can be downloaded from the [Microsoft Download Center](https://go.microsoft.com/fwlink/?linkid=852460).
@@ -120,14 +120,14 @@ Projects that require either of the two features need to explicitly declare the
com.microsoft.sqlserver
mssql-jdbc
- 6.3.6.jre8-preview
+ 6.4.0.jre9
compile
com.microsoft.azure
adal4j
- 1.3.0
+ 1.4.0
```
@@ -136,14 +136,14 @@ Projects that require either of the two features need to explicitly declare the
com.microsoft.sqlserver
mssql-jdbc
- 6.3.6.jre8-preview
+ 6.4.0.jre9
compile
com.microsoft.azure
adal4j
- 1.3.0
+ 1.4.0
@@ -160,7 +160,7 @@ We love contributions from the community. To help improve the quality of our co
Thank you!
## Guidelines for Reporting Issues
-We appreciate you taking the time to test the driver, provide feedback and report any issues. It would be extremely helpful if you:
+We appreciate you taking the time to test the driver, provide feedback and report any issues. It would be extremely helpful if you:
- Report each issue as a new issue (but check first if it's already been reported)
- Try to be detailed in your report. Useful information for good bug reports include:
diff --git a/appveyor.yml b/appveyor.yml
index 8caae887f..5fff6778c 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -4,7 +4,7 @@ init:
- cmd: net start MSSQL$%SQL_Instance%
environment:
- JAVA_HOME: C:\Program Files\Java\jdk1.8.0
+ JAVA_HOME: C:\Program Files\Java\jdk9
mssql_jdbc_test_connection_properties: jdbc:sqlserver://localhost:1433;instanceName=%SQL_Instance%;databaseName=master;username=sa;password=Password12!;
matrix:
@@ -32,9 +32,9 @@ build_script:
- keytool -importkeystore -srckeystore cert.pfx -srcstoretype pkcs12 -destkeystore clientcert.jks -deststoretype JKS -srcstorepass password -deststorepass password
- keytool -list -v -keystore clientcert.jks -storepass "password" > JavaKeyStore.txt
- cd..
- # - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Pbuild41
- # - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Pbuild42
+ - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Pbuild43
+ - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Pbuild42
-#test_script:
-# - mvn test -B -Pbuild41
-# - mvn test -B -Pbuild42
+test_script:
+ - mvn test -B -Pbuild43
+ - mvn test -B -Pbuild42
diff --git a/pom.xml b/pom.xml
index c6e459c4e..6c41936d5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.microsoft.sqlserver
mssql-jdbc
- 6.4.0-SNAPSHOT.${jreVersion}
+ 6.4.0.${jreVersion}
jar
Microsoft JDBC Driver for SQL Server
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLJdbcVersion.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLJdbcVersion.java
index 81ab1a603..9aaaa8f52 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLJdbcVersion.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLJdbcVersion.java
@@ -10,7 +10,7 @@
final class SQLJdbcVersion {
static final int major = 6;
- static final int minor = 3;
- static final int patch = 6;
+ static final int minor = 4;
+ static final int patch = 0;
static final int build = 0;
}
diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java
index d4fe81010..262728a94 100644
--- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java
+++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerPreparedStatement.java
@@ -528,7 +528,7 @@ final void doExecutePreparedStatement(PrepStmtExecCmd command) throws SQLServerE
}
String dbName = connection.getSCatalog();
- boolean needsPrepare = false;
+ boolean needsPrepare = true;
// Retry execution if existing handle could not be re-used.
for (int attempt = 1; attempt <= 2; ++attempt) {
try {
@@ -571,13 +571,8 @@ private boolean retryBasedOnFailedReuseOfCachedHandle(SQLException e,
// 586: The prepared statement handle %d is not valid in this context. Please verify that current database, user default schema, and
// ANSI_NULLS and QUOTED_IDENTIFIER set options are not changed since the handle is prepared.
// 8179: Could not find prepared statement with handle %d.
- // 99586: Error used for testing.
- if (needsPrepare) {
- return false;
- }
- else {
- return 1 == attempt && (586 == e.getErrorCode() || 8179 == e.getErrorCode() || 99586 == e.getErrorCode()) && connection.isStatementPoolingEnabled();
- }
+ if(needsPrepare) return false;
+ return 1 == attempt && (586 == e.getErrorCode() || 8179 == e.getErrorCode()) && connection.isStatementPoolingEnabled();
}
/**
@@ -2634,7 +2629,7 @@ final void doExecutePreparedStatementBatch(PrepStmtBatchExecCmd batchCommand) th
}
String dbName = connection.getSCatalog();
- boolean needsPrepare = false;
+ boolean needsPrepare = true;
// Retry execution if existing handle could not be re-used.
for (int attempt = 1; attempt <= 2; ++attempt) {
try {