Skip to content

Latest commit

 

History

History
510 lines (418 loc) · 36.5 KB

CHANGELOG.md

File metadata and controls

510 lines (418 loc) · 36.5 KB

Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog

[7.3.0] Preview Release

Added

  • Added support in SQLServerBulkCopy to allow Pooled/XA Connection instances during object creation #968
  • Added support for FLOAT data type for bulk copy operation when using RowSet #986

Fixed Issues

  • Fixed a possible Statement leak in SQLServerConnection.isValid() API #955
  • Fixed rounding behavior when inserting datetime values into SQL Server version 2016 and later #962
  • Fixed SQLServerConnection.abort() API behavior to clear resources consistently #983
  • Fixed SQLServerConnection documentation #984
  • Fixed SQL Exception Error State length to respect SQLSTATE Standards #977

Changed

  • Refactored SELECT_METHOD in SQLServerConnection to not fetch the same connection property twice #987
  • Improved SQLServerParameterMetadata API implementations and code coverage #973

[7.2.1] HotFix & Stable Release

Fixed Issues

  • Fixed parsing issues with certain parameterized queries #950

[7.2.0] Stable Release

Added

  • Added Azure Pipelines CI configuration to trigger Windows Client testing with SQL Server 2017 and SQL Server 2008 R2 #940

Fixed Issues

  • Fixed issue with ThreadPoolExecutor thread preventing JVM from exiting #944
  • Fixed issues reported by Static Analysis Tool - SonarQube #928 #930 #933
  • Fixed Timestamp comparison with "Thai" locale in DataTypesTest #941

Changed

  • Changed timeout request handling implementation to use SharedTimer #920
  • Removed Appveyor CI and updated Travis CI configuration #940

[7.1.4] Preview Release

Added

  • Added APIs for DataSourceFactory and OSGI Framework #700
  • Added support for OffsetDateTime to be passed as 'type' in ResultSet.getObject() #830
  • Added support for Active Directory MSI Authentication #838
  • Added more datatype tests to JUnit test suite #878 #916
  • Added an option to perform JUnit testing against Azure Data Warehouse #903
  • Added new APIs to retrieve SQL Server error information received with SQLServerException #905

Fixed Issues

  • Fixed issue with java.time.OffsetDateTime value sent to the server being affected by the default timezone #831
  • Fixed SSL certificate validation to respect wildcards #836
  • Fixed Bulk Copy for batch insert operation to not error out against specific datatypes #912

Changed

  • Fixed synchronization on a non-final field #860
  • Removed hardcoded error messages from test file #904
  • Updated Issue and Pull Request templates #906
  • Updated JUnit tests by closing all resources consistently and updated Maven dependency versions to latest #919

[7.1.3] Preview Release

Added

  • Added a new SQLServerMetaData constructor for string values of length greater than 4000 #876

Fixed Issues

  • Fixed an issue with Geography.point() having coordinates reversed #853
  • Fixed intermittent test failures #854 #862 #888
  • Fixed an issue with setAutoCommit() leaving a transaction open when running against Azure SQL Data Warehouse #881

Changed

  • Changed query timeout logic to use a single thread #842
  • Code cleanup #857 #873
  • Removed populating Lobs when calling ResultSet.wasNull() #875
  • Improved retry logic for intermittent TLS1.2 issue when establishing a connection #882

[7.1.2] Preview Release

Added

  • Added support for JDK 11 #824 #837 #807
  • Updated SQL keywords in DatabaseMetaData #829
  • Improvements in DatabaseMetadata to prevent Statement leaks and enhance Statement caching #806

Fixed Issues

  • Fixed slf4j warning message in tests #841
  • Fixed potential NullPointerException in logException() #844
  • Fixed intermittent failures in JUnit - LobsTest #827
  • Fixed useBulkCopyForBatchInserts API to respect Statement timeout value #817

Changed

  • Updated JUnit tests to remove hard-coded names #809
  • Removed illegal reflection access in Kerberos Authentication #839
  • Enabled non-running JUnit tests #847
  • Updated Clobs to use StandardCharsets.US_ASCII instead of hard-coded string #855
  • Code cleanup #821 #825

[7.1.1] Preview Release

Added

  • Added streaming capabilities for Clob.getAsciiStream() #799

