Spice v1.11.0-rc.2 (Jan 22, 2026)
Announcing the release of Spice v1.11.0-rc.2! ⭐
v1.11.0-rc.2 is the second release candidate for advanced test of v1.11. It brings Spice Cayenne to Beta status with acceleration snapshots support, a new ScyllaDB Data Connector, upgrades to DataFusion v51, Arrow 57.2, and iceberg-rust v0.8.0. It includes significant improvements to distributed query, caching, and observability.
What's New in v1.11.0-rc.2
Spice Cayenne Accelerator Reaches Beta
Spice Cayenne has been promoted to Beta status with acceleration snapshots support and numerous stability improvements.
Improved Reliability:
- Fixed timezone database issues in Docker images that caused acceleration panics
- Resolved
FuturesUnorderedreentrant drop crashes - Fixed memory growth issues related to Vortex metrics allocation
- Metadata catalog now properly respects
cayenne_file_pathlocation - Added warnings for unparseable configuration values
Example configuration with snapshots:
datasets:
- from: s3://my-bucket/data.parquet
name: my_dataset
acceleration:
enabled: true
engine: cayenne
mode: file
DataFusion v51 Upgrade
Apache DataFusion has been upgraded to v51, bringing significant performance improvements, new SQL features, and enhanced observability.

Performance Improvements:
- Faster
CASEExpression Evaluation: Expressions now short-circuit earlier, reuse partial results, and avoid unnecessary scattering, speeding up common ETL patterns - Better Defaults for Remote Parquet Reads: DataFusion now fetches the last 512KB of Parquet files by default, typically avoiding 2 I/O requests per file
- Faster Parquet Metadata Parsing: Leverages Arrow 57's new thrift metadata parser for up to 4x faster metadata parsing
New SQL Features:
- SQL Pipe Operators: Support for
|>syntax for inline transforms DESCRIBE <query>: Returns the schema of any query without executing it- Named Arguments in SQL Functions: PostgreSQL-style
param => valuesyntax for scalar, aggregate, and window functions - Decimal32/Decimal64 Support: New Arrow types supported including aggregations like
SUM,AVG, andMIN/MAX
Example pipe operator:
SELECT * FROM t
|> WHERE a > 10
|> ORDER BY b
|> LIMIT 5;
Improved Observability:
- Improved
EXPLAIN ANALYZEMetrics: New metrics includingoutput_bytes,selectivityfor filters,reduction_factorfor aggregates, and detailed timing breakdowns
Arrow 57.2 Upgrade
Spice has been upgraded to Apache Arrow Rust 57.2.0, bringing major performance improvements and new capabilities.

