﻿==============================================================================
Simba Athena JDBC Driver with SQL Connector Release Notes
==============================================================================

The release notes provide details of enhancements, features, known issues, and
workflow changes in Simba Athena JDBC Driver 2.0.9, as well as the version
history.


2.0.9 ========================================================================

Released 2019-08-30

Enhancements & New Features

 * [AJ-188] Support for Okta credentials provider

   The driver now supports the use of the Okta service for authentication. For
   more information, see the Installation and Configuration Guide.

 * [AJ-217] Query ID retrieval

   The driver can now retrieve query IDs. This is accomplished using the
   com.interfaces.core.IStatementQueryInfoProvider interface. For more
   information, see the Installation and Configuration Guide.

 * [AJ-221] Support for VPC endpoints

   The driver now supports connections to VPC endpoints. This is configured
   using a set of endpoint override connection properties. For more
   information, see the Installation and Configuration Guide.

 * [AJ-226] S3OutputLocation no longer mandatory

   You no longer need to define the S3OutputLocaiton connection property
   provided a location is defined as part of the Athena Workgroup
   configuration.

 * [AJ-210] Updated Jackson library

   The driver has been updated to use Jackson 2.9.9.

 * [AJ-218] AWS SDK packaged in the driver .jar

   The driver .jar has been updated to include AWS SDK version 1.11.569.


Resolved Issues
The following issues have been resolved in Simba Athena JDBC Driver 2.0.9.

 * [AJ-183] When parameters are missing from a table definition, the driver
   returns an unclear error message.

 * [AJ-212] For some permissions errors, the returned error message does not
   provide sufficient information for identifying the issue

 * [AJ-216] The driver throws Null Pointer Exception when the "partitionkeys"
   parameter is missing from the table definition.


Workflow Changes =============================================================

The following changes may disrupt workflows from earlier versions.

2.0.2 ------------------------------------------------------------------------

 * Removed support for JDBC 4.0

   As of this release, the driver no longer supports JDBC 4.0. Please refer
   to the release notes item "Jackson library updated" in the "Enhancements &
   New Features" section of this release for more details.


2.0.0 ------------------------------------------------------------------------

 * SDK interfaces

   The following AWS SDK interfaces are no longer shaded in the driver jar,
   they are included with the original AWS SDK package names. Any custom
   credential providers that use the old shaded package names for these
   interfaces must be updated.
   - com.amazonaws.auth.AWSCredentials
   - com.amazonaws.auth.AWSCredentialsProvider
   - com.amazonaws.auth.AWSSessionCredentials
   - com.amazonaws.auth.AWSSessionCredentialsProvider


Version History ==============================================================

2.0.8 ------------------------------------------------------------------------

Released 2019-05-14

Resolved Issues
The following issue has been resolved in Simba Athena JDBC Driver 2.0.8.

 * [AJ-198] The driver does not support moving the cursor by an offset.

   This issue has been resolved. The driver now supports the
   ResultSet.absolute(offset) function in cases where the offset value
   moves the cursor. Note that the offset only moves the cursor forward;
   moving the cursor backwards is not supported. Also, negative values for the
   offset are not supported.


2.0.7 ------------------------------------------------------------------------

Released 2019-01-31

Enhancements & New Features

 * [AJ-152] Support for CTAS statements

   The driver now provides support for CTAS statements, consistent with the
   Athena API. As part of this update, the driver now reports the correct
   update count when a CTAS query is executed.

 * [AJ-177] Updated Jackson library

   The driver has been updated to use Jackson 2.9.8. Previously the driver
   used 2.9.5.

 * [AJ-167] Support for workgroups

   A new configuration option has been added that allows you to specify
   a workgroup when authenticating into the data source. To do this, specify
   the Workgroup configuration option.  For details, see the Installation and
   Configuration Guide.


Resolved Issues
The following issue was resolved in Simba Athena JDBC Driver 2.0.7.

 * [AJ-165] In some cases, the driver may display the following message
   when retrieving large result sets using the streaming API:
   "[Simba][AthenaJDBC](100121) An error has occurred."

   This issue has been resolved. The driver now supports retries for
   retrieving failed blocks when using the streaming API. To configure
   the number of retries, use the new MaxStreamErrorRetry configuration
   option. For more information, see the Installation and Configuration Guide.


2.0.6 ------------------------------------------------------------------------

Released 2018-11-07

Enhancements & New Features

 * [AJ-124] SAML authentication using AD FS

   The driver now supports SAML authentication, and can retrieve and use
   credentials from an AD FS (Active Directory Federation Services) credential
   provider. Additionally, to support authentication workflows where the
   retrieved credentials must be exchanged for more specialized AWS
   credentials, the driver provides a post-SAML workflow hook. For more
   information, see the Installation and Configuration Guide.

 * [AJ-162] Optimized and configurable polling intervals for query results

   When a query is being executed, the driver now polls the Athena server for
   the query results at an exponentially changing rate. The driver begins
   polling 5ms after query execution begins, and exponentially increases the
   polling interval to the amount of time indicated by the
   MaxQueryExecutionPollingInterval property setting. This change in polling
   behavior reduces the load on the server.

   Additionally, you can now specify the maximum polling interval. To do this,
   set the MaxQueryExecutionPollingInterval property to the maximum number of
   milliseconds that you want the driver to wait between polling attempts. For
   more information, see the Installation and Configuration Guide.

 * [AJ-164] Improved logging for query timeout errors

   If a query times out, the driver now logs and reports the query ID in the
   error message that is returned.


Resolved Issues
The following issues were resolved in Simba Athena JDBC Driver 2.0.6.

 * [AJ-156][AJ-157] In some cases, when attempting to execute a long query
   statement, the driver fails to execute the query and returns a
   StackOverflowError message.

   This issue has been resolved. Before, this issue occurred due to a
   limitation in the regex library.


