Skip to content

SNOW-1881542 Upcoming Gosnowflake v2 changes #1586

@sfc-gh-pfus

Description

@sfc-gh-pfus

We are planning a v2 release of the Go Snowflake Driver. The final scope is not fully decided, but the list of potential changes includes:

  • Reduce module binary size, by making Arrow batches mode optional (either via compilation tag or by moving it to a separate module), estimated drop is ~36MB to ~20MB!
  • Logger changes:
    • Drop Logrus dependency, make logger backend configurable (with default to slog)
    • Split logger to more configurable loggers (to set log levels more independently)
    • Make logger more configurable (i.e., configure time and line format)
  • Remove obsolete or deprecated config options:
    • RaisePutGetError from SnowflakeFileTransferOptions (behaviour aligned to setting it to true)
    • ClientIP from Config struct (not used internally)
    • InsecureMode - replaced with DisableOCSPChecks
    • TelemetryDisabled - replaced with CLIENT_TELEMETRY_ENABLED session parameter
  • Remove deprecated functions:
    • WithOriginalTimestamp - replaced with WithArrowBatchesTimestampOption
  • Remove SnowflakeTransport/SnowflakeTransportTest - use Transporter field from Config or RegisterTLSConfig
  • Move some global variables to reduced scope:
    • MaxChunkDownloadWorkers - to be configured per query basis
    • OCSP timeout/retry config - to Config/DSN
    • S3LoggingMode - to Config/DSN
  • Fix typo in GOSNOWFLAKE_SKIP_REGISTERATION env variable
  • WithMultistatement will not return error anymore, only context.Context
  • Drop support for CustomJSONDecoderEnabled
  • Context keys will have type migrated from string to internal structs
  • Remove JSON stream downloader
  • Combine WithMapValuesNullable and WithArrayValuesNullable into one
  • Unify SNOWFLAKE_ and SF_ prefix of environment variables
  • Arrow batches - conversion improvements.
  • Array function may return error, not only the value.

We are targeting the release of V2 in spring 2026.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions