You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Copy file name to clipboardExpand all lines: UPGRADE_V8_TO_V9.md
+15-1Lines changed: 15 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,8 @@ gospice v9 is a new major version. Unlike v8 (which was backward compatible with
9
9
3.**Minimum Go version is now 1.25** (was 1.24).
10
10
4.**Apache Arrow upgraded to v18.6.0** and **ADBC to v1.11.0**, matching the Spice.ai runtime's DataFusion 54.
11
11
12
+
None of the other v9 additions below require code changes to adopt — they are new, opt-in APIs.
13
+
12
14
## 1. Update the import path
13
15
14
16
```bash
@@ -105,11 +107,23 @@ gospice v9 upgrades its Apache Arrow dependencies to match the Spice.ai runtime
105
107
106
108
Running `go mod tidy` after updating the import path will pull these in automatically.
107
109
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
+
108
122
## Unchanged APIs
109
123
110
124
Everything else is source-compatible with v8, including:
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.
4
4
5
5
## 🎯 Major Features
6
6
@@ -36,6 +36,29 @@ gospice v9 upgrades to the Apache Arrow releases that match the Spice.ai runtime
36
36
-**Apache Arrow Go**`v18.4.1` → `v18.6.0`
37
37
-**ADBC Go driver**`v1.9.0` → `v1.11.0`
38
38
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
+
39
62
## 📦 What's Changed
40
63
41
64
### Breaking Changes
@@ -47,6 +70,15 @@ gospice v9 upgrades to the Apache Arrow releases that match the Spice.ai runtime
47
70
48
71
-`AsyncQuery` handle type with `ID`, `Status`, `Wait`, `Results`, and `Cancel`.
49
72
-`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.
50
82
51
83
### Changed
52
84
@@ -56,7 +88,7 @@ gospice v9 upgrades to the Apache Arrow releases that match the Spice.ai runtime
56
88
57
89
### Unchanged
58
90
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.
0 commit comments