Fixed Issues

  • Fixed a bug where calling length() after obtaining a stream would close the stream for Clobs/NClobs #799
  • Fixed Clob/NClob encoding issues #799
  • Fixed issues in Bulk Copy exception handling #801
  • Fixed closeable resource leaks in JUnit tests #797
  • Fixed issues with apostrophe being passed in table name #780
  • Fixed statement leaks and improved exception handling in SQLServerParameterMetadata #780

Changed

  • Changed error message to be thrown when data out of range for DECIMAL/NUMERIC types #796

[7.1.0] Preview Release

Added

  • Added support for LocalDate, LocalTime and LocalDateTime to be passed as 'type' in ResultSet.getObject() #749
  • Added support to read SQL Warnings after ResultSet is read completely #785

Fixed Issues

  • Fixed Javadoc warnings and removed obselete HTML tags from Javadocs #786
  • Fixed random JUnit failures in framework tests #762

Changed

  • Improved performance of readLong() function by unrolling loop and using bitwise operators instead of additions #763
  • Removed logging logic which caused performance degradation in AE #773

[7.0.0] Stable Release

Added

  • Added 'Automatic-Module-Name' manifest entry to jre10 Jar, allowing JDK 10 users to access driver module 'com.microsoft.sqlserver.jdbc' #732
  • Added setUseBulkCopyForBatchInsert() to request boundary declaration APIs #739
  • Added new test for validation of supported public APIs in request boundary declaration APIs #746

Fixed Issues

  • Fixed policheck issue with a keyword #745
  • Fixed issues reported by static analysis tools (SonarQube, Fortify) #747

Changed

  • Reformatted code and updated mssql-jdbc-formatter #742
  • Changed Sha1HashKey to CityHash128Key for generating PreparedStatement handle and metadata cache keys #717
  • Changed order of logic for checking the condition for using Bulk Copy API #736
  • Changed collation name in UTF8SupportTest #741
  • Changed scope of unwanted Public APIs #757
  • Changed behavior of Bulk Copy API for batch inserts to disallow non-parameterized queries #756
  • Changed APIs and JavaDocs for Spatial Datatypes #752
  • Improved Javadoc comments in driver #754, #760

[6.5.4] Preview Release

Added

  • Added new connection property "useBulkCopyForBatchInsert" to enable Bulk Copy API support for batch insert operation #686
  • Added implementation for Java 9 introduced Boundary methods APIs on Connection interface #708
  • Added support for "Data Classification Specifications" on fetched resultsets #709
  • Added support for UTF-8 feature extension #722

Fixed Issues

  • Fixed issue with escaping catalog name when retrieving from database metadata #718
  • Fixed issue with tests requiring additional dependencies #729

Changed

  • Made driver default compliant to JDBC 4.2 specifications #711
  • Updated ADAL4J dependency version to 1.6.0 #711
  • Cleaned up socket handling implementation to generalize functionality for different JVMs and simplified the logic for single address case #663

[6.5.3] Preview Release

Added

  • Added removed constructor back to AKV Provider which supports authentication with a customized method to fetch accessToken #675
  • Added support for JDK 10 for both Maven and Gradle #691
  • Added a resource bundle to handle JUnit error strings #698

Fixed Issues

  • Fixed the driver disposing user created credentials when using Kerberos Constrained Delegation #636
  • Fixed an issue with HostnameInCertificate when redirected while connected to Azure #644
  • Fixed an intermittent issue with Prepared Statement handle not found #648
  • Fixed a conflict with JDBC Compliance where the driver was returning marked columns as SS_IS_COMPUTED instead of IS_GENERATED #695
  • Fixed maven build warnings and deprecated Java API warnings #701
  • Fixed some Javadoc related warnings #702

[6.5.2] Preview Release

Added

  • Added new connection property "cancelQueryTimeout" to cancel QueryTimeout on Connection and Statement #674

Fixed Issues

  • Improved performance degradation while maintaining JDBC compliance with results from sp_fkeys #677
  • Fixed an issue where ResultSetMetaData instances created by a ResultSet that has been closed were not persisting #685
  • Fixed an issue with PreparedStatement.setBigDecimal when no scale is passed #684
  • Fixed an issue with Clobs/NClobs not persisting after ResultSet/Connection closes #682

