==============================================================================
Magnitude Simba Google BigQuery ODBC Data Connector Release Notes
==============================================================================

The release notes provide details of enhancements, features, known issues, and
workflow changes in Simba Google BigQuery ODBC Connector 3.0.0, as well as the
version history. 


3.0.0 ========================================================================

Released 2023-04-14

This release contains workflow changes, support deprecations and removals, 
please review Workflow Changes section below.

Enhancements & New Features

 * [GAUSS-1641][GAUSS-1647] Updated Refresh Token field behavior

   In the DSN configuration dialog, the Refresh Token field is now hidden with
   bullets. To generate refresh tokens that you can copy or paste into 
   connection strings, use the get_refresh_token.py script located under the
   Tools directory. The DSN configuration dialog still generates a valid DSN 
   in the Windows registry. For more information, see the Installation and 
   Configuration Guide.

 * [GAUSS-1593] Support for multiple operating systems

   The connector now supports the following operating systems:
   - RedHat Enterprise Linux (RHEL) 9
   - Ubuntu 22.04

   For a list of supported operating systems, see the Installation and 
   Configuration Guide.

 * [GAUSS-1654][GAUSS-1588] Updated third-party libraries

   The connector now uses the following third-party libraries:
   - Expat 2.5.0 (previously 2.4.6)   
   - ICU 71.1(previously 58.3)
   - LibCurl 7.88.1 (previously 7.84.0)
   - OpenSSL 3.0.8 (previously 1.1.1s) 
   - Zlib 1.2.13 (previously 1.2.11) 


Resolved Issues
The following issues have been resolved in Simba Google BigQuery ODBC 
Connector 3.0.0.

 * [GAUSS-1609] The connector displays an incorrect error message for 
   decryption.

 * [GAUSS-1644] For catalog functions other than SQLStatistics, the connector 
   incorrectly uses SEQ_IN_INDEX for the ordinal position column.


