v0.7.4
Patch release since v0.7.3. Additive writer APIs for rows that do not come from a *spanner.RowIterator, plus documentation. No compile-time API removals, signature changes, or runtime behavior changes to existing APIs. Minimum Go remains 1.24.
Highlights
writer: RunRowSeq / WriteRowSeq for rows without a RowIterator (#238)
RunRowSeqandWriteRowSeqdriveRowIteratorHooks/RowIteratorWritersinks from client-side (virtual) result sets: explicit*sppb.ResultSetMetadataplus a fallible row sequence (iter.Seq2[*spanner.Row, error]).- The hook contract is identical to
RunRowIteratorby construction (shared internal loop):PrepareMetadataruns once before the first data row including for an empty sequence (header-only delimited output), a yielded error aborts withoutFinish,RowsReadcounts successful writes,Statsstays zero. RowSeqadapts pre-built rows to the sequence shape. NewErrNilRowSeq; a(nil, nil)pair yielded by a sequence is rejected at the boundary withErrNilRow.- Pairs with lazy per-row encoders that can fail — designed against spanenc
RowEncoder.Rows(apstndb/spanenc#2), surveyed from spanner-mycli SHOW/HELP virtual result sets (apstndb/spanner-mycli#657).
Documentation
ExampleWriteRowSeq(runnable, pkg.go.dev), writer godoc# RowIteratorsection, andwriter/README.mdgoal-table row for in-memory / virtual rows.
Upgrading to v0.7.4
From v0.7.3
Compile-time: additive APIs only (RunRowSeq, WriteRowSeq, RowSeq, ErrNilRowSeq).
Runtime: no behavior changes to existing APIs.