2.0.5 ------------------------------------------------------------------------

Released 2018-08-15

Resolved Issues
The following issue was resolved in Simba Athena JDBC Driver 2.0.5.

 * [AJ-145] The cursor for result set streaming can become blocked, causing
   the application to stop responding, when the application attempts to move
   the cursor two or more rows beyond the actual table size.


2.0.4 ------------------------------------------------------------------------

Released 2018-07-10

Enhancements & New Features

 * [AJ-121] Support for resultset streaming API

   The driver now supports the AWS resultset streaming API. This can be
   toggled on or off with the UseResultsetStreaming configuration option.
   See the Installation and Configuration Guide for details.


2.0.3 ------------------------------------------------------------------------

Released 2018-06-15

Resolved Issues
The following issues were resolved in Simba Athena JDBC Driver 2.0.3.

 * [AJ-129] When returning the results of a DatabaseMetadata.getColumns() API
   call, the driver does not return partition column names.

 * [AJ-136] The driver does not return the VIRTUAL_VIEW table type when
   getTableTypes() is called, and as a result some applications cannot query
   tables of this type.


2.0.2 ------------------------------------------------------------------------

Released 2018-04-06

Enhancements & New Features

 * Improved AWS Glue workflow

   AWS Glue availability detection logic now calls an API in Glue to speed
   up detection logic. If the API fails, the driver falls back to the
   original method.

 * Jackson library updated

   The driver now uses Jackson library version 2.9.5 because of the security
   vulnerabilities reported against the earlier versions of the library.
   Because Jackson libraries 2.9.5 support Java 1.7 and higher, the JDBC
   driver is offered for JDBC API 4.1 and 4.2, but not for JDBC API 4.0,
   which requires JDK 6. JDK 6 and Java 1.6 are not supported by Jackson
   2.9.5.

 * Array type support

   The driver now supports returning ResultSet data as an Array. This is
   configured using the UseArraySupport configuration option. For more
   information, see the Installation and Configuration Guide.


Resolved Issues
The following issue has been resolved in Simba Athena JDBC Driver 2.0.2.

 * When the driver executes a query containing comments, it incorrectly
   returns a row-count result set.


2.0.1 ------------------------------------------------------------------------

Released 2018-03-14

Enhancements & New Features

 * Support for CHAR and FLOAT data types

   The driver now supports CHAR and FLOAT data.


Resolved Issues
The following issues were resolved in Simba Athena JDBC Driver 2.0.1.

 * When the driver executes a query containing Common Table Expression (CTE)
   syntax, it incorrectly returns a row-count result set.

 * In the connection URL, if the Host or Catalog properties end with a
   backslash ( / ), the driver returns an error.


2.0.0 ------------------------------------------------------------------------

Released 2018-02-02

Enhancements & New Features

 * AWS STS library

   The AWS STS library is now bundled with the driver as a shaded jar file.

 * Configuration option aliases

   Aliases have been added for some configuration options. Recognized options
   include:

   - s3_staging_dir: alias for S3OutputLocation
   - query_results_encryption_option: alias for S3OutputEncOption
   - query_results_aws_kms_key: alias for S3OutputEncKMSKey
   - aws_credentials_provider_class: alias for AwsCredentialsProviderClass
   - aws_credentials_provider_arguments: alias for AwsCredentialsProviderArguments
   - max_error_retries: alias for MaxErrorRetry
   - connection_timeout (time in milliseconds): alias for ConnectTimeout (time
     in seconds)
   - socket_timeout (time in milliseconds): alias for SocketTimeout (time in
     seconds)

   If a conflict occurs, the driver setting takes precedence over the alias.
   See the Installation and Configuration Guide for full details.

 * Improved class loading

   The driver and data source can now be loaded using the same class name
   for any JDBC version. The new class names are com.simba.athena.jdbc.Driver
   and com.simba.athena.jdbc.DataSource. Old class names continue to work.

 * Updated driver identification details

   The DatabaseMetadata.getDatabaseProductName() call now returns
   "AWS.Athena".
   The DatabaseMetadata.getDriverName() now returns "Simba Athena JDBC
   Driver".
   The driver now populates UserAgentPrefix within the Athena SDK. The prefix
   is "sbAthenaJDBCDriver/DRIVER_VERSION", where DRIVER_VERSION is the
   major.minor version of the driver. For example, this release of the driver
   would use the UserAgentPrefix "sbAthenaJDBCDriver/2.0".

 * Endpoint handling

   You can now pass an endpoint in the form "athena.[REGION].amazonaws.com:
   443;" in the connection string, instead of specifying the region using the
   AWSRegion configuration option. The region is parsed out of this endpoint
   and used to connect to Athena and Glue services. If an endpoint and
   AWSRegion are present in the connection string the AWSRegion takes
   precedence.

 * Column name handling

   The driver right-trims the column names when using the JDBC getColumns API
   call. This only applies when the driver uses a query to get the metadata
   for AWS regions that don’t support Glue or haven’t been upgraded to use
   Glue.

 * AWS SDK support

   The driver now uses AWS SDK version 1.11.271.

 * Jackson support

   The driver now uses Jackson version 2.9.4. The JDBC 4 version of the driver
   still uses jackson-databind-2.7.9.1 as newer versions are not compatible
   with JDK 1.6.


Resolved Issues
The following issue was resolved in Simba Athena JDBC Driver 2.0.0.

 * The precision and scale for integer type columns in the ResultSetMetaData
   of the getColumns JDBC API call are both 1.

   This has been resolved. The correct values, 10 and 0 respectively, have
   been implemented.


==============================================================================