Known Issues
The following are known issues that you may encounter due to limitations in
the data source, the connector, or an application.

 * The connector does not support parameterized types for Resultset and 
   Parameter metadata.

   This is a limitation of the Google BigQuery server. 

 * The connector does not support parameters in the exception block.
 
   This is a limitation of the Google BigQuery server discovered on Mar 2021.
   
 * On macOS or Linux platforms, when the connector converts SQL_DOUBLE data to 
   SQL_C_CHAR or SQL_C_WCHAR, data which is small or large enough to require 
   representation in scientific notation may prepend a 0 to the exponent. 

   This is a limitation of Google BigQuery. For a list of BigQuery data types 
   that the connector maps to the SQL_DOUBLE ODBC type, see the Installation 
   and Configuration Guide.

 * When casting data, you must specify the data type according to Google 
   BigQuery standards.

   When casting data to a specific data type, you must use the corresponding 
   data type name shown in the "Casting" section of the Query Reference: 
   https://cloud.google.com/bigquery/sql-reference/functions-and-operators#cas
   ting 

   For example, to cast the "salary" column to the INTEGER type, you must 
   specify INT64 instead of INTEGER: 

      SELECT position, CAST(salary AS INT64) from Employee

 * When using the Standard SQL dialect, the connector's ODBC escape 
   functionality is subject to the following limitations:
   
   - Standard SQL does not support the seed in the RAND([seed]) scalar
     function. As a result, the connector maps RAND() and RAND(6) to RAND().

   - For the following scalar functions, BigQuery only returns values in UTC,
     but ODBC expects the values in local time:
     - CURDATE()
     - CURRENT_DATE()
     - CURRENT_TIME[(TIME_PRECISION)]
     - CURRENT_TIMESTAMP[(TIME_PRECISION)]
     - CURTIME()
     - NOW()

   - Time precision values are not supported for the 
     CURRENT_TIME[(TIME_PRECISION)] and CURRENT_TIMESTAMP[(TIME_PRECISION)]
     scalar functions.

   - TIME data types are not supported for the following scalar functions:
     - EXTRACT(interval FROM datetime)
     - TIMESTAMPADD(interval,integer_exp,timestamp_exp
     - TIMESTAMPDIFF(interval,timestamp_exp1,timestamp_exp2)
     For TIMESTAMPADD and TIMESTAMPDIFF, only the TIMESTAMP and DATE data 
     types are supported.

   - When calling the TIMESTAMPADD() scalar function to work with DAY, WEEK, 
     MONTH, QUARTER, or YEAR intervals, the connector escapes the function and 
     calls DATE_ADD() instead. DATE_ADD() only supports DATE types, so time
     information is lost if the function is called on TIMESTAMP data.

   - When calling the TIMESTAMPDIFF() scalar function to work with DAY, MONTH, 
     QUARTER, or YEAR intervals, the connector escapes the function and calls 
     DATE_DIFF() instead. DATE_DIFF() only supports DATE types, so time 
     information is lost if the function is called on TIMESTAMP data.

   - For the BIT_LENGTH scalar function, only the STRING and BYTES data types 
     are supported. This behavior aligns with the SQL-92 specification, but 
     not the ODBC specification.

 * When using the Legacy SQL dialect, the connector's ODBC escape 
   functionality is subject to the following limitations:

   - For the following scalar functions, BigQuery only returns values in UTC,
     but ODBC expects the values in local time:
     - CURDATE()
     - CURRENT_DATE()
     - CURRENT_TIME[(TIME_PRECISION)]
     - CURRENT_TIMESTAMP[(TIME_PRECISION)]
     - CURTIME()

   - Time precision values are not supported for the 
     CURRENT_TIME[(TIME_PRECISION)] and CURRENT_TIMESTAMP[(TIME_PRECISION)]
     scalar functions. 

   - For the following scalar functions, TIME data types are not supported.
     Only the TIMESTAMP and DATE data types are supported.
     - TIMESTAMPADD(interval,integer_exp,timestamp_exp
     - TIMESTAMPDIFF(interval,timestamp_exp1,timestamp_exp2)


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

The following changes may disrupt established workflows for the connector.

In addition to changes that are already implemented in the current version of 
the connector, this section describes potentially disruptive changes that will 
be implemented in a future version of the connector, so that you can plan 
accordingly.


3.0.0 ------------------------------------------------------------------------

 * [GAUSS-1593] Removed support for multiple operating systems

   Beginning with this release, the connector no longer supports the following
   operating systems: 
   - Ubuntu 18.04
   - Windows 8.1

   For a list of supported operating systems, see the Installation and 
   Configuration Guide.

 * [GAUSS-1595] Updated HTAPI support

   The following changes have been made to the HTAPI feature:
   - The Minimum Table Size for HTAPI field (HTAPI_MinResultsSize property) 
     has been removed.
   - The Ratio of Results to Rows Per Block field (HTAPI_MinActivationRatio
     property) has been renamed to Activation Threshold for High-Throughput 
     API (HTAPI_ActivationThreshold). The HTAPI_MinActivationRatio property
     has been deprecated and is an alias. 
   - The Enable HTAPI for Large Results Dataset field (EnableHTAPI property)
     has been renamed Allow High-Throughput API for Large Results queries 
     (AllowHtapiForLargeResults). The EnableHTAPI property has been deprecated
     and is an alias. 
   - In the features section, the High-Throughput API section has been updated
     with new information.

 * [GAUSS-1604] Removed support for macOS universal bitness

   Beginning with this release, the connector no longer supports universal
   bitness for macOS. Support for macOS versions 10.14 (32-bit) and 10.15
   (32-bit) has been removed. For a list of supported macOS versions, see the 
   Installation and Configuration Guide.

 * [GAUSS-1624] Updated Large Result Set support

   The following changes have been made to the Large Result Set feature:
   - In the Advanced options configuration, Temporary Table Expiration Time
     has been renamed to Default temp table expiration time (ms). 
   - In the features section, the Large Result Set Support section has been 
     updated with new information.

 * [GAUSS-1625] Updated ClientId and ClientSecret default values

   The connector now uses package-specific default values for the ClientId and
   ClientSecret properties. It is recommeneded to use your own Client ID and
   Client Secret. For more information, see the Installation and Configuration
   Guide.

 * [GAUSS-1645] Removed support for P12 kefiles 

   Beginning with this release, the connector no longer supports P12 keyfiles.
   Users relying on service account will have to use JSON keyfiles instead.
   The P12CustomPwd property used for supporting the P12 keyfile has also been
   deprecated.


2.5.2 ------------------------------------------------------------------------

 * [GAUSS-1626] Removed redundant connection properties

   Auth_Client_ID and Auth_Client_SECRET connection properties have been 
   deprecated.
	
 * [GAUSS-1543] Upgraded HTAPI property

   The following changes have been applied to the Advanced options 
   configuration:
   - The Enable HTAPI checkbox has been moved from the High Throughput API 
   options section to the Large Results options section.
   - The connector now uses Enable HTAPI for large result dataset that exceed
   the activation ratio and minimum query results size for HTAPI. To do this, 
   select the Enable High-Throughput API for Large Result Dataset checkbox 
   (set the EnableHTAPI property to 1).
   - The Minimum Query Results Size for HTAPI and Ratio of Results to Rows Per
   Block properties are now editable at all times. For more information, see 
   the Installation and Configuration Guide.

2.6.0 ------------------------------------------------------------------------

 * [GAUSS-1583] Updated ClientID and ClientSecret properties

   The connector now uses Simba client details as the default values for the 
   ClientId and ClientSecret properties. The readers are recommended to use
   their own client ID and client secret. For more information, see the 
   Installation and Configuration Guide.

 * [GAUSS-1541] Upgraded Google user account authentication

   The dialog now automatically retrieves a refresh token without a manual
   copy-and-paste of the confirmation code. For more information, see the 
   Installation and Configuration Guide.

 * [GAUSS-1543] Upgraded HTAPI property

   The following changes have been applied to the Advanced options 
   configuration:
   - The Enable HTAPI checkbox has been moved from the High Throughput API 
   options section to the Large Results options section.
   - The connector now uses Enable HTAPI for large result dataset that exceed
   the activation ratio and minimum query results size for HTAPI. To do this, 
   select the Enable High-Throughput API for Large Result Dataset checkbox 
   (set the EnableHTAPI property to 1).
   - The Minimum Query Results Size for HTAPI and Ratio of Results to Rows Per
   Block properties are now editable at all times. For more information, see 
   the Installation and Configuration Guide.


2.5.0 ------------------------------------------------------------------------

 * [GAUSS-1508] Updated authentication interface

   On Windows, the Connector DSN Setup dialog box has been updated. For more 
   information, see the Installation and Configuration Guide.


2.4.5 -----------------------------------------------------------------------
 
 * [GAUSS-1434] Updated MaxThreads property

   The default value of the MaxThreads property is now 8. Previously, the 
   default value was 16. For more information, see the Installation and 
   Configuration Guide.


2.3.5 -----------------------------------------------------------------------
 
 * [GAUSS-1246] Removed support for macOS earlier than 10.14

   Beginning with this release, the connector no longer supports macOS
   versions earlier than 10.14. For a list of supported macOS versions, see 
   the Installation and Configuration Guide.


2.2.4 ------------------------------------------------------------------------

 * [GAUSS-980] Removed support for the Visual C++ Redistributable for Visual
   Studio 2013
  
   Beginning with this release, the driver no longer supports this version
   of the dependency, and requires Visual C++ Redistributable for Visual
   Studio 2015 instead.
   

2.2.2 ------------------------------------------------------------------------

 * [GAUSS-875] New service endpoints

   The driver now uses a new set of service endpoints to connect to the 
   Google BigQuery API. The previous service endpoints have been deprecated. 
   For a list of the new endpoints, see the "Service Endpoints" section of 
   the Installation and Configuration Guide. 

 * [GAUSS-897] Precedence for default large result dataset

   If the Use Default _bqodbc_temp_tables Large Results Dataset check box is 
   selected (the UseDefaultLargeResultsDataset property is set to 1) and a 
   dataset is specified in the Dataset Name For Large Result Sets field (the 
   LargeResultsDataSetID property), the driver now uses the default 
   _bqodbc_temp_tables dataset. For more information, see the Installation 
   and Configuration Guide.


2.2.0 ------------------------------------------------------------------------

 * Linux support changes

   Beginning with this release, the Linux version of the driver now requires 
   glibc 2.17 or later to be installed on the target machine.
   
   As a result, the driver no longer supports CentOS 6 or RedHat Enterprise 
   Linux (RHEL) 6. Only CentOS 7, RHEL 7, and SUSE Linux Enterprise Server 
   (SLES) 11 and 12 are supported.


2.1.22 -----------------------------------------------------------------------

 * [GAUSS-653] Updated large result set behavior

   The driver's behavior for handling large result sets with legacy SQL has
   been changed. When the driver sends a query, it checks whether the "Allow
   Large Results" option is enabled and if there is a dataset name specified.
   If the option is enabled, it requests a temporary large result set for
   your data. This data storage has cost implications for your Big Query
   account, consult the Big Query service documentation for details.


2.1.14 -----------------------------------------------------------------------

 * Minimum TLS Version

   Beginning with this release, the driver requires a minimum version of TLS 
   for encrypting the data store connection. By default, the driver requires 
   TLS version 1.2. This requirement may cause existing DSNs and connection 
   strings to stop working, if they are used to connect to data stores that 
   use a TLS version earlier than 1.2.

   To resolve this, in your DSN or connection string, set the Minimum TLS 
   option (the Min_TLS property) to the appropriate version of TLS for your 
   server. For more information, see the Installation and Configuration Guide.

 * Large result set handling
 
   If you have a default destination set for large datasets but have not
   enabled the Allow Large Result Sets option (the AllowLargeResults property) 
   the driver reports an error.
   
   To resolve this, enable the Allow Large Result Sets option (the 
   AllowLargeResults property).


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

2.5.2 ------------------------------------------------------------------------

Released 2023-02-23

Enhancements & New Features

 * [GAUSS-1596] SNAPSHOT table type support

   The connector now supports the SNAPSHOT table type. If there is a new table
   type that is not supported by the connector, a warning is printed in 
   connector log files.

* [GAUSS-1541] Upgraded Google user account authentication

   The dialog now automatically retrieves a refresh token without a manual
   copy-and-paste of the confirmation code. For more information, see the 
   Installation and Configuration Guide.

* [GAUSS-1602] Change in retrieving refresh token on a Non-Windows machine
   The shell script for generating refresh token on non-windows machine has changed to 
   a python script. For more information, see the Installation and Configuration Guide.

 * [GAUSS-1446] Column Default Value support

   SQLColumns now returns the default value for a column in COLUMN_DEF column.
   For more information, see: 
   https://cloud.google.com/bigquery/docs/default-values.

 * [GAUSS-1539] Upgraded Avro library

   The connector now uses Avro 1.11.1. Previously, the connector used Avro 
   1.8.2. 

 * [GAUSS-1569] Filepath validation

   The connector now validates that a filepath specified in the following 
   connection properties is an absolute local path to an existing file:
   - KeyFile
   - KeyFilePath
   - TrustedCerts

 * [GAUSS-1540] Unicode column name support

   The connector now supports the unicode characters for the table column 
   names. 

 * [GAUSS-1565] Upgraded Encrypt Sensitive Data property

   The configuration dialog on Windows can now be configured to encrypt values
   to the registry such that they can be decrypted by the users. To do this, 
   from the Encrypt Sensitive Data drop down list, select For All Users or For
   Current User Only. For more information, see the Installation and 
   Configuration Guide.


Resolved Issues
The following issues have been resolved in Simba Google BigQuery ODBC 
Connector 2.5.2

 * [GAUSS-1553] In PowerBI, for user account, the connector does not list 
   datasets and tables.

 * [GAUSS-1565] When reading encrypted values in a Windows DSN, the connector
   cannot decrypt.
   
   This issue has been resolved now. The connector can now decrypt values. For
   more information, see the Enhancements & New Features section.   

 * [GAUSS-1568] When a table name with a space exists in the dataset, the 
   connector returns a timeout exception.

 * [GAUSS-1570] If the PSC URL is invalid, the connector does not establish
   the connection.

 * [GAUSS-1552] When a value of type FLOAT64 is passed, the SQLDescribeCol()
   function returns incorrect data.

 * [GAUSS-1577] When using OAuth in the DSN to create a linked server on a SQL
   Server, the key file path gets nullified.

 * [GAUSS-1585] In some cases, when a raw JSON with a long private key is
   specified in the KeyFile property, the connector fails to connect.

 * [GAUSS-1597] When SQLTables or SQLColumns contains unsupported table types,
   for example the SNAPSHOT table type, the connector terminates unexpectedly.


2.6.1 ------------------------------------------------------------------------

Released 2023-01-30

Enhancements & New Features

 * [GAUSS-1596] SNAPSHOT table type support

   The connector now supports the SNAPSHOT table type. If there is a new table
   type that is not supported by the connector, a warning is printed in 
   connector log files.


Resolved Issues
The following issue has been resolved in Simba Google BigQuery ODBC 
Connector 2.6.1.

 * [GAUSS-1597] When SQLTables or SQLColumns contains unsupported table types,
   for example the SNAPSHOT table type, the connector terminates unexpectedly.


2.6.0 ------------------------------------------------------------------------

Released 2022-12-13

Enhancements & New Features

 * [GAUSS-1446] Column Default Value support

   SQLColumns now returns the default value for a column in COLUMN_DEF column.
   For more information, see: 
   https://cloud.google.com/bigquery/docs/default-values.

 * [GAUSS-1539] Upgraded Avro library

   The connector now uses Avro 1.11.1. Previously, the connector used Avro 
   1.8.2. 

 * [GAUSS-1569] Filepath validation

   The connector now validates that a filepath specified in the following 
   connection properties is an absolute local path to an existing file:
   - KeyFile
   - KeyFilePath
   - TrustedCerts

 * [GAUSS-1540] Unicode column name support

   The connector now supports the unicode characters for the table column 
   names. 

 * [GAUSS-1565] Upgraded Encrypt Sensitive Data property

   The configuration dialog on Windows can now be configured to encrypt values
   to the registry such that they can be decrypted by the users. To do this, 
   from the Encrypt Sensitive Data drop down list, select For All Users or For
   Current User Only. For more information, see the Installation and 
   Configuration Guide.


Resolved Issues
The following issues have been resolved in Simba Google BigQuery ODBC 
Connector 2.6.0.

 * [GAUSS-1553] In PowerBI, for user account, the connector does not list 
   datasets and tables.

 * [GAUSS-1565] When reading encrypted values in a Windows DSN, the connector
   cannot decrypt.
   
   This issue has been resolved now. The connector can now decrypt values. For
   more information, see the Enhancements & New Features section.   

 * [GAUSS-1568] When a table name with a space exists in the dataset, the 
   connector returns a timeout exception.

 * [GAUSS-1570] If the PSC URL is invalid, the connector does not establish
   the connection.

 * [GAUSS-1552] When a value of type FLOAT64 is passed, the SQLDescribeCol()
   function returns incorrect data.

 * [GAUSS-1577] When using OAuth in the DSN to create a linked server on a SQL
   Server, the key file path gets nullified.

 * [GAUSS-1585] In some cases, when a raw JSON with a long private key is
   specified in the KeyFile property, the connector fails to connect.


2.5.0 ------------------------------------------------------------------------

Released 2022-09-07

Enhancements & New Features

 * [GAUSS-1506] External account authentication support

   You can now configure the connector to authenticate the connection using an 
   external account (workforce identity federation), with limited support, 
   using Azure AD and Okta identity providers. For more information, see the 
   Installation and Configuration Guide.   
   
 * [GAUSS-1488] Private Service Connect support

   You can now configure the connector to use Private Service Connect URLs. To
   do this, set the PrivateServiceConnectUris property to the desired URI. For
   more information, see the Installation and Configuration Guide.   
   
 * [GAUSS-1493] Transaction API support
   
   The connector now supports ODBC transaction APIs. BigQuery supports 
   multi-statement transactions inside a single query, or across multiple 
   queries, when using sessions. For more information about transactions, see:
   https://cloud.google.com/bigquery/docs/reference/standard-sql/transactions.
   
   To use transaction APIs, and work with transactions across multiple 
   queries, set the EnableSession property to 1. For more information about
   sessions, see:
   https://cloud.google.com/bigquery/docs/sessions-intro     
   
 * [GAUSS-1462] Default project for dataset support

   The connector is now verified to use a default project for datasets. To do 
   this, set the dataset_project_id property in the QueryProperties connection
   property to the desired project. For more information, see the Installation
   and Configuration Guide and the Google BigQuery documentation:
   https://cloud.google.com/bigquery/docs/reference/rest/v2/ConnectionProperty  
   
 * [GAUSS-1486] MATERIALIZED_VIEW table support
   
   MATERIALIZED_VIEW has been added to the list of table types. To retrieve 
   these table types, configure SQLTables to TABLE_TYPES_ONLY.

 * [GAUSS-1457] JSON data type support 

   The connector now supports the JSON data type. For more information, see
   the Installation and Configuration Guide and the Google BigQuery 
   documentation:
   https://cloud.google.com/bigquery/docs/reference/standard-sql/json-data
   
 * [GAUSS-1526] Upgraded third-party libraries 

   The connector has been updated to use the following libraries:
   - LibCurl version 7.84.0 (previously 7.78.0)
   - OpenSSL 1.1.1q (previously 1.1.1n)
   
 * [GAUSS-1537] Support for multiple operating systems

   The connector now supports the following operating systems:
   - Windows Server 2022
   - macOS 11 and 12
   - RedHat Enterprise Linux (RHEL) 8
   - Debian 10 and 11
   - Ubuntu 18.04 and 20.04

   For a list of supported operating systems, see the Installation and 
   Configuration Guide.


Resolved Issues
The following issues have been resolved in Simba Google BigQuery ODBC 
Connector 2.5.0.

 * [GAUSS-1475] In some cases, when a semicolon ( ; ) is present in a comment, 
   the connector returns incorrect results.
   
 * [GAUSS-1491] When a GHighThroughputApiError exception occurs, the connector
   does not return an error message in the ErrorMessage file.

   This issue has been resolved. Now, the connector returns an error message.   
 
 * [GAUSS-1495] On non-Windows platforms, the connector makes redundant 
   authentication calls for each SQL statement.
 
 * [GAUSS-1499] When the COMMIT TRANSACTIONS statement fails, the connector 
   does not return an error.
 
 * [GAUSS-1507] In some cases, the connector hides HTTP errors.

   - roles/bigquery.readSessionUser


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