Bug fixes:
- Fixed default
CrlDownloadMaxSizeto be 20MB instead of 200MB, as the previous value was set too high and could cause out-of-memory issues (snowflakedb#1735)
Internal changes:
- Moved configuration to a dedicated internal package (snowflakedb#1720).
Breaking changes:
- Removed
RaisePutGetErrorfromSnowflakeFileTransferOptions- current behaviour is aligned to always raise errors for PUT/GET operations (snowflakedb#1690). - Removed
GetFileToStreamfromSnowflakeFileTransferOptions- usingWithFileGetStreamautomatically enables file streaming for GETs (snowflakedb#1690). - Renamed
WithFileStreamtoWithFilePutStreamfor consistency (snowflakedb#1690). Arrayfunction now returns error for unsupported types (snowflakedb#1693).WithMultiStatementdoes not return error anymore (snowflakedb#1693).WithOriginalTimestampis removed, useWithArrowBatchesTimestampOption(UseOriginalTimestamp)instead (snowflakedb#1693).WithMapValuesNullableandWithArrayValuesNullablecombined into one optionWithEmbeddedValuesNullable(snowflakedb#1693).- Hid streaming chunk downloader. It will be removed completely in the future (snowflakedb#1696).
- Maximum number of chunk download goroutines is now configured with
CLIENT_PREFETCH_THREADSsession parameter (snowflakedb#1696). - Fixed typo in
GOSNOWFLAKE_SKIP_REGISTRATIONenv variable (snowflakedb#1696). - Removed
ClientIPfield fromConfigstruct. This field was never used and is not needed for any functionality (snowflakedb#1692). - Unexported MfaToken and IdToken (snowflakedb#1692).
- Removed
InsecureModefield fromConfigstruct. UseDisableOCSPChecksinstead (snowflakedb#1692). - Renamed
KeepSessionAlivefield inConfigstruct toServerSessionKeepAliveto adjust with the remaining drivers (snowflakedb#1692). - Removed
DisableTelemetryfield fromConfigstruct. UseCLIENT_TELEMETRY_ENABLEDsession parameter instead (snowflakedb#1692). - Removed stream chunk downloader. Use a regular, default downloader instead. (snowflakedb#1702).
- Removed
SnowflakeTransport. UseConfig.Transporteror simply register your own TLS config withRegisterTLSConfigif you just need a custom root certificates set (snowflakedb#1703). - Arrow batches changes (snowflakedb#1706):
- Arrow batches have been extracted to a separate package. It should significantly drop the compilation size for those who don't need arrow batches (~34MB -> ~18MB).
- Removed
GetArrowBatchesfromSnowflakeRowsandSnowflakeResult. Usearrowbatches.GetArrowBatches(rows.(SnowflakeRows))instead. - Migrated functions:
sf.WithArrowBatchesTimestampOption->arrowbatches.WithTimstampOptionsf.WithArrowBatchesUtf8Validation->arrowbatches.WithUtf8Validationsf.ArrowSnowflakeTimestampToTime->arrowbatches.ArrowSnowflakeTimestampToTime
- Logging changes (snowflakedb#1710):
- Removed Logrus logger and migrated to slog.
- Simplified
SFLoggerinterface. - Added
SFSlogLoggerinterface for setting custom slog handler.
Bug fixes:
- The query
context.Contextis now propagated to cloud storage operations for PUT and GET queries, allowing for better cancellation handling (snowflakedb#1690).
New features:
- Added support for Go 1.26, dropped support for Go 1.23 (snowflakedb#1707).
- Added support for FIPS-only mode (snowflakedb#1496).
Bug fixes:
- Added panic recovery block for stage file uploads and downloads operation (snowflakedb#1687).
- Fixed WIF metadata request from Azure container, manifested with HTTP 400 error (snowflakedb#1701).
- Fixed SAML authentication port validation bypass in
isPrefixEqualwhere the second URL's port was never checked (snowflakedb#1712). - Fixed a race condition in OCSP cache clearer (snowflakedb#1704).
- The query
context.Contextis now propagated to cloud storage operations for PUT and GET queries, allowing for better cancellation handling (snowflakedb#1690). - Fixed
tokenFilePathDSN parameter triggering false validation error claiming bothtokenandtokenFilePathwere specified when onlytokenFilePathwas provided in the DSN string (snowflakedb#1715). - Fixed minicore crash (SIGFPE) on fully statically linked Linux binaries by detecting static linking via ELF PT_INTERP inspection and skipping
dlopengracefully (snowflakedb#1721).
Internal changes:
- Moved configuration to a dedicated internal package (snowflakedb#1720).
New features:
- Added ability to disable minicore loading at compile time (snowflakedb#1679).
- Exposed
tokenFilePathinConfig(snowflakedb#1666). tokenFilePathis now read for every new connection (snowflakedb#1666).- Added support for identity impersonation when using workload identity federation (snowflakedb#1652, snowflakedb#1660).
Bug fixes:
- Fixed getting file from an unencrypted stage (snowflakedb#1672).
- Fixed minicore file name gathering in client environment (snowflakedb#1661).
- Fixed file descriptor leaks in cloud storage calls (snowflakedb#1682)
- Fixed path escaping for GCS urls (snowflakedb#1678).
Internal changes:
- Improved Linux telemetry gathering (snowflakedb#1677).
- Improved some logs returned from cloud storage clients (snowflakedb#1665).
Bug fixes:
- Handle HTTP307 & 308 in drivers to achieve better resiliency to backend errors (snowflakedb#1616).
- Create temp directory only if needed during file transfer (snowflakedb#1647)
- Fix unnecessary user expansion for file paths (snowflakedb#1646).
Internal changes:
- Remove spammy "telemetry disabled" log messages (snowflakedb#1638).
- Introduced shared library (source code) for extended telemetry to identify and prepare testing platform for native rust extensions (snowflakedb#1629)
New features:
- Added validation of CRL
NextUpdatefor freshly downloaded CRLs (snowflakedb#1617) - Exposed function to send arbitrary telemetry data (snowflakedb#1627)
- Added logging of query text and parameters (snowflakedb#1625)
Bug fixes:
- Fixed a data race error in tests caused by platform_detection init() function (snowflakedb#1618)
- Make secrets detector initialization thread safe and more maintainable (snowflakedb#1621)
Internal changes:
- Added ISA to login request telemetry (snowflakedb#1620)
- Fix unsafe reflection of nil pointer on DECFLOAT func in bind uploader (snowflakedb#1604).
- Added temporary download files cleanup (snowflakedb#1577)
- Marked fields as deprecated (snowflakedb#1556)
- Exposed
QueryStatusfromSnowflakeResultandSnowflakeRowsinGetStatus()function (snowflakedb#1556) - Split timeout settings into separate groups based on target service types (snowflakedb#1531)
- Added small clarification in oauth.go example on token escaping (snowflakedb#1574)
- Ensured proper permissions for CRL cache directory (snowflakedb#1588)
- Added
CrlDownloadMaxSizeto limit the size of CRL downloads (snowflakedb#1588) - Added platform telemetry to login requests. Can be disabled with
SNOWFLAKE_DISABLE_PLATFORM_DETECTIONenvironment variable (snowflakedb#1601) - Bypassed proxy settings for WIF metadata requests (snowflakedb#1593)
- Fixed a bug where GCP PUT/GET operations would fail when the connection context was cancelled (snowflakedb#1584)
- Fixed nil pointer dereference while calling long-running queries (snowflakedb#1592) (snowflakedb#1596)
- Moved keyring-based secure storage manager into separate file to avoid the need to initialize keyring on Linux. (snowflakedb#1595)
- Enabling official support for RHEL9 by testing and enabling CI/CD checks for Rocky Linux in CICD, (snowflakedb#1597)
- Improve logging (snowflakedb#1570)
- Added ability to configure OCSP per connection (snowflakedb#1528)
- Added
DECFLOATsupport, see details indoc.go(snowflakedb#1504, snowflakedb#1506) - Added support for Go 1.25, dropped support for Go 1.22 (snowflakedb#1544)
- Added proxy options to connection parameters (snowflakedb#1511)
- Added
client_session_keep_alive_heartbeat_frequencyconnection param (snowflakedb#1576) - Added support for multi-part downloads for S3, Azure and GCP (snowflakedb#1549)
- Added
singleAuthenticationPromptto control whether only one authentication should be performed at the same time for authentications that need human interactions (like MFA or OAuth authorization code). Default is true. (snowflakedb#1561) - Fixed missing
DisableTelemetryoption in connection parameters (snowflakedb#1520) - Fixed multistatements in large result sets (snowflakedb#1539, snowflakedb#1543, snowflakedb#1547)
- Fixed unnecessary retries when context is cancelled (snowflakedb#1540)
- Fixed regression in TOML connection file (snowflakedb#1530)
Release notes available at https://docs.snowflake.com/en/release-notes/clients-drivers/golang