Changed

  • Updated the samples to be usable with Eclipse directly, and updated the driver version used by the samples to 6.4.0.jre9 #679
  • Updated Gradle script for building JDBC Driver #689
  • Updated Maven dependencies for test suite #676
  • Updated multiple Maven dependency and plugin versions #688

[6.5.1] Preview Release

Added

  • Test cases for Date, Time, and Datetime2 data types #558

Fixed Issues

  • Fixed an issue where ResultSetMetadata returned incorrect columnType for Geometry and Geography data types #657
  • Fixed server side CPU Affinity problems caused by uneven connection distribution across NUMA Nodes when multiSubnetFailover is true #662
  • Fixed an issue where Driver wasn't parsing TDS Packets completely to capture exceptions raised inside executed stored procedures #664
  • Fixed an issue where driver throws exception when using setMaxRows() followed by query execution when SHOWPLAN_TEXT is ON #666

Changed

  • Removed unused imports which forced users to import the ADAL4J library #652

[6.5.0] Preview Release

Added

  • Support for spatial datatypes #642

Fixed Issues

  • Fixed blobs becoming unavailable when the Result Set cursor moves or the Result Set closes #595
  • Fixed an issue when attempting to insert an empty or null value into an encrypted column #632
  • Fixed a misleading error message thrown by the driver when a user doesn't have execute permissions #635
  • Fixed statements throwing SQLServerException instead of java.sql.SQLTimeoutException when the query times out #641

Changed

  • Unit tests now use SQLException in most cases instead of SQLServerException.

[6.4.0] Stable Release

Added

  • Support added for AAD Integrated Authentication with ADAL4J on Windows/Linux/Mac OS #603
  • Enable Recover after MSDTC is restarted #581
  • Added Version Update configuration rules to project #541
  • JDK 9 Compatibility + JDBC 4.3 API support added to the driver [#601 (microsoft#601)

Fixed Issues

  • Re-introduced Retry Logic for Prepared Statement Caching implementation and remove detect change context function #618 and #620
  • Fixes for SonarQube Reported issues #599
  • Fixes for Random Assertion Errors #597

Changed

  • Updated Appveyor to use JDK9 building driver and running tests #619
  • JDK 7 compilation support removed from the driver #601

[6.3.6] Preview Release

Added

  • Added support for using database name as part of the key for handle cache #561
  • Updated ADAL4J version to 1.3.0 and also added it into README file #564

Fixed Issues

  • Fixed issues with static loggers being set by every constructor invocation #563

[6.3.5] Preview Release

Added

  • Added handle for Account Locked Exception 18486 during login in SQLServerConnection #522

Fixed Issues

  • Fixed the issues with Prepared Statement Metadata Caching implementation #543
  • Fixed issues with static logger member in abstract class 'SQLServerClobBase' #537

[6.3.4] Preview Release

Added

  • Added new ThreadGroup creation to prevent IllegalThreadStateException if the underlying ThreadGroup has been destroyed #474
  • Added try-with-resources to JUnit tests #520

Fixed Issues

  • Fixed the issue with passing parameters names that start with '@' to a CallableStatement #495
  • Fixed SQLServerDataTable creation being O(n^2) issue #514

Changed

  • Changed some manual array copying to System.arraycopy() #500
  • Removed redundant toString() on String objects #501
  • Replaced literals with constants #502

[6.3.3] Preview Release

Added

  • Added connection properties for specifying custom TrustManager #74

Fixed Issues

  • Fixed exception thrown by getters on null columns #488
  • Fixed issue with DatabaseMetaData#getImportedKeys() returns wrong value for DELETE_RULE #490
  • Fixed issue with ActivityCorrelator causing a classloader leak #465

Changed

  • Removed explicit extends Object #469
  • Removed unnecessary return statements #471
  • Simplified overly complex boolean expressions #472
  • Replaced explicit types with <> (the diamond operator) #420

[6.3.2] Preview Release

Added

  • Added new connection property: sslProtocol #422
  • Added "slow" tag to long running tests #461

Fixed Issues

  • Fixed some error messages #452 & #459
  • Fixed statement leaks #455
  • Fixed an issue regarding to loginTimeout with TLS #456
  • Fixed sql_variant issue with String type #442
  • Fixed issue with throwing error message for unsupported datatype #450
  • Fixed issue that initial batchException was not thrown #458

Changed

  • Changed sendStringParameterAsUnicode to impact set/update null #445
  • Removed connection property: fipsProvider #460
  • Replaced for and while loops with foeach loops #421
  • Replaced explicit types with the diamond operator #468 & #420

[6.3.1] Preview Release

Added

  • Added support for datetime/smallDatetime in TVP #435
  • Added more JUnit tests for Always Encrypted #432

Fixed Issues

  • Fixed getString issue for uniqueIdentifier #423

Changed

  • Skip long running tests based on Tag #425
  • Removed volatile keyword #409

[6.3.0] Preview Release

Added

  • Added support for sql_variant datatype #387
  • Added more JUnit tests for Always Encrypted #404

Fixed Issues

  • Fixed Turkey locale issue when lowercasing an "i" #384
  • Fixed issue with incorrect parameter count for INSERT with subquery #373
  • Fixed issue with running DDL in PreparedStatement #372
  • Fixed issue with parameter metadata with whitespace characters #371
  • Fixed handling of explicit boxing and unboxing #84
  • Fixed metadata caching batch query issue #393
  • Fixed javadoc issue for the newest maven version #385

Changed

  • Updated ADAL4J dependency to version 1.2.0 #392
  • Updated azure-keyvault dependency to version 1.0.0 #397

[6.2.2] Hotfix & Stable Release

Changed

  • Updated ADAL4J to version 1.2.0 and AKV to version 1.0.0 #516

[6.2.1] Hotfix & Stable Release

Fixed Issues

  • Fixed queries without parameters using preparedStatement #372

Changed

  • Removed metadata caching #377

[6.2.0] Release Candidate

Added

  • Added TVP and BulkCopy random data test for all data types with server cursor #319
  • Added AE setup and test #337,328
  • Added validation for javadocs for every commit #338
  • Added metdata caching #345
  • Added caching mvn dependencies for Appveyor #320
  • Added caching mvn dependencies for Travis-CI #322
  • Added handle for bulkcopy exceptions #286
  • Added handle for TVP exceptions #285

Fixed Issues

  • Fixed metadata caching issue with AE on connection #361
  • Fixed issue with String index out of range parameter metadata #353
  • Fixed javaDocs #354
  • Fixed javaDocs #299
  • Performance fix from @brettwooldridge #347
  • Get local host name before opening TDSChannel #324
  • Fixed TVP Time issue #317
  • Fixed SonarQube issues #300
  • Fixed SonarQube issues #301
  • Fixed random TDS invalid error #310
  • Fixed password logging #298
  • Fixed bulkcopy cursor issue #270

Changed

  • Refresh Kerberos configuration #279

[6.1.7] Preview Release

Added

  • Added support for data type LONGVARCHAR, LONGNVARCHAR, LONGVARBINARY and SQLXML in TVP #259
  • Added new connection property to accept custom JAAS configuration for Kerberos #254
  • Added support for server cursor with TVP #234
  • Experimental Feature: Added new connection property to support network timeout #253
  • Added support to authenticate Kerberos with principal and password #163
  • Added temporal types to BulkCopyCSVTestInput.csv #262
  • Added automatic detection of REALM in SPN needed for Cross Domain authentication #40

Changed

  • Updated minor semantics #232
  • Cleaned up Azure Active Directory (AAD) Authentication methods #256
  • Updated permission check before setting network timeout #255

Fixed Issues

  • Turn TNIR (TransparentNetworkIPResolution) off for Azure Active Directory (AAD) Authentication and changed TNIR multipliers #240
  • Wrapped ClassCastException in BulkCopy with SQLServerException #260
  • Initialized the XA transaction manager for each XAResource #257
  • Fixed BigDecimal scale rounding issue in BulkCopy #230
  • Fixed the invalid exception thrown when stored procedure does not exist is used with TVP #265

[6.1.6] Preview Release

Added

  • Added constrained delegation to connection sample #188
  • Added snapshot to identify nightly/dev builds #221
  • Clarifying public deprecated constructors in LOBs #226
  • Added OSGI Headers in MANIFEST.MF #218
  • Added cause to SQLServerException #202

Changed

  • Removed java.io.Serializable interface from SQLServerConnectionPoolProxy #201
  • Refactored DROP TABLE and DROP PROCEDURE calls in test code #222
  • Removed obsolete methods from DriverJDBCVersion #187

Fixed Issues

  • Typos in SQLServerConnectionPoolProxy #189
  • Fixed issue where exceptions are thrown if comments are in a SQL string #157
  • Fixed test failures on pre-2016 servers #215
  • Fixed SQLServerExceptions that are wrapped by another SQLServerException #213
  • Fixed a stream isClosed error on LOBs test #233
  • LOBs are fully materialised #16
  • Fix precision issue in TVP #217
  • Re-interrupt the current thread in order to restore the threads interrupt status #196
  • Re-use parameter metadata when using Always Encrypted #195
  • Improved performance for PreparedStatements through minimized server round-trips #166

[6.1.5] Preview Release

Added

  • Added socket timeout exception as cause#180
  • Added Constrained delegation support#178
  • Added JUnit test for Statement test#174
  • Added test for statement.cancel() when MultiSubnetFailover is set to true#173
  • Added tests for lobs #168
  • Added badges for License, Maven Central, JavaDocs & gitter chat room #184

Changed

  • Enabled update counts for SELECT INTO statements#175
  • Use Executor service instead of thread#162
  • Convert socket adaptor to socket#160

Fixed Issues

  • Fixed local test failures #179
  • Fixed random failure in BulkCopyColumnMapping test#165

[6.1.4] Preview Release

Added

  • Added isWrapperFor methods for MetaData classes#94
  • Added Code Coverage #136
  • Added TVP schema test #137
  • Introduced FIPS boolean property #135
  • Added unit statement test cases #147

Changed

  • Enabled AAD Authentication with Access Token on Linux #142
  • Enabled AAD Authentication with ActiveDirectoryPassword on Linux #146
  • Made Azure Key Vault and Azure Active Directory Authentication Dependencies optional #148
  • Getting TVP name from ParameterMetaData when using TVP with a stored procedure #138

Fixed Issues

  • Fixed getBinaryStream issue #133
  • Fixed an issue of Bulk Copy when AlwaysEncrypted is enabled on connection and destination table is not encrypted #151

[6.1.3] Preview Release

Added

  • Added Binary and Varbinary types to the jUnit test framework #119
  • Added BulkCopy test cases for csv #123
  • Added BulkCopy ColumnMapping test cases #127

Changed

  • Switched to clean rounding for bigDecimal #118
  • Updated BVT tests to use jUnit test framework #120
  • In case of socket timeout occurrence, avoid connection retry #122
  • Changed ant build file to skip tests #126

Fixed Issues

  • Fixed the inconsistent coding style #4
  • Fixed NullPointerException in case when SocketTimeout occurs #65

[6.1.2] Preview Release

Added

  • Socket timeout implementation for both connection string and data source #85
  • Query timeout API for datasource #88
  • Added connection tests #95
  • Added Support for FIPS enabled JVM #97
  • Added additional tests for bulk copy [#110] (microsoft#110)

Changed

  • Remove redundant type casts #63
  • Read SQL Server error message if status flag has DONE_ERROR set #73
  • Fix a bug when the value of queryTimeout is bigger than the max value of integer #78
  • Add new dependencies to gradle build script #81
  • Updates to test framework #90

Fixed Issues

  • Set the jre8 version as default #59
  • Fixed exception SQL Server instance in use does not support column encryption #65
  • TVP Handling is causing exception when calling SP with return value #80
  • BigDecimal in TVP can incorrectly cause SQLServerException related to invalid precision or scale #86
  • Fixed the connection close issue on using variant type [#91] (microsoft#91)

[6.1.1] Preview Release

Added

  • Java Docs #46
  • Driver version number in LOGIN7 packet #43
  • Travis- CI Integration #23
  • Appveyor Integration #23
  • Make Ms Jdbc driver more Spring friendly #9
  • Implement Driver#getParentLogger #8
  • Implement missing MetaData #unwrap methods #12
  • Added Gradle build script #54
  • Added a queryTimeout connection parameter #45
  • Added Stored Procedure support for TVP #47

Changed

  • Use StandardCharsets #15
  • Use Charset throughout #26
  • Upgrade azure-keyvault to 0.9.7 #50
  • Avoid unnecessary calls to String copy constructor #14
  • make setObject() throw a clear exception for TVP when using with result set #48
  • Few clean-ups like remove wild card imports, unused imports etc. #52
  • Update Maven Plugin #55

[6.1.0] Stable Release

Changed

  • Open Sourced.