Skip to content

v0.7.0

Choose a tag to compare

@apstndb apstndb released this 09 Jun 10:41
39b88c4

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.mod now 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.0 each declare go 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 FormatConfig quote settings or golden tests that assert NaN/±Inf CAST strings.

gcvctor STRUCT field helpers (#186, #193, #197)

FormatConfig.WithComplexPlugin (#189, #193)

  • WithComplexPlugin returns a clone with a prepended complex plugin (runs before existing plugins), matching protofmt-style ordering.

Experimental dbsqlrows (#190, #193)

  • New dbsqlrows package: database/sql row export via WriteRows / RunRows with metadata hooks and writer integration.
  • Optional nested module dbsqlrows/gospanner for cloud.google.com/go/spanner Query helpers (requires Go 1.25). APIs may change before a stable dbsqlrows release.

Documentation (#187)

CI (#191, #199)

  • Run govulncheck on Go 1.25 with @latest scanner on main push / 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

Full changelog

v0.6.0...v0.7.0