Key Features:
- 4x Faster Parquet Metadata Parsing: A rewritten thrift metadata parser delivers up to 4x faster metadata parsing, especially beneficial for low-latency use cases and files with large amounts of metadata
- Parquet Variant Support: Experimental support for reading and writing the new Parquet Variant type for semi-structured data, including shredded variant values
- Parquet Geometry Support: Read and write support for Parquet Geometry types (
GEOMETRYandGEOGRAPHY) withGeospatialStatistics - New
arrow-avroCrate: Efficient conversion between Apache Avro and ArrowRecordBatcheswith projection pushdown and vectorized execution support
iceberg-rust v0.8.0 Upgrade
Spice has been upgraded to iceberg-rust v0.8.0, bringing improved Iceberg table support.
Key Features:
- V3 Metadata Support: Full support for Iceberg V3 table metadata format
INSERT INTOPartitioned Tables: DataFusion integration now supports inserting data into partitioned Iceberg tables- Improved Delete File Handling: Better support for position and equality delete files, including shared delete file loading and caching
- SQL Catalog Updates: Implement
update_tableandregister_tablefor SQL catalog - S3 Tables Catalog: Implement
update_tablefor S3 Tables catalog - Enhanced Arrow Integration: Convert Arrow schema to Iceberg schema with auto-assigned field IDs,
_filecolumn support, andDate32type support
Acceleration Snapshots
Acceleration snapshots enable point-in-time recovery and data versioning for accelerated datasets. Snapshots capture the state of accelerated data at specific points, allowing for fast bootstrap recovery and rollback capabilities.
Key Feature Improvements in v1.11:
- Flexible Triggers: Configure when snapshots are created based on time intervals or stream batch counts
- Automatic Compaction: Reduce storage overhead by compacting older snapshots (DuckDB only)
- Bootstrap Integration: Snapshots can reset cache expiry on load for seamless recovery (DuckDB with Caching refresh mode)
- Smart Creation Policies: Only create snapshots when data has actually changed
Example configuration:
datasets:
- from: s3://my-bucket/data.parquet
name: my_dataset
acceleration:
enabled: true
engine: cayenne
mode: file
snapshots: enabled
snapshots_trigger: time_interval
snapshots_trigger_threshold: 1h
snapshots_creation_policy: on_changed
Snapshots API and CLI: New API endpoints and CLI commands for managing snapshots programmatically. List, create, and restore snapshots directly from the command line or via HTTP.
For more details, refer to the Acceleration Snapshots Documentation.
ScyllaDB Data Connector
A new data connector for ScyllaDB, the high-performance NoSQL database compatible with Apache Cassandra. Query ScyllaDB tables directly or accelerate them for faster analytics.
Example configuration:
datasets:
- from: scylladb:my_keyspace.my_table
name: scylla_data
acceleration:
enabled: true
engine: duckdb
For more details, refer to the ScyllaDB Data Connector Documentation.
Distributed Query Improvements
mTLS Verification: Cluster communication between scheduler and executors now supports mutual TLS verification for enhanced security.
Credential Propagation: Azure and GCS credentials are now automatically propagated to executors in cluster mode, enabling access to cloud storage across the distributed query cluster.
Improved Resilience:
- Exponential backoff for scheduler disconnection recovery
- Increased gRPC message size limit from 16MB to 100MB for large query plans
- HTTP health endpoint for cluster executors
- Automatic executor role inference when
--scheduler-addressis provided
For more details, refer to the Distributed Query Documentation.
Caching Acceleration Mode Improvements
The Caching Acceleration Mode introduced in v1.10.0 has received significant performance optimizations and reliability fixes in this release.
Performance Optimizations:
- Non-blocking Cache Writes: Cache misses no longer block query responses. Data is written to the cache asynchronously after the query returns, reducing query latency for cache miss scenarios.
- Batch Cache Writes: Multiple cache entries are now written in batches rather than individually, significantly improving write throughput for high-volume cache operations.
Reliability Fixes:
- Correct SWR Refresh Behavior: The stale-while-revalidate (SWR) pattern now correctly refreshes only the specific entries that were accessed instead of refreshing all stale rows in the dataset. This prevents unnecessary source queries and reduces load on upstream data sources.
- Deduplicated Refresh Requests: Fixed an issue where JSON array responses could trigger multiple redundant refresh operations. Refresh requests are now properly deduplicated.
- Fixed Cache Hit Detection: Resolved an issue where queries that didn't include
fetched_atin their projection would always result in cache misses, even when cached data was available. - Unfiltered Query Optimization:
SELECT *queries without filters now return cached data directly without unnecessary filtering overhead.
For more details, refer to the Caching Acceleration Mode Documentation.
DynamoDB Connector Enhancements
- Added JSON nesting for DynamoDB Streams
- Proper batch deletion handling
URL Tables
Query data sources directly via URL in SQL without prior dataset registration. Supports S3, Azure Blob Storage, and HTTP/HTTPS URLs with automatic format detection and partition inference.
Supported Patterns:
- Single files:
SELECT * FROM 's3://bucket/data.parquet' - Directories/prefixes:
SELECT * FROM 's3://bucket/data/' - Glob patterns:
SELECT * FROM 's3://bucket/year=*/month=*/data.parquet'
Key Features:
- Automatic file format detection (Parquet, CSV, JSON, etc.)
- Hive-style partition inference with filter pushdown
- Schema inference from files
- Works with both SQL and DataFrame APIs
Example with hive partitioning:
-- Partitions are automatically inferred from paths
SELECT * FROM 's3://bucket/data/' WHERE year = '2024' AND month = '01'
Enable via spicepod.yml:
runtime:
params:
url_tables: enabled
Cluster Mode Async Query APIs (experimental)
New asynchronous query APIs for long-running queries in cluster mode:
/v1/queriesendpoint: Submit queries and retrieve results asynchronously- Arrow Flight async support: Non-blocking query execution via Arrow Flight protocol
Observability Improvements
Enhanced Dashboards: Updated Grafana and Datadog example dashboards with:
- Snapshot monitoring widgets
- Improved accelerated datasets section
- Renamed ingestion lag charts for clarity
Additional Histogram Buckets: Added more buckets to histogram metrics for better latency distribution visibility.
For more details, refer to the Monitoring Documentation.
Additional Improvements
- Model Listing: New functionality to list available models across multiple AI providers
- DuckDB Partitioned Tables: Primary key constraints now supported in partitioned DuckDB table mode
- Post-refresh Sorting: New
on_refresh_sort_columnsparameter for DuckDB enables data ordering after writes - Improved Install Scripts: Removed jq dependency and improved cross-platform compatibility
- Better Error Messages: Improved error messaging for bucket UDF arguments and deprecated OpenAI parameters
Contributors
Breaking Changes
No breaking changes.
Cookbook Updates
New ScyllaDB Data Connector Recipe: New recipe demonstrating how to use ScyllaDB Data Connector. See ScyllaDB Data Connector Recipe for details.
New SMB Data Connector Recipe: New recipe demonstrating how to use ScyllaDB Data Connector. See SMB Data Connector Recipe for details.
The Spice Cookbook includes 86 recipes to help you get started with Spice quickly and easily.
Upgrading
To upgrade to v1.11.0-rc.2, use one of the following methods:
CLI:
spice upgrade
Homebrew:
brew upgrade spiceai/spiceai/spice
Docker:
Pull the spiceai/spiceai:v1.11.0-rc.2 image:
docker pull spiceai/spiceai:v1.11.0-rc.2
For available tags, see DockerHub.
Helm:
helm repo update
helm upgrade spiceai spiceai/spiceai
AWS Marketplace:
Spice is available in the AWS Marketplace.
Dependencies
- DataFusion: Upgraded to v51 (release notes)
- Arrow: Upgraded to v57 (release notes)
- iceberg-rust: Upgraded to v0.8.0 (release notes)
Changelog
- Add timezone database to Docker image to fix Cayenne acceleration panic by @sgrebnov in #8799
- Upgrade dependencies by @phillipleblanc in #8801
- Fix
table_allowlistfor table sampling and NSQL by @Jeadie in #8789 - Cayenne primary key on-conflict handling by @lukekim in #8788
- fix: Update benchmark snapshots by @app/github-actions in #8773
- fix: correctly identify deprecated openai_* parameters by @phillipleblanc in #8809
- fix: Update benchmark snapshots by @app/github-actions in #8812
- Use workspace version for cayenne crate by @phillipleblanc in #8811
- Don't CAST strings which breaks push down optimizer by @lukekim in #8810
- fix: Update benchmark snapshots by @app/github-actions in #8815
- Update async-openai to latest revision 4dcd633aad6f - brings fix for openai compatible model providers by @ewgenius in #8816
- Add
auth/iam_role_sourceto DynamoDB connector by @krinart in #8808 - DynamoDB fixes: JSON nesting for Streams, proper batch deletions by @krinart in #8821
- Rough roadmap for 2026-2027 by @lukekim in #8805
- Release notes for v1.11.0-rc1 by @ewgenius in #8786
- Make S3V integration tests prepare_for_aws_tests more robust by @sgrebnov in #8820
- Bump rsa from 0.9.9 to 0.9.10 in the cargo group across 1 directory by @app/dependabot in #8819
- Add timezone database to Release and CUDA Docker images to fix Cayene panic by @sgrebnov in #8832
- fix:
UnionProjectionPushdownOptimizer- Schema change duringtransform_downbreaks parent nodes by @phillipleblanc in #8831 - Update grafana/datadog example dashboards by @krinart in #8833
- Add Dev bird bench as text-to-sql queryset in CI. by @Jeadie in #8753
- Update testoperator scheduler to use
release/1.11branch by @ewgenius in #8829 - Spice Cayenne fixes and test spicepods for Beta & RC by @lukekim in #8787
- testoperator dispatch all bird-bench database variants by @Jeadie in #8835
- feat: Improve column statistics handling with safe access and defaults by @phillipleblanc in #8836
- cluster: mTLS verification by @phillipleblanc in #8837
- fix: 8770: Unsupported ScalarFunctionExpr in ORDER BY by @lukekim in #8838
- Workflow tweaks by @lukekim in #8845
- Cayenne: metadata catalog should respect cayenne_file_path location by @sgrebnov in #8844
- Expand Cayenne feature coverage by @lukekim in #8848
- docs: HA distributed query decisions by @phillipleblanc in #8817
- fix(optimizer): Fix correctness issues in UnionProjectionPushdownOptimizer by @phillipleblanc in #8851
- Pin reqwest to 0.12.24 to fix HuggingFace embedding model download by @ewgenius in #8853
- Fix builds and pin to Ubuntu 22.04 by @lukekim in #8856
- Revert "Fix builds and pin to Ubuntu 22.04" by @lukekim in #8861
- Ensure setup Rust is run by @lukekim in #8862
- fix: Ubuntu 24.04+ renamed libaio1 to libaio1t64 by @lukekim in #8865
- Upgrade to Pulls with Spice v2 by @lukekim in #8866
- Add limit and configuration name to 'testoperator run text-to-sql' by @Jeadie in #8839
- PR check and test optimization by @lukekim in #8868
- Upgrade S3 Vectors SDK and improve test robustness by @lukekim in #8867
- [Testoperator] Query level and improved aggregate level for NSQL by @Jeadie in #8840
- Add docker build for private branches for ghcr.io/spiceai/spiceai-dev by @phillipleblanc in #8873
- Expand the data acceleration round-trip test coverage by @lukekim in #8855
- fix: Provide a better error for improper bucket UDF arguments by @peasee in #8849
- ScyllaDB Data Connector by @lukekim in #8827
- Use tokio-rusqlite for Spice Cayenne SQLite by @lukekim in #8857
- Cayenne: fix FuturesUnordered reentrant drop crash by @sgrebnov in #8863
- Bump github/codeql-action from 4.31.9 to 4.31.10 by @app/dependabot in #8884
- Bump golang.org/x/sys from 0.39.0 to 0.40.0 by @app/dependabot in #8881
- Bump github.com/spiceai/gospice/v8 from 8.0.0 to 8.0.1 by @app/dependabot in #8883
- Bump roaring from 0.11.2 to 0.11.3 by @app/dependabot in #8885
- Bump golang.org/x/mod from 0.31.0 to 0.32.0 by @app/dependabot in #8882
- Bump aws-sdk-s3 from 1.115.0 to 1.119.0 by @app/dependabot in #8887
- Bump libc from 0.2.177 to 0.2.180 by @app/dependabot in #8886
- Bump tokio-util from 0.7.17 to 0.7.18 by @app/dependabot in #8889
- Bump governor from 0.10.2 to 0.10.4 by @app/dependabot in #8888
- fix: flaky test test_concurrent_partition_creation by @phillipleblanc in #8898
- Update Cayenne snapshots for TPC-DS by @lukekim in #8890
- Add more buckets to histogram metrics by @krinart in #8850
- feat: Add HTTP health endpoint for cluster executors by @phillipleblanc in #8899
- feat: Implement model listing functionality for multiple providers by @lukekim in #8901
- feat: Initial HA schedulers distributed query implementation by @phillipleblanc in #8852
- fix: infer executor role from --scheduler-address when --role is omitted by @phillipleblanc in #8903
- Improve install scripts and remove jq dependency by @lukekim in #8847
- Benchmarks: sort PartitionedUnionExec children for deterministic snapshot comparison by @sgrebnov in #8877
- Cayenne: share VortexFileCache across partitions via CayenneContext by @sgrebnov in #8880
- Update ballista to add exponential backoff for scheduler disconnection by @phillipleblanc in #8905
- Configurably add BirdBench evidence to testoperator text-to-SQL. by @Jeadie in #8904
- Helm: Allow command override via values.yaml by @sgrebnov in #8906
- Fix distributed query gRPC message size limit (16MB -> 100MB) by @phillipleblanc in #8900
- OS specific setup actions by @lukekim in #8909
- Cayenne should warn if unable to parse configuration value by @sgrebnov in #8907
- Add snapshots widgets to example dashboard by @krinart in #8910
- Add quality criteria for the features by @krinart in #8897
- Improve Accelerated Datasets section for Grafana/Datadog dashboards by @krinart in #8915
- Use HTTP traceparent in NSQL to support concurrency in 'testoperator run text-to-SQL' by @Jeadie in #8912
- Remove setup for cc from integration_models.yml by @Jeadie in #8917
- Propagate Azure and GCS credentials to executors in cluster mode by @phillipleblanc in #8918
- Cayenne: fix memory growth due to vortex metrics allocation by @sgrebnov in #8908
- fix(caching): Deduplicate refresh requests for JSON array responses by @sgrebnov in #8921
- fix(caching): Return cached data directly for unfiltered queries (SELECT *) by @sgrebnov in #8919
- Correct MinIO path syntax for spiced download by @Jeadie in #8916
- Acceleration snapshots compaction + Improved Snapshots UX by @krinart in #8858
- Change base image from bookworm-slim to trixie-slim by @Jeadie in #8923
- Add
testoperator run text-to-sqlmetrics from LogicalPlan by @Jeadie in #8895 - Fix spicepod dependencies in testoperator by @Jeadie in #8875
- Update copilot instructions for data correctness by @lukekim in #8922
- Add
BootstrapStatus+ Snapshot bootstrapping parallelization by @krinart in #8926 - fix: add missing feature-gate for AWS Secrets Manager error variant by @phillipleblanc in #8928
- refactor: make ConnectorParams fields public for external connectors by @phillipleblanc in #8929
- fix(caching): SWR refreshes only accessed entry instead of all stale rows by @sgrebnov in #8931
- Cayenne: include
cayenne_metadata_dirto known params by @sgrebnov in #8933 - Rename Ingestion Lag chart in example dashboards by @krinart in #8932
- fix(caching): Fix HTTP caching always MISS when projection excludes fetched_at by @sgrebnov in #8930
- Reset expiry after snapshot bootstraping for Caching by @krinart in #8925
- Set use_ssl=false for sccache by @lukekim in #8945
- Hash indexing for Arrow Acceleration by @lukekim in #8924
- [Cayenne] Acceleration snapshots support by @lukekim in #7973
- perf(caching): Non-blocking cache writes on cache miss by @sgrebnov in #8948
- Update NSQL models by @lukekim in #8951
- Hash Index Key verification by @lukekim in #8949
- Add
snapshots_creation_policyparam by @krinart in #8954 - Remove candle & cudarc from non-models build by @lukekim in #8955
- Acceleration Snapshots API and CLI by @lukekim in #8934
- Ignore test for
data_components arrow::indexed::test_primary_key_value_matches_batchby @Jeadie in #8962 - fix: Update benchmark snapshots by @app/github-actions in #8965
- Hash Index secondary index support by @lukekim in #8958
- fix: Support primary key constraints in partitioned DuckDB tables mode by @sgrebnov in #8966
- perf(caching): Batch cache writes by @sgrebnov in #8959
- CI perf optimizations by @lukekim in #8968
- Fix Makefile linting by @Jeadie in #8970
- Fixes in
testoperator run text-to-sql. by @Jeadie in #8927 - implement
Chat::as_sqlfor xAI anthropic by @Jeadie in #8957 - Fix
duckdb_file_pathin search integration test by @Jeadie in #8972 - fix: Update benchmark snapshots by @app/github-actions in #8971
- Maintenance updates to Anthropic API by @Jeadie in #8956
- Add CacheBackend Trait, implement pingora-lru, and add throughput tests by @lukekim in #8080
- fix: Update benchmark snapshots by @app/github-actions in #8974
- fix: Update benchmark snapshots by @app/github-actions in #8975
- Make accelerator shutdown more robust by @lukekim in #8969
- feat(duckdb): Add
on_refresh_sort_columnsfor post-write data ordering (initial version) by @sgrebnov in #8964 - Proper handling for initial snapshot by @krinart in #8911
- fix: Remove --no-default-features from cargo-hack command in features workflow by @phillipleblanc in #8977
- build(deps): bump actions/cache from 5.0.1 to 5.0.2 by @app/dependabot in #8983
- build(deps): bump actions/checkout from 4 to 6 by @app/dependabot in #8982
- build(deps): bump actions/setup-go from 6.1.0 to 6.2.0 by @app/dependabot in #8984
- build(deps): bump github.com/olekukonko/tablewriter from 1.1.2 to 1.1.3 by @app/dependabot in #8979
- build(deps): bump github.com/klauspost/compress from 1.18.2 to 1.18.3 by @app/dependabot in #8980
- Add /v1/queries and Arrow Flight async APIs by @lukekim in #8946
- build(deps): bump Vampire/setup-wsl from 5 to 6 by @app/dependabot in #8981
- fix: Update Search integration test snapshots by @app/github-actions in #8973
- build(deps): bump insta from 1.46.0 to 1.46.1 by @app/dependabot in #8988
- build(deps): bump schemars from 1.1.0 to 1.2.0 by @app/dependabot in #8985
- fix: Update benchmark snapshots by @app/github-actions in #8978
- fix: Data correctness edge cases by @lukekim in #8953
- Correct MinIO path syntax for spiced download (Part 2) by @Jeadie in #8995
- Make
.spice/datain search integration tests by @Jeadie in #8992 - fix: Hash index composite keys null values by @lukekim in #9001
- Update Cayenne status to Beta by @lukekim in #9002
- fix: Disable TPC-DS result validation (not yet supported) by @sgrebnov in #9004
- feat: Upgrade to DataFusion v51 and dependencies by @lukekim in #8864
- Improvements for
snapshots_creation_policyby @krinart in #9003 - fix(ci): restore cached spicepod-validator binary instead of lookup-only by @phillipleblanc in #9007
- Update version by @krinart in #9010

