2026 年 Go Snowflake Driver 版本说明

本文包含 Go Snowflake Driver 的版本说明,包括以下内容(如果适用):

  • 行为变更

  • 新功能

  • 面向客户的错误修复

Snowflake 对 Go Snowflake Driver 更新使用语义版本控制。

有关文档,请参阅 Go Snowflake 驱动程序

版本 2.0.0(2026 年 3 月 3 日)

BCR (行为变更版本)变更

  • SnowflakeFileTransferOptions 中移除了 RaisePutGetError,以确保为 PUT/GET 操作引发错误。

  • SnowflakeFileTransferOptions 中移除了 GetFileToStream。使用 WithFileGetStream 为 GET 操作自动启用文件流。

  • 移除了 WithOriginalTimestamp。请改用 WithArrowBatchesTimestampOption(UseOriginalTimestamp)

  • Config 结构体中移除了 ClientIP 字段。此字段从未被使用,且任何功能都不需要它。

  • Config 结构体中移除了 InsecureMode 字段。请改用 DisableOCSPChecks

  • Config 结构体中移除了 DisableTelemetry 字段。请改用 CLIENT_TELEMETRY_ENABLED 会话参数。

  • 移除了流分块下载器。请改用默认下载器。

  • 移除了 SnowflakeTransport。使用 Config.Transporter,或者如果您只需要自定义根证书集,只需通过 RegisterTLSConfig 注册您自己的 TLS 配置即可。

  • 为了保持一致性,将 WithFileStream 重命名为 WithFilePutStream

  • Config 结构体中的 KeepSessionAlive 字段重命名为 ServerSessionKeepAlive,以与其他驱动程序保持一致。

  • Array 函数现在会针对不支持的类型返回错误。

  • WithMultiStatement 不再返回错误。

  • WithMapValuesNullableWithArrayValuesNullable 合并为单个 WithEmbeddedValuesNullable 选项。

  • 隐藏了流分块下载器。它将在未来的版本中被完全移除。

  • 现在使用 CLIENT_PREFETCH_THREADS 会话参数配置分块下载 Goroutine 的最大数量。

  • 修复了 GOSNOWFLAKE_SKIP_REGISTRATION 环境变量中的拼写错误。

  • 取消导出了 MfaTokenIdToken

  • Arrow 批次变更:

    • Arrow 批次已提取到单独的包中,这对于不需要 Arrow 批次的用户,将显著减小编译体积 (~34MB -> ~18MB)。

    • SnowflakeRowsSnowflakeResult 中移除了 GetArrowBatches。请改用 arrowbatches.GetArrowBatches(rows.(SnowflakeRows))

    • 迁移了以下函数:

      • sf.WithArrowBatchesTimestampOption 迁移至 arrowbatches.WithTimestampOption

      • sf.WithArrowBatchesUtf8Validation 迁移至 arrowbatches.WithUtf8Validation

      • sf.ArrowSnowflakeTimestampToTime 迁移至 arrowbatches.ArrowSnowflakeTimestampToTime

  • 日志记录变更:

    • 移除了 Logrus 日志记录器并迁移到 slog。

    • 简化了 SFLogger 接口。

    • 添加了用于设置自定义 slog 处理程序的 SFSlogLogger 接口。

新功能和更新

  • 添加了对 Go 1.26 的支持,并删除了对 Go 1.23 的支持。

  • 增加了对仅限 FIPS 模式的支持。

错误修复

  • 为暂存区文件上传和下载操作增加了紧急恢复块。

  • 修复了来自 Azure 容器的 WIF 元数据请求表现为 HTTP 400 错误的问题。

  • 修复了 isPrefixEqual 中 SAML 身份验证端口验证绕过的问题,其中第二个 URL 的端口从未被检查。

  • 修复了 OCSP 缓存清理器中的竞态条件。

  • context.Context 查询现在会传播到 PUT 和 GET 查询的云存储操作中,以便更好地处理取消操作。

  • 通过 ELF PT_INTERP 检查检测静态链接并顺利跳过 dlopen,修复了完全静态链接的 Linux 二进制文件上的微内核崩溃 (SIGFPE)。

版本 1.19.0(2026 年 2 月 3 日)

新功能和更新

  • 除现有的 DSN 选项外,在 Config 结构体中公开了 tokenFilePath

  • 现在,每次有新连接时都会读取 tokenFilePath,而不仅仅在驱动程序启动时读取一次。

  • 添加了在使用工作负载身份联合时对身份模拟的支持。

  • 添加了在编译时使用 -tags minicore_disabled 参数禁止加载 minicore 的功能。

错误修复

  • 修复了从未加密暂存区获取文件的问题。

  • 修复了客户端环境中的 minicore 文件名收集问题。

  • 修复了当文件或目录包含空格时来自 GCS 的 403 响应中 GCS URLs 的路径转义问题。

  • 修复了将文件上传到暂存区时(尤其是在 GCS 中)泄露的文件描述符。