发布日期: 2026-06-25
版本号: v1.31.2

本次更新主要修复了包括内存泄漏、潜在恐慌错误在内的多项问题,优化了性能并改进了代码质量。具体包括:修复因恐慌可能导致的行泄漏、将格式化操作替换为更高效的数值转换、补充时区行为文档、纠正列修改中的拼写错误、解决批量创建时使用返回子句引发的恐慌、为迁移工具添加空值防护以避免恐慌、更新测试与CI配置、修复在默认值相同时错误清除列修改的问题、添加包注释以解决警告、改进泛型错误填充、恢复工具函数中的调用深度、跳过特定数据库版本上的定制化外键测试、修正错误信息中的拼写、添加验证链式查询方法是否修改语句的单元测试、防止因连接失败导致的协程泄漏、修复泛型模型自动应用功能、通过读写锁提升缓存并发性能、修复序列化器处理空值字段时的空指针恐慌、支持括号内命名SQL参数的数组或切片扩展,以及进行静态检查和代码规范相关的改进。

更新内容 (中文)

变更

  • 通过延迟执行 rows.Close() 修复恐慌时可能的行泄漏问题 @omer-cengel (#7798)
  • 性能优化:在 ExplainSQL 数字格式化中用 strconv 替代 fmt.Sprintf @alpardfm (#7796)
  • 添加 NowFunc 时区行为文档 @morning-verlu (#7799)
  • 修正拼写错误并将 AlterColumn 中的 fileType 重命名为 fieldType @cragone (#7748)
  • 修复:在 CreateInBatches 中使用 clause.Returning 时导致恐慌的问题 @Truongquangkhang (#7768)
  • 修复(migrator):为 ColumnType 方法添加空值防护以防止恐慌 @lihan3238 (#7767)
  • CI:将测试 Go 矩阵切换为 stable/oldstable 并更新 setup-go @smf-h (#7726)
  • 杂项(ci):将 actions/stale 升级至 v9 版本 @Olexandr88 (#7696)
  • 修复(migrator):当默认值匹配时不清空 alterColumn @qqxhb (#7728)
  • 添加包注释以修复 ST1000 警告 @twocs (#7708)
  • 泛型:填充 WithResult 错误 @qqxhb (#7723)
  • 修复(utils):恢复 FileWithLineNum 调用深度并添加回归测试 @smf-h (#7717)
  • 测试:在 MySQL 8.4+ 上跳过自定义外键的多对多关系测试 @smf-h (#7727)
  • 修复错误消息中的微小拼写错误 @snelg (#7738)
  • 添加单元测试验证链式查询方法会修改语句 @miladev95 (#7684)
  • 修复:ping 失败后关闭连接以防止 goroutine 泄漏 @liang09255 (#7689)
  • 修复:Row() 和 Rows() 函数应自动将泛型类型应用为模型 @hakanakyurek (#7664)
  • internal/lru:通过 RWMutex 提升并发性能 @miladev95 (#7668)
  • 修复序列化器中 nil any 类型字段导致的空指针恐慌 @doraemonkeys (#7634)
  • staticcheck QF1001 问题修复 @miladev95 (#7648)
  • 支持括号内命名 SQL 参数的数组/切片扩展 @bafflingbug (#7614)

更新内容 (原始)

Changes

  • Fix potential rows leak on panic by deferring rows.Close() @omer-cengel (#7798)
  • perf: replace fmt.Sprintf with strconv in ExplainSQL numeric formatting @alpardfm (#7796)
  • Document NowFunc timezone behavior @morning-verlu (#7799)
  • correct typo and rename fileType to fieldType in AlterColumn @cragone (#7748)
  • fix: panic when using clause.Returning with CreateInBatches @Truongquangkhang (#7768)
  • fix(migrator): add nil guards to ColumnType methods to prevent panic @lihan3238 (#7767)
  • ci: switch tests Go matrix to stable/oldstable and update setup-go @smf-h (#7726)
  • chore(ci): bump actions/stale to v9 @Olexandr88 (#7696)
  • fix(migrator): don’t clear alterColumn when defaults match @qqxhb (#7728)
  • Add package comments to fix ST1000 warnings @twocs (#7708)
  • generics: populate WithResult error @qqxhb (#7723)
  • fix(utils): restore FileWithLineNum caller depth and add regression test @smf-h (#7717)
  • tests: skip customized foreign key many2many on MySQL 8.4+ @smf-h (#7727)
  • fix tiny typo in error message @snelg (#7738)
  • Add unit test verifying chainable query methods mutate statement @miladev95 (#7684)
  • fix: Close connection after ping failure to prevent goroutine leak @liang09255 (#7689)
  • fix: Row() and Rows() functions should automaticaly apply the generic type as model @hakanakyurek (#7664)
  • internal/lru: improve concurrency with RWMutex @miladev95 (#7668)
  • Fix nil pointer panic in serializer for nil any-type fields @doraemonkeys (#7634)
  • staticcheck QF1001 @miladev95 (#7648)
  • Support array/slice expansion for named SQL parameters in parentheses @bafflingbug (#7614)

下载链接