v0.7.0
Stable release since v0.6.0. One breaking literal-formatting change, additive gcvctor / FormatConfig APIs, adoption docs, an experimental dbsqlrows package, pre-stable API naming cleanup (#192), and Go 1.24+ as the minimum toolchain (#199). Preset constructors and typical Simple / Spanner CLI export paths are unchanged unless noted below.
Highlights
Minimum Go 1.24 (#199)
go.modnow requires Go 1.24 or later (see README).- The floor is required by security-bumped indirect dependencies reachable via
cloud.google.com/go/spanner(github.com/go-jose/go-jose/v4@v4.1.4,go.opentelemetry.io/otel/sdk@v1.40.0,golang.org/x/sys@v0.40.0each declarego 1.24.0). CVE fixes cannot land while staying on Go 1.23. - Aligns with Go’s three-minor support window (1.24+ with Go 1.26 current).
Literal NaN/±Inf CAST quoting (#188)
- Non-finite float CAST payloads in the Literal preset now follow the same delimiter policy as STRING/BYTES literals (
QuoteLegacy/quoteForPayload), instead of a fixed quoting style. - Breaking runtime output for hand-tuned
FormatConfigquote settings or golden tests that assert NaN/±Inf CAST strings.
gcvctor STRUCT field helpers (#186, #193, #197)
StructFieldKVpairs a field name with a GCV; constructorStructFieldKVOf.StructValueOfFieldsandMustStructValueOfFieldstake...StructFieldKV.- Keyed composite literals
StructFieldKV{Name: name, Value: value}are valid; godoc recommendsStructFieldKVOfat call sites. StructFieldErroris unchanged (stable since v0.6.0).
FormatConfig.WithComplexPlugin (#189, #193)
WithComplexPluginreturns a clone with a prepended complex plugin (runs before existing plugins), matching protofmt-style ordering.
Experimental dbsqlrows (#190, #193)
- New
dbsqlrowspackage:database/sqlrow export viaWriteRows/RunRowswith metadata hooks and writer integration. - Optional nested module
dbsqlrows/gospannerforcloud.google.com/go/spannerQueryhelpers (requires Go 1.25). APIs may change before a stabledbsqlrowsrelease.
Documentation (#187)
- Adoption guides for
FormatConfig.Validate, ARRAY literals, and duplicate column aliases.
CI (#191, #199)
- Run
govulncheckon Go 1.25 with@latestscanner onmainpush / weekly schedule; reachable CVE findings addressed in #199.
Upgrading to v0.7.0
From v0.6.0
Minimum Go: 1.24 required (was 1.23). Required by patched transitive dependencies via the Spanner client; Go 1.23 is outside the current security support window.
Compile-time / API additions: WithComplexPlugin, gcvctor STRUCT pair helpers (StructFieldKV, StructFieldKVOf, StructValueOfFields, MustStructValueOfFields), dbsqlrows (+ optional gospanner).
Runtime behavior changes (review if you use these patterns):
| Area | v0.6.0 | v0.7.0 |
|---|---|---|
Literal NaN/±Inf CAST(...) quoting |
Fixed style independent of QuoteLegacy |
Follows QuoteLegacy / payload delimiter policy (#188) |
WithComplexPlugin order |
append | prepend (most recent call runs first) (#193) |
Preset-backed Simple and Spanner CLI export paths are unaffected by #188. Re-golden Literal or custom-quote tests that assert non-finite float CAST strings.
From v0.7.0-alpha.1 / alpha.2
| Area | alpha | v0.7.0 stable |
|---|---|---|
| STRUCT field pair type | StructFieldValue (alpha.1) → StructField (alpha.2) |
StructFieldKV |
| STRUCT field constructor | StructField() (alpha.1) |
StructFieldKVOf |
dbsqlrows entrypoints |
ExportRows, ExportResult (alpha.1) |
WriteRows, SQLRowsResult (alpha.2+) |
| Minimum Go | 1.23 (alpha.1–2) | 1.24 |
dbsqlrows
import "github.com/apstndb/spanvalue/dbsqlrows"
err := dbsqlrows.RunRows(ctx, rows, w, dbsqlrows.WithMetadata(md))Treat as experimental until a stable dbsqlrows release.
Security advisories closed (govulncheck reachable)
| Advisory | Module / area | Fix in v0.7.0 |
|---|---|---|
| GO-2026-4945 | github.com/go-jose/go-jose/v4 |
v4.1.4 (indirect) |
| GO-2026-4394 | go.opentelemetry.io/otel/sdk |
v1.40.0 (indirect) |
| GO-2026-5037, GO-2026-5039 | Go stdlib (scanner toolchain) | govulncheck on patched Go 1.25.x |