Spice v1.8.3 (Oct 27, 2025)
Announcing the release of Spice v1.8.3! โก
Spice v1.8.3 is a patch release focused on performance, reliability, and observability. This release delivers optimizations for DuckDB acceleration, parameterized queries, and query plans. A new opt-in dedicated thread pool for queries is now in preview.
What's New in v1.8.3โ
DuckDB Data Accelerator Improvementsโ
- Connection Pool Sizing: The DuckDB accelerator now supports a configurable
connection_pool_sizeparameter, supporting fine-grained control over concurrent query execution. This enables tuning for high-concurrency workloads and improved resource utilization.
Example Spicepod.yaml snippet:
datasets:
- from: postgres:my_table
name: my_table
acceleration:
enabled: true
engine: duckdb
params:
connection_pool_size: 10
- Automatic Statistics Recomputation: The new
on_refresh_recompute_statisticsparameter, on by default, triggers automaticANALYZEexecution after refreshes. This keeps DuckDB optimizer statistics up-to-date, ensuring efficient query plans and optimal performance.
Example Spicepod.yaml snippet:
datasets:
- from: postgres:my_table
name: my_table
acceleration:
enabled: true
engine: duckdb
params:
on_refresh_recompute_statistics: disabled # default enabled
Task History SQL Query Plan Capture & Configurationโ
Spice now supports automated SQL query plan capture and store (via EXPLAIN or EXPLAIN ANALYZE) in the task history, enabling deeper analysis and debugging of query execution. This feature is configurable, supporting control of which queries are included based on duration thresholds and plan type.
- New Configuration Options:
task_history.captured_plan: Controls which plan is captured (none,explain, orexplain analyze). Defaultnone.task_history.min_sql_duration: Minimum query duration before a plan is captured.task_history.min_plan_duration: Minimum plan execution duration before a plan is captured.
Example spicepod.yaml snippet:
runtime:
task_history:
captured_plan: explain analyze
min_sql_duration: 5s
min_plan_duration: 10s
Query plans are captured asynchronously to avoid blocking query execution. The result of the plan is stored in the standard sql_query output in the task history.
Learn more in the Task History Documentation.
Query Performance Optimizationsโ
-
Optimized Prepared Statements (Parameterized Queries): Prepared statement caching for parameterized SQL queries has been improved, reducing planning overhead for repeated queries with different parameters. This results in faster execution and lower latency for workloads that reuse query structures.
-
Limit Pushdown via BytesProcessedExec: Introduces the
BytesProcessedExecphysical operator, enabling limit pushdown for large datasets. This optimization reduces the amount of data processed and improves top-k query performance.
Dedicated Query Thread Pool (Opt-In)โ
Spice now supports running query execution and accelerated refreshes on a dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health and readiness checks fast. Opt-In for v1.8.3: This feature is opt-in for this release and will become enabled by default (opt-out) in v1.9.
Example Spicepod.yaml snippet:
runtime:
params:
dedicated_thread_pool: sql_engine # Default: disabled
Validation & Reliability Improvementsโ
-
Selective Evaluation Scorer Loading: Evaluation scorers are now loaded only when evaluation is explicitly defined, reducing unnecessary initialization and improving startup performance.
-
Improved Error Reporting: Enhanced error messages for misconfigured full-text search (FTS) on datasets and views, providing actionable feedback for configuration issues.
REPL & Usabilityโ
- Execution Time Display: The Spice REPL now displays query execution time even when queries return no results, improving user feedback and diagnostics.
Contributorsโ
Breaking Changesโ
No breaking changes.
Cookbook Updatesโ
No major cookbook updates.
The Spice Cookbook includes 81 recipes to help you get started with Spice quickly and easily.
Upgradingโ
To upgrade to v1.8.3, use one of the following methods:
CLI:
spice upgrade
Homebrew:
brew upgrade spiceai/spiceai/spice
Docker:
Pull the spiceai/spiceai:1.8.3 image:
docker pull spiceai/spiceai:1.8.3
For available tags, see DockerHub.
Helm:
helm repo update
helm upgrade spiceai spiceai/spiceai
AWS Marketplace:
๐ Spice is now available in the AWS Marketplace!
What's Changedโ
Changelogโ
- Fix generate spicepod schema by @phillipleblanc in #7464
- Only load eval scorers when eval defined by @Jeadie in #7549
- BytesProcessedExec to allow optimizer to do limit pushdown by @mach-kernel in #7539
- Enhancement: Add
spill_compressionto runtime config by @krinart in #7505 - Task History
min_sql_durationfilter support by @lukekim in #7698 - Show error if FTS is misconfigured for datasets/views by @krinart in #7458
- project_schema when using EmptyExec by @kczimm in #7543
- Fix score order for one test case by @Jeadie in #7595
- Fix license issue in table-providers by @phillipleblanc in #7620
- Split integration tests into 3 partitions by @phillipleblanc in #7635
- Fix OSS docker release trigger when release marked as latest by @phillipleblanc in #7668
- Properly set auth headers in github_release.py by @krinart in #7560
- Run Datafusion queries on a separate Tokio runtime by @phillipleblanc in #7586
- Update BytesProcessedExec snapshots by @mach-kernel in #7637
- Display execution time in Spice REPL for no results by @sgrebnov in #7713
- Add support for DuckDB
connection_pool_sizeparam by @sgrebnov in #7716 - Task History capture and store SQL query plans by @lukekim in #7701

