Skip to content

Commit 8dbef34

Browse files
committed
docs: reconcile v9 release notes and upgrade guide with shipped features
release_notes/v9.0.0.md and UPGRADE_V8_TO_V9.md only covered the initial async-queries PR; add the mTLS, Search, RuntimeStatus, ListActiveQueries/CancelActiveQuery, and Nsql additions and the ADBC re-auth fix that landed on trunk since, and fix the changelog compare link to the correct v8.0.1 predecessor tag.
1 parent 614eb4a commit 8dbef34

2 files changed

Lines changed: 50 additions & 4 deletions

File tree

UPGRADE_V8_TO_V9.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ gospice v9 is a new major version. Unlike v8 (which was backward compatible with
99
3. **Minimum Go version is now 1.25** (was 1.24).
1010
4. **Apache Arrow upgraded to v18.6.0** and **ADBC to v1.11.0**, matching the Spice.ai runtime's DataFusion 54.
1111

12+
None of the other v9 additions below require code changes to adopt — they are new, opt-in APIs.
13+
1214
## 1. Update the import path
1315

1416
```bash
@@ -105,11 +107,23 @@ gospice v9 upgrades its Apache Arrow dependencies to match the Spice.ai runtime
105107

106108
Running `go mod tidy` after updating the import path will pull these in automatically.
107109

110+
## 5. New in v9 (no migration required)
111+
112+
These are new, additive APIs — nothing to change if you don't use them:
113+
114+
- **Mutual TLS.** `WithTLSClientCertificate(certFile, keyFile)` and `WithTLSRootCertificate(caFile)` client options for presenting a client certificate and/or verifying the server against a custom CA.
115+
- **`Search`** against the runtime's `/v1/search` endpoint for embedding-based document search.
116+
- **`RuntimeStatus`** for per-component (`http`, `flight`, `metrics`, `opentelemetry`) status, complementing the existing `IsSpiceReady`.
117+
- **`ListActiveQueries` / `CancelActiveQuery`** for inspecting and cancelling synchronous queries running on the runtime. See the README for the scope and runtime-version caveats.
118+
- **`Nsql` / `NsqlGenerateSQL`** for natural-language querying against the runtime's `/v1/nsql` endpoint.
119+
120+
Also, ADBC connections (`SqlWithParams`) now automatically re-authenticate and retry once when the server invalidates the session, instead of failing permanently — no code changes needed to benefit from this.
121+
108122
## Unchanged APIs
109123

110124
Everything else is source-compatible with v8, including:
111125

112126
- `Sql()` and `SqlWithParams()`
113127
- `IsSpiceHealthy()` and `IsSpiceReady()`
114-
- Client initialization (`NewSpiceClient`, `Init`, `WithApiKey`, `WithSpiceCloudAddress`, `WithFlightAddress`, `WithHttpAddress`, mTLS options)
128+
- Client initialization (`NewSpiceClient`, `Init`, `WithApiKey`, `WithSpiceCloudAddress`, `WithFlightAddress`, `WithHttpAddress`)
115129
- `RefreshDataset()` and the typed parameter constructors

docs/release_notes/v9.0.0.md

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Announcing gospice v9.0.0 - Async Queries & DataFusion 54 🚀
22

3-
gospice v9.0.0 introduces **asynchronous queries** and upgrades the Apache Arrow stack to match the Spice.ai runtime built on DataFusion 54. This is a major release with breaking changes.
3+
gospice v9.0.0 introduces **asynchronous queries** and upgrades the Apache Arrow stack to match the Spice.ai runtime built on DataFusion 54. It also adds mutual TLS, semantic search, per-component runtime status, active-query management, and natural-language querying. This is a major release with breaking changes.
44

55
## 🎯 Major Features
66

@@ -36,6 +36,29 @@ gospice v9 upgrades to the Apache Arrow releases that match the Spice.ai runtime
3636
- **Apache Arrow Go** `v18.4.1``v18.6.0`
3737
- **ADBC Go driver** `v1.9.0``v1.11.0`
3838

39+
### Mutual TLS (mTLS)
40+
41+
`Init` accepts two new options for securing the connection to the runtime:
42+
43+
- `WithTLSClientCertificate(certFile, keyFile)` presents a PEM-encoded client certificate during the TLS handshake for mTLS authentication.
44+
- `WithTLSRootCertificate(caFile)` verifies the server against a custom CA certificate instead of (or in addition to) the system certificate store.
45+
46+
### Search
47+
48+
`Search` finds documents similar to a piece of text via the runtime's `/v1/search` endpoint, against datasets with an embedding column and a loaded embedding model. It supports restricting to specific datasets, a SQL `Where` filter, additional returned columns, and a hybrid lexical+vector ranking via `Keywords`.
49+
50+
### Runtime Status
51+
52+
`RuntimeStatus` reports per-component status (`http`, `flight`, `metrics`, `opentelemetry`) via `/v1/status`, distinguishing a runtime that is still initializing from one whose Flight endpoint is failing — unlike `IsSpiceReady`, which reports a single boolean for the whole runtime.
53+
54+
### Listing and Cancelling Running Queries
55+
56+
`ListActiveQueries` reports the synchronous queries running in the caller's scope (from `Sql`, `SqlWithParams`, FlightSQL, NSQL, and `Search`), and `CancelActiveQuery` stops one by ID — the runtime never hands a query's ID back to the client that submitted it, so these are meant to be used together. See the README for the scope and runtime-version caveats that apply.
57+
58+
### Text-to-SQL (NSQL)
59+
60+
`Nsql` answers a natural-language question by having the runtime's configured LLM generate SQL and run it, returning both the rows and the generated query. `NsqlGenerateSQL` generates the SQL without running it, so it can be inspected, edited, or run through `Query`/`Sql` for Arrow-typed results. Both call the runtime's `/v1/nsql` endpoint and require an LLM model configured in the Spicepod.
61+
3962
## 📦 What's Changed
4063

4164
### Breaking Changes
@@ -47,6 +70,15 @@ gospice v9 upgrades to the Apache Arrow releases that match the Spice.ai runtime
4770

4871
- `AsyncQuery` handle type with `ID`, `Status`, `Wait`, `Results`, and `Cancel`.
4972
- `QueryStatus` type and constants.
73+
- `WithTLSClientCertificate` and `WithTLSRootCertificate` client options for mTLS.
74+
- `Search` and `SearchRequest`/`SearchResponse`/`SearchMatch`.
75+
- `RuntimeStatus` and `ConnectionDetails`/`ComponentStatus`.
76+
- `ListActiveQueries` and `CancelActiveQuery`, and the `ActiveQuery` type.
77+
- `Nsql` and `NsqlGenerateSQL`, and the `NsqlRequest`/`NsqlResponse`/`NsqlSchema`/`NsqlField` types.
78+
79+
### Fixed
80+
81+
- **ADBC connections re-authenticate instead of failing permanently.** `SqlWithParams` previously treated an `Unauthenticated`/`Unauthorized` error from an expired server-side session as permanent, leaving the connection unusable until the process restarted. It now re-opens the ADBC connection and retries the query once.
5082

5183
### Changed
5284

@@ -56,7 +88,7 @@ gospice v9 upgrades to the Apache Arrow releases that match the Spice.ai runtime
5688

5789
### Unchanged
5890

59-
- `Sql()` / `SqlWithParams()`, `IsSpiceHealthy()` / `IsSpiceReady()`, client initialization, mTLS support, `RefreshDataset()`, and the typed parameter constructors are all source-compatible with v8.
91+
- `Sql()` / `SqlWithParams()`, `IsSpiceHealthy()` / `IsSpiceReady()`, client initialization, `RefreshDataset()`, and the typed parameter constructors are all source-compatible with v8.
6092

6193
## 🔧 Migration Guide
6294

@@ -81,4 +113,4 @@ import "github.com/spiceai/gospice/v9"
81113
- 🐛 Issues: [github.com/spiceai/gospice/issues](https://github.com/spiceai/gospice/issues)
82114
- 💬 Discord: [spice.ai/discord](https://spice.ai/discord)
83115

84-
**Full Changelog**: <https://github.com/spiceai/gospice/compare/v8.0.0...v9.0.0>
116+
**Full Changelog**: <https://github.com/spiceai/gospice/compare/v8.0.1...v9.0.0>

0 commit comments

Comments
 (0)