{
    "version": "https://jsonfeed.org/version/1",
    "title": "Spice.ai OSS Blog",
    "home_page_url": "https://spiceai.org/releases",
    "description": "Keep up to date with Spice.ai OSS releases by following our feed!",
    "items": [
        {
            "id": "https://spiceai.org/releases/v2.0-rc.2",
            "content_html": "<p>Announcing the release of Spice v2.0-rc.2! 🔥</p>\n<p>v2.0.0-rc.2 is the second release candidate for advanced testing of v2.0, building on <a href=\"https://github.com/spiceai/spiceai/releases/tag/v2.0.0-rc.1\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">v2.0.0-rc.1</a>.</p>\n<p>Highlights in this release candidate include:</p>\n<ul>\n<li class=\"\"><strong>Distributed Spice Cayenne Query and Write Improvements</strong> with data-local query routing and partition-aware write-through</li>\n<li class=\"\"><strong>DataFusion v52.4.0 Upgrade</strong> with aligned <code>arrow-rs</code>, <code>datafusion-federation</code>, and <code>datafusion-table-providers</code></li>\n<li class=\"\"><strong>MERGE INTO for Spice Cayenne</strong> catalog tables with distributed support across executors</li>\n<li class=\"\"><strong><code>PARTITION BY</code> Support for Cayenne</strong> enabling SQL-defined partitioning in <code>CREATE TABLE</code> statements</li>\n<li class=\"\"><strong>ADBC Data Connector &amp; Catalog</strong> with full query federation, BigQuery support, and schema/table discovery</li>\n<li class=\"\"><strong>Databricks Lakehouse Federation Improvements</strong> with improved reliability, resilience, DESCRIBE TABLE fallback, and source-native type parsing</li>\n<li class=\"\"><strong>Delta Lake Column Mapping</strong> supporting Name and Id mapping modes</li>\n<li class=\"\"><strong>HTTP Pagination</strong> support for paginated API endpoints in the HTTP data connector</li>\n<li class=\"\"><strong>New Catalog Connectors</strong> for PostgreSQL, MySQL, MSSQL, and Snowflake</li>\n<li class=\"\"><strong>JSON Ingestion Improvements</strong> with single-object support, <code>soda</code> (Socrata Open Data) format support, <code>json_pointer</code> extraction, and auto-detection</li>\n<li class=\"\"><strong>Per-Model Rate-Limited AI UDF Execution</strong> for controlling concurrent AI function invocations</li>\n<li class=\"\">Dependency upgrades including <strong>Turso v0.5.3</strong>, <strong>iceberg-rust v0.9</strong>, and <strong>Vortex</strong> improvements</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v200-rc2\">What's New in v2.0.0-rc.2<a href=\"https://spiceai.org/releases/v2.0-rc.2#whats-new-in-v200-rc2\" class=\"hash-link\" aria-label=\"Direct link to What's New in v2.0.0-rc.2\" title=\"Direct link to What's New in v2.0.0-rc.2\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distributed-cayenne-query-and-write-improvements\">Distributed Cayenne Query and Write Improvements<a href=\"https://spiceai.org/releases/v2.0-rc.2#distributed-cayenne-query-and-write-improvements\" class=\"hash-link\" aria-label=\"Direct link to Distributed Cayenne Query and Write Improvements\" title=\"Direct link to Distributed Cayenne Query and Write Improvements\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed query</a> for <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne</a>-backed tables now has better partition awareness for both reads and writes.</p>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>Data-Local Query Routing</strong>: Cayenne catalog queries can now be routed to executors that hold the relevant partitions, improving distributed query efficiency.</li>\n<li class=\"\"><strong>Partition-Aware Write Through</strong>: Scheduler-side Flight <code>DoPut</code> ingestion now splits partitioned Cayenne writes and forwards them to the responsible executors instead of routing through a single raw-forward path.</li>\n<li class=\"\"><strong>Dynamic Partition Assignment</strong>: Newly observed partitions can be added and assigned atomically as data arrives, with persisted partition metadata for future routing.</li>\n<li class=\"\"><strong>Better Cluster Coordination</strong>: Partition management is now separated for accelerated and federated tables, improving routing behavior for distributed Cayenne catalog workloads.</li>\n<li class=\"\"><strong>Distributed UPDATE/DELETE DML</strong>: UPDATE and DELETE statements for Cayenne catalog tables are now forwarded to all executors in distributed mode, with all executors required to succeed.</li>\n<li class=\"\"><strong>Distributed <code>runtime.task_history</code></strong>: Task history is now replicated across the distributed cluster for observability.</li>\n<li class=\"\"><strong>RefreshDataset Control Stream</strong>: Dataset refresh operations are now distributed via the control stream to executors.</li>\n<li class=\"\"><strong>Executor DDL Sync</strong>: When an executor connects, it receives DDL for all existing tables, ensuring late-joining executors have full table state.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"merge-into-for-spice-cayenne\">MERGE INTO for Spice Cayenne<a href=\"https://spiceai.org/releases/v2.0-rc.2#merge-into-for-spice-cayenne\" class=\"hash-link\" aria-label=\"Direct link to MERGE INTO for Spice Cayenne\" title=\"Direct link to MERGE INTO for Spice Cayenne\" translate=\"no\">​</a></h3>\n<p>Spice now supports <code>MERGE INTO</code> statements for <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne</a> catalog tables, enabling upsert-style data operations with full distributed support.</p>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>MERGE INTO Support</strong>: Execute <code>MERGE INTO</code> statements against Cayenne catalog tables for combined insert/update/delete operations.</li>\n<li class=\"\"><strong>Distributed MERGE</strong>: MERGE operations are automatically distributed across executors in cluster mode.</li>\n<li class=\"\"><strong>Data Safety</strong>: Duplicate source keys are detected and prevented to avoid data loss during MERGE operations.</li>\n<li class=\"\"><strong>Chunked Delete Filters</strong>: Large MERGE delete filter lists are chunked to prevent stack overflow with Vortex IN-list expressions.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"partition-by-support-for-cayenne\"><code>PARTITION BY</code> Support for Cayenne<a href=\"https://spiceai.org/releases/v2.0-rc.2#partition-by-support-for-cayenne\" class=\"hash-link\" aria-label=\"Direct link to partition-by-support-for-cayenne\" title=\"Direct link to partition-by-support-for-cayenne\" translate=\"no\">​</a></h3>\n<p><strong>SQL Partition Management</strong>: Spice now supports <code>PARTITION BY</code> for <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne</a>-backed <code>CREATE TABLE</code> statements, enabling partition definitions to be expressed directly in SQL and persisted in the Cayenne catalog.</p>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQL Partition Definition</strong>: Define Cayenne table partitioning directly in SQL using <code>CREATE TABLE ... PARTITION BY (...)</code>.</li>\n<li class=\"\"><strong>Partition Validation</strong>: Partition expressions are parsed and validated during DDL analysis before table creation.</li>\n<li class=\"\"><strong>Persisted Partition Metadata</strong>: Partition metadata is stored in the Cayenne catalog and can be reloaded by the runtime after restart.</li>\n<li class=\"\"><strong>Distributed DDL Support</strong>: Partition metadata is forwarded when <code>CREATE TABLE</code> is distributed to executors in cluster mode.</li>\n<li class=\"\"><strong>Improved Type Support</strong>: Partition utilities now support newer string scalar variants such as <code>Utf8View</code>.</li>\n</ul>\n<p>Example:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">CREATE</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">TABLE</span><span class=\"token plain\"> events </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">id </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">INT</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> region </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">TEXT</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> ts </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">TIMESTAMP</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">PARTITION</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">BY</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">region</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"catalog-connector-enhancements\">Catalog Connector Enhancements<a href=\"https://spiceai.org/releases/v2.0-rc.2#catalog-connector-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Catalog Connector Enhancements\" title=\"Direct link to Catalog Connector Enhancements\" translate=\"no\">​</a></h3>\n<p>Spice now includes additional catalog connectors for major database systems, improving schema discovery and federation workflows across external data systems.</p>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>New Catalog Connectors</strong>: Added catalog connectors for <a href=\"https://spiceai.org/docs/next/components/catalogs/postgres\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">PostgreSQL</a>, <a href=\"https://spiceai.org/docs/next/components/catalogs/mysql\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MySQL</a>, <a href=\"https://spiceai.org/docs/next/components/catalogs/mssql\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MSSQL</a>, and <a href=\"https://spiceai.org/docs/next/components/catalogs/snowflake\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Snowflake</a>.</li>\n<li class=\"\"><strong>Schema and Table Discovery</strong>: Connectors use native metadata catalogs such as <code>information_schema</code> / <code>INFORMATION_SCHEMA</code> to discover schemas and tables.</li>\n<li class=\"\"><strong>Improved Federation Workflows</strong>: These connectors make it easier to expose external database metadata through Spice for cross-system <a href=\"https://spiceai.org/docs/features/query-federation\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">federation</a> scenarios.</li>\n<li class=\"\"><strong>PostgreSQL Partitioned Tables</strong>: Fixed schema discovery for PostgreSQL partitioned tables.</li>\n</ul>\n<p>Example PostgreSQL catalog configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">catalogs</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> pg</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> pg</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">include</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'public.*'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">pg_host</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> localhost</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">pg_port</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">5432</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">pg_user</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> postgres</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">pg_pass</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">POSTGRES_PASSWORD</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">pg_db</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_database</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">pg_sslmode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> disable</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"json-ingestion-improvements\">JSON Ingestion Improvements<a href=\"https://spiceai.org/releases/v2.0-rc.2#json-ingestion-improvements\" class=\"hash-link\" aria-label=\"Direct link to JSON Ingestion Improvements\" title=\"Direct link to JSON Ingestion Improvements\" translate=\"no\">​</a></h3>\n<p>JSON ingestion is now more flexible and robust.</p>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>More JSON Formats</strong>: Added support for single-object JSON documents, auto-detected JSON formats, and Socrata SODA responses.</li>\n<li class=\"\"><strong><code>json_pointer</code> Extraction</strong>: Extract nested payloads before schema inference and reading using RFC 6901 JSON Pointer syntax.</li>\n<li class=\"\"><strong>Better Auto-Detection</strong>: JSON format detection now handles arrays, objects, JSONL, and BOM-prefixed input more reliably, including single multi-line objects.</li>\n<li class=\"\"><strong>SODA Support</strong>: Added schema extraction and data conversion for Socrata Open Data API responses.</li>\n<li class=\"\"><strong>Broader Compatibility</strong>: Improved handling for BOM-prefixed files, CRLF-delimited JSONL, nested payloads, mixed structures, and wrapped documents.</li>\n</ul>\n<p>Example using <code>json_pointer</code> to extract nested data from an API response:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.example.com/v1/data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> users</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">json_pointer</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> /data/users</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v5240-upgrade\">DataFusion v52.4.0 Upgrade<a href=\"https://spiceai.org/releases/v2.0-rc.2#datafusion-v5240-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v52.4.0 Upgrade\" title=\"Direct link to DataFusion v52.4.0 Upgrade\" translate=\"no\">​</a></h3>\n<p><a href=\"https://datafusion.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion</a> has been upgraded from v52.2.0 to v52.4.0, with aligned updates across <code>arrow-rs</code>, <code>datafusion-federation</code>, and <code>datafusion-table-providers</code>.</p>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>DataFusion v52.4.0</strong>: Brings the latest fixes and compatibility improvements across query planning and execution.</li>\n<li class=\"\"><strong>Strict Overflow Handling</strong>: <code>try_cast_to</code> now uses strict cast to return errors on overflow instead of silently producing NULL values.</li>\n<li class=\"\"><strong>Federation Fix</strong>: Fixed SQL unparsing for Inexact filter pushdown with aliases.</li>\n<li class=\"\"><strong>Partial Aggregation Optimization</strong>: Improved partial aggregation performance for <code>FlightSQLExec</code>.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dependency-upgrades\">Dependency Upgrades<a href=\"https://spiceai.org/releases/v2.0-rc.2#dependency-upgrades\" class=\"hash-link\" aria-label=\"Direct link to Dependency Upgrades\" title=\"Direct link to Dependency Upgrades\" translate=\"no\">​</a></h3>\n<table><thead><tr><th>Dependency</th><th>Version / Update</th></tr></thead><tbody><tr><td><strong>Turso (libsql)</strong></td><td>v0.5.3 (from v0.4.4)</td></tr><tr><td><strong>iceberg-rust</strong></td><td>v0.9</td></tr><tr><td><strong>Vortex</strong></td><td>Map type support, stack-safe IN-lists</td></tr><tr><td><strong>arrow-rs</strong></td><td>Arrow v57.2.0</td></tr><tr><td><strong>datafusion-federation</strong></td><td>Updated for DataFusion v52.4.0 alignment</td></tr><tr><td><strong>datafusion-table-providers</strong></td><td>Updated for DataFusion v52.4.0 alignment</td></tr><tr><td><strong>datafusion-ballista</strong></td><td>Bumped to fix BatchCoalescer schema mismatch panic</td></tr></tbody></table>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"other-improvements\">Other Improvements<a href=\"https://spiceai.org/releases/v2.0-rc.2#other-improvements\" class=\"hash-link\" aria-label=\"Direct link to Other Improvements\" title=\"Direct link to Other Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">\n<p><strong>Cayenne released as RC</strong>: <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne</a> data accelerator is now promoted to release candidate status.</p>\n</li>\n<li class=\"\">\n<p><strong>File Update Acceleration Mode</strong>: Added <code>mode: file_update</code> acceleration mode for file-based data refresh.</p>\n</li>\n<li class=\"\">\n<p><strong><code>spice completions</code> Command</strong>: New CLI command for generating shell completion scripts, with auto-detection of shell directory.</p>\n</li>\n<li class=\"\">\n<p><strong><code>--endpoint</code> Flag</strong>: Added <code>--endpoint</code> flag to <code>spice run</code> with scheme-based routing for custom endpoints.</p>\n</li>\n<li class=\"\">\n<p><strong>mTLS Client Auth</strong>: Added mTLS client authentication support to the <code>spice sql</code> REPL.</p>\n</li>\n<li class=\"\">\n<p><strong>DynamoDB DML</strong>: Implemented DML (INSERT, UPDATE, DELETE) support for the <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB</a> table provider.</p>\n</li>\n<li class=\"\">\n<p><strong>Caching Retention</strong>: Added retention policies for cached query results.</p>\n</li>\n<li class=\"\">\n<p><strong>GraphQL Custom Auth Headers</strong>: Added custom authorization header support for the <a href=\"https://spiceai.org/docs/components/data-connectors/graphql\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GraphQL</a> connector.</p>\n</li>\n<li class=\"\">\n<p><strong>ClickHouse Date32 Support</strong>: Added <code>Date32</code> type support for the <a href=\"https://spiceai.org/docs/components/data-connectors/clickhouse\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ClickHouse</a> connector.</p>\n</li>\n<li class=\"\">\n<p><strong>AWS IAM Role Source</strong>: Added <code>iam_role_source</code> parameter for fine-grained AWS credential configuration.</p>\n</li>\n<li class=\"\">\n<p><strong>S3 Metadata Columns</strong>: Metadata columns renamed to <code>_location</code>, <code>_last_modified</code>, <code>_size</code> for consistency, with more robust handling in projected queries.</p>\n</li>\n<li class=\"\">\n<p><strong>S3 URL Style</strong>: Added <code>s3_url_style</code> parameter for <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 connector</a> URL addressing (path-style vs virtual-hosted). Useful for S3-compatible stores like MinIO:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">s3_endpoint</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//minio.local</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">9000</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">s3_url_style</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> path</span><br></span></code></pre></div></div>\n</li>\n<li class=\"\">\n<p><strong>S3 Parquet Performance</strong>: Improved S3 parquet read performance.</p>\n</li>\n<li class=\"\">\n<p><strong>HTTP Caching</strong>: Transient <a href=\"https://spiceai.org/docs/components/data-connectors/http\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP</a> error responses such as <code>429</code> and <code>5xx</code> are no longer cached, preventing stale error payloads from being served from cache.</p>\n</li>\n<li class=\"\">\n<p><strong>HTTP Connector Metadata</strong>: Added <code>response_headers</code> as structured map data for <a href=\"https://spiceai.org/docs/components/data-connectors/http\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP</a> datasets.</p>\n</li>\n<li class=\"\">\n<p><strong>Views <code>on_zero_results</code></strong>: Accelerated views now support <code>on_zero_results: use_source</code> to fall back to the source when no results are found:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">views</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales_summary</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">|</span><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      SELECT region, SUM(amount) as total</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      FROM sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      GROUP BY region</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">on_zero_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> use_source</span><br></span></code></pre></div></div>\n</li>\n<li class=\"\">\n<p><strong>Flight <code>DoPut</code> Ingestion Metrics</strong>: Added <code>rows_written</code> and <code>bytes_written</code> metrics for <a href=\"https://spiceai.org/docs/features/flight-sql\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Flight <code>DoPut</code></a> / ADBC ETL ingestion.</p>\n</li>\n<li class=\"\">\n<p><strong>EXPLAIN ANALYZE Metrics</strong>: Added metrics for EXPLAIN ANALYZE in FlightSQLExec.</p>\n</li>\n<li class=\"\">\n<p><strong>Scheduler Executor Metrics</strong>: Added <code>scheduler_active_executors_count</code> metric for monitoring active executors.</p>\n</li>\n<li class=\"\">\n<p><strong>Query Memory Limit</strong>: Updated default query memory limit from 70% to 90%, with <code>GreedyMemoryPool</code> for improved memory management.</p>\n</li>\n<li class=\"\">\n<p><strong>MetastoreTransaction Support</strong>: Added transaction support to prevent concurrent metastore transaction conflicts.</p>\n</li>\n<li class=\"\">\n<p><strong>Iceberg REST Catalog</strong>: Coerce unsupported Arrow types to Iceberg v2 equivalents in the REST catalog API.</p>\n</li>\n<li class=\"\">\n<p><strong>CDC Cache Invalidation</strong>: Improved cache invalidation for CDC-backed datasets.</p>\n</li>\n<li class=\"\">\n<p><strong>Spice.ai Connector Alignment</strong>: Parameter names aligned across catalog and data connectors for Spice.ai Cloud.</p>\n</li>\n<li class=\"\">\n<p><strong>Cayenne File Size</strong>: Cayenne now correctly respects the configured target file size (defaults to 128MB).</p>\n</li>\n<li class=\"\">\n<p><strong>Cayenne Primary Keys</strong>: Properly set <code>primary_keys</code>/<code>on_conflict</code> for Cayenne tables.</p>\n</li>\n<li class=\"\">\n<p><strong>Turso Metastore Performance</strong>: Cached metastore connections and prepared statements for improved <a href=\"https://spiceai.org/docs/components/data-connectors/turso\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Turso</a> and <a href=\"https://spiceai.org/docs/components/data-accelerators/sqlite\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">SQLite</a> metastore performance.</p>\n</li>\n<li class=\"\">\n<p><strong>Turso SQL Robustness</strong>: More robust SQL unparsing and date comparison handling for Turso.</p>\n</li>\n<li class=\"\">\n<p><strong>Dictionary Type Normalization</strong>: Normalize Arrow Dictionary types for DuckDB and SQLite acceleration.</p>\n</li>\n<li class=\"\">\n<p><strong>GitHub Connector Resilience</strong>: Improved GraphQL client resilience, performance, and ref filter handling.</p>\n</li>\n<li class=\"\">\n<p><strong>ODBC Fix</strong>: Fixed ODBC queries silently returning 0 rows on query failure.</p>\n</li>\n<li class=\"\">\n<p><strong>Anthropic Fixes</strong>: Fixed compatibility issues with Anthropic model provider.</p>\n</li>\n<li class=\"\">\n<p><strong>v1/responses API Fix</strong>: The <code>/v1/responses</code> API now correctly preserves client instructions when <code>system_prompt</code> is set.</p>\n</li>\n<li class=\"\">\n<p><strong>Shared Acceleration Snapshots</strong>: Show an error when snapshots are enabled on a shared acceleration file.</p>\n</li>\n<li class=\"\">\n<p><strong>Distributed Mode Error Handling</strong>: Improved error handling for distributed mode and <code>state_location</code> configuration.</p>\n</li>\n<li class=\"\">\n<p><strong>Helm Chart</strong>: Added support for ServiceAccount annotations and AWS IRSA example.</p>\n</li>\n<li class=\"\">\n<p><strong>Perplexity Removed</strong>: Removed Perplexity model provider support.</p>\n</li>\n<li class=\"\">\n<p><strong>Rust v1.93.1</strong>: Upgraded Rust toolchain to v1.93.1.</p>\n</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v2.0-rc.2#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/cluster2600\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@cluster2600</a></li>\n<li class=\"\"><a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/penberg\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@penberg</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v2.0-rc.2#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>S3 metadata columns renamed</strong>: S3 metadata columns renamed from <code>location</code>, <code>last_modified</code>, <code>size</code> to <code>_location</code>, <code>_last_modified</code>, <code>_size</code>.</li>\n<li class=\"\"><strong><code>v1/evals</code> API removed</strong>: The <code>/v1/evals</code> endpoint has been removed.</li>\n<li class=\"\"><strong>Perplexity removed</strong>: Perplexity model provider support has been removed.</li>\n<li class=\"\"><strong>Default query memory limit changed</strong>: Default query memory limit increased from 70% to 90%.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v2.0-rc.2#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v2.0.0-rc.2, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade v2.0.0-rc.2</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:2.0.0-rc.2</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:2.0.0-rc.2</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.2</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v2.0-rc.2#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v2.0-rc.2#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">ci: fix E2E CLI upgrade test to use latest release for spiced download by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9613\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9613</a></li>\n<li class=\"\">fix(DF): Lazily initialize BatchCoalescer in RepartitionExec to avoid schema type mismatch by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9623\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9623</a></li>\n<li class=\"\">feat: Implement catalog connectors for various databases by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9509\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9509</a></li>\n<li class=\"\">Refactor and clean up code across multiple crates by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9620\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9620</a></li>\n<li class=\"\">fix: Improve error handling for distributed mode and state_location configuration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9611\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9611</a></li>\n<li class=\"\">Properly install postgres in <code>install-postgres</code> action by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9629\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9629</a></li>\n<li class=\"\">fix: Use Python venv for schema validation in CI by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9637\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9637</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9640\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9640</a></li>\n<li class=\"\">Update testoperator dispatch to use release/2.0 branch by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9641\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9641</a></li>\n<li class=\"\">fix: Align CUDA asset names in Dockerfile and install tests with build output by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9639\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9639</a></li>\n<li class=\"\">Fix expect test scripts in E2E Installation AI test by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9643\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9643</a></li>\n<li class=\"\">testoperator for partitioned arrow accelerator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9635\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9635</a></li>\n<li class=\"\">Remove default 1s refresh_check_interval from spidapter for hive datasets by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9645\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9645</a></li>\n<li class=\"\">Fix scheduler panic and cancel race condition by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9644\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9644</a></li>\n<li class=\"\">Align Spice.ai connector parameter names across catalog/data connectors by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9632\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9632</a></li>\n<li class=\"\">docs: update distribution details and add NAS support in release notes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9650\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9650</a></li>\n<li class=\"\">Enable <code>postgres-accel</code> in CI builds for benchmarks by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9649\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9649</a></li>\n<li class=\"\">perf: Cache Turso metastore connection across operations by <a href=\"https://github.com/penberg\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@penberg</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9646\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9646</a></li>\n<li class=\"\">Add 'scheduler_state_location' to spidapter by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9655\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9655</a></li>\n<li class=\"\">Implement Cayenne S3 Express multi-zone live test with data validation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9631\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9631</a></li>\n<li class=\"\">chore(spidapter): bump default memory limit from 8Gi to 32Gi by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9661\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9661</a></li>\n<li class=\"\">perf: Use prepare_cached() in Turso and SQLite metastore backends by <a href=\"https://github.com/penberg\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@penberg</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9662\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9662</a></li>\n<li class=\"\">Improve CDC cache invalidation by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9651\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9651</a></li>\n<li class=\"\">Refactor Cayenne IDs to use UUIDv7 strings by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9667\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9667</a></li>\n<li class=\"\">fix: add liveness check for dead executors in partition routing by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9657\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9657</a></li>\n<li class=\"\">fix(s3): Fix metadata column schema mismatches in projected queries by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9664\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9664</a></li>\n<li class=\"\">s3_metadata_columns tests: include test for location outside table prefix by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9676\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9676</a></li>\n<li class=\"\">docs: Update DuckDB, GCS, Git connector and Cayenne documentation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9671\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9671</a></li>\n<li class=\"\">Add s3_url_style support for S3 connector URL addressing by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9642\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9642</a></li>\n<li class=\"\">Consolidate E2E workflows and require WSL for Windows runtime by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9660\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9660</a></li>\n<li class=\"\">Upgrade to Rust v1.93.1 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9669\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9669</a></li>\n<li class=\"\">Security fixes and improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9666\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9666</a></li>\n<li class=\"\">feat(flight): add DoPut rows/bytes written metrics for DoPut ETL ingestion tracking by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9663\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9663</a></li>\n<li class=\"\">Skip caching http error response + add <code>response_headers</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9670\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9670</a></li>\n<li class=\"\">refactor: Remove <code>v1/evals</code> functionality by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9420\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9420</a></li>\n<li class=\"\">Make a test harness for Distributed Spice integration tests by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9615\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9615</a></li>\n<li class=\"\">Enable <code>on_zero_results: use_source</code> for views by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9699\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9699</a></li>\n<li class=\"\">fix(spidapter): Lower memory limit, passthrough AWS secrets, override flight URL by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9704\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9704</a></li>\n<li class=\"\">Show an error on a shared acceleration file with snapshots enabled by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9698\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9698</a></li>\n<li class=\"\">Fixes for anthropic by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9707\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9707</a></li>\n<li class=\"\">Use <code>max_partitions_per_executor</code> in <code>allocate_initial_partitions</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9659\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9659</a></li>\n<li class=\"\">[SpiceDQ] Accelerations must have partition key by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9711\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9711</a></li>\n<li class=\"\">Upgrade to Turso v0.5 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9628\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9628</a></li>\n<li class=\"\">feat: Rename metadata columns to _location, _last_modified, _size by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9712\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9712</a></li>\n<li class=\"\">fix: bump datafusion-ballista to fix BatchCoalescer schema mismatch panic by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9716\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9716</a></li>\n<li class=\"\">fix: Ensure Cayenne respects target file size by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9730\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9730</a></li>\n<li class=\"\">refactor: Make DDL preprocessing generic from Iceberg DDL processing by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9731\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9731</a></li>\n<li class=\"\">[SpiceDQ] Distribute query of Cayenne Catalog to executors with data by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9727\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9727</a></li>\n<li class=\"\">Properly set <code>primary_keys</code>/<code>on_conflict</code> for Cayenne tables by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9739\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9739</a></li>\n<li class=\"\">Add executor resource and replica support to cloud app config by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9734\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9734</a></li>\n<li class=\"\">feat: Support PARTITION BY in Cayenne Catalog table creation by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9741\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9741</a></li>\n<li class=\"\">Update datafusion and related packages to version 52.3.0 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9708\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9708</a></li>\n<li class=\"\">Route FlightSQL statement updates through QueryBuilder by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9754\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9754</a></li>\n<li class=\"\">JSON file format improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9743\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9743</a></li>\n<li class=\"\">[SpiceDQ] Partition Cayenne catalogs writes through to executors by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9737\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9737</a></li>\n<li class=\"\">Update to DF v52.3.0 versions of datafusion &amp; datafusion-tableproviders by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9756\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9756</a></li>\n<li class=\"\">Make S3 metadata column handling more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9762\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9762</a></li>\n<li class=\"\">Fetch API keys from dedicated endpoint instead of apps response by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9767\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9767</a></li>\n<li class=\"\">Update arrow-rs, datafusion-federation, and datafusion-table-providers dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9769\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9769</a></li>\n<li class=\"\">Chunk metastore batch inserts to respect SQLite parameter limits by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9770\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9770</a></li>\n<li class=\"\">Improve JSON SODA support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9795\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9795</a></li>\n<li class=\"\">Add ADBC Data Connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9723\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9723</a></li>\n<li class=\"\">docs: Release Cayenne as RC by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9766\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9766</a></li>\n<li class=\"\">cli[feat]: cloud mode to use region-specific endpoints by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9803\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9803</a></li>\n<li class=\"\">Include updated JSON formats in HTTPS connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9800\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9800</a></li>\n<li class=\"\">Flight DoPut: Partition-aware write-through forwarding by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9759\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9759</a></li>\n<li class=\"\">Pass through authentication to ADBC connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9801\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9801</a></li>\n<li class=\"\">Move scheduler_state_location from adapter metadata to env var by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9802\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9802</a></li>\n<li class=\"\">Fix Cayenne DoPut upsert returning stale data after 3+ writes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9806\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9806</a></li>\n<li class=\"\">Fix JSON column projection producing schema mismatch by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9811\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9811</a></li>\n<li class=\"\">Fix http connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9818\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9818</a></li>\n<li class=\"\">Fix ADBC Connector build and test by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9813\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9813</a></li>\n<li class=\"\">Support update &amp; delete DML for distributed cayenne catalog by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9805\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9805</a></li>\n<li class=\"\">Set allow_http param when S3 endpoint uses http scheme by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9834\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9834</a></li>\n<li class=\"\">fix: Cayenne Catalog DDL requires a connected executor in distributed mode by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9838\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9838</a></li>\n<li class=\"\">fix: Add conditional put support for file:// scheduler state location by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9842\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9842</a></li>\n<li class=\"\">fix: Require the DDL primary key contain the partition key by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9844\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9844</a></li>\n<li class=\"\">fix: Databricks SQL Warehouse schema retrieval with INLINE disposition and async retry by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9846\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9846</a></li>\n<li class=\"\">Filter pushdown improvements for SqlTable by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9852\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9852</a></li>\n<li class=\"\">feat: add iam_role_source parameter for AWS credential configuration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9854\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9854</a></li>\n<li class=\"\">Fix ODBC queries silently returning 0 rows on query failure by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9864\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9864</a></li>\n<li class=\"\">feat(adbc): Add ADBC catalog connector with schema/table discovery by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9865\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9865</a></li>\n<li class=\"\">Make Turso SQL unparsing more robust and fix date comparisons by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9871\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9871</a></li>\n<li class=\"\">Fix Flight/FlightSQL filter precedence and mutable query consistency by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9876\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9876</a></li>\n<li class=\"\">Partial Aggregation optimisation for <code>FlightSQLExec</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9882\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9882</a></li>\n<li class=\"\">fix: v1/responses API preserves client instructions when system_prompt is set by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9884\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9884</a></li>\n<li class=\"\">feat: emit <code>scheduler_active_executors_count</code> and use it in spidapter by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9885\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9885</a></li>\n<li class=\"\">feat: Add custom auth header support for GraphQL connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9899\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9899</a></li>\n<li class=\"\">Add --endpoint flag to spice run with scheme-based routing by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9903\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9903</a></li>\n<li class=\"\">When executor connects, send DDL for existing tables by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9904\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9904</a></li>\n<li class=\"\">fix: Improve ADBC driver shutdown handling and error classification by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9905\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9905</a></li>\n<li class=\"\">fix: require all executors to succeed for distributed DML (DELETE/UPDATE) forwarding by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9908\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9908</a></li>\n<li class=\"\">fix(cayenne catalog): fix catalog refresh race condition causing duplicate primary keys by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9909\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9909</a></li>\n<li class=\"\">Remove Perplexity support by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9910\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9910</a></li>\n<li class=\"\">Fix refresh_sql support for debezium constraints by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9912\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9912</a></li>\n<li class=\"\">Implement DML for DynamoDBTableProvider by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9915\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9915</a></li>\n<li class=\"\">chore: Update iceberg-rust fork to v0.9 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9917\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9917</a></li>\n<li class=\"\">Run physical optimizer on <code>FallbackOnZeroResultsScanExec</code> fallback plan by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9927</a></li>\n<li class=\"\">Improve Databricks error message when dataset has no columns by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9928\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9928</a></li>\n<li class=\"\">Delta Lake: fix data skipping for &gt;= timestamp predicates by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9932</a></li>\n<li class=\"\">fix: Ensure distributed Cayenne DML inserts are forwarded to executors by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9948\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9948</a></li>\n<li class=\"\">Add full query federation support for ADBC data connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9953\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9953</a></li>\n<li class=\"\">Make time_format deserialization case-insensitive by <a href=\"https://github.com/vyershov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@vyershov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9955\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9955</a></li>\n<li class=\"\">Hash ADBC join-pushdown context to prevent credential leaks in EXPLAIN plans by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9956\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9956</a></li>\n<li class=\"\">fix: Normalize Arrow Dictionary types for DuckDB and SQLite acceleration by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9959\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9959</a></li>\n<li class=\"\">ADBC BigQuery: Improve BigQuery dialect date/time and interval SQL generation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9967\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9967</a></li>\n<li class=\"\">Make <code>BigQueryDialect</code> more robust and add BigQuery TPC-H benchmark support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9969\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9969</a></li>\n<li class=\"\">fix: Show proper unauthorized error instead of misleading runtime unavailable by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9972\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9972</a></li>\n<li class=\"\">fix: Enforce target_chunk_size as hard maximum in chunking by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9973\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9973</a></li>\n<li class=\"\">Add caching retention by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9984\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9984</a></li>\n<li class=\"\">fix: improve Databricks schema error detection and messages by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9987\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9987</a></li>\n<li class=\"\">fix: Set default S3 region for opendal operator and fix cayenne nextest by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9995\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9995</a></li>\n<li class=\"\">fix(PostgreSQL): fix schema discovery for PostgreSQL partitioned tables by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9997\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9997</a></li>\n<li class=\"\">fix: Defer cache size check until after encoding for compressed results by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10001\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10001</a></li>\n<li class=\"\">fix: Rewrite numeric BETWEEN to CAST(AS REAL) for Turso by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10003\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10003</a></li>\n<li class=\"\">fix: Handle integer time columns in append refresh for all accelerators by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10004\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10004</a></li>\n<li class=\"\">fix: preserve s3a:// scheme when building OpenDalStorageFactory with custom endpoint by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10006\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10006</a></li>\n<li class=\"\">Fix ISO8601 time_format with Vortex/Cayenne append refresh by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10009\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10009</a></li>\n<li class=\"\">fix: Address data correctness bugs found in audit by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10015\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10015</a></li>\n<li class=\"\">fix(federation): fix SQL unparsing for Inexact filter pushdown with alias by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10017\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10017</a></li>\n<li class=\"\">Improve GitHub connector ref handling and resilience by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10023\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10023</a></li>\n<li class=\"\">feat: Add spice completions command for shell completion generation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10024\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10024</a></li>\n<li class=\"\">fix: Fix data correctness bugs in DynamoDB decimal conversion and GraphQL pagination by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10054\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10054</a></li>\n<li class=\"\">Implement RefreshDataset for distributed control stream by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10055\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10055</a></li>\n<li class=\"\">perf: Improve S3 parquet read performance by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10064\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10064</a></li>\n<li class=\"\">fix: Prevent write-through stalls and preserve PartitionTableProvider during catalog refresh by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10066\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10066</a></li>\n<li class=\"\">feat: <code>spice completions</code> auto-detects shell directory and writes file by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10068\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10068</a></li>\n<li class=\"\">fix: Bug in DynamoDB, GraphQL, and ISO8601 refresh data handling by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10063\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10063</a></li>\n<li class=\"\">fix partial aggregation deduplication on string checking by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10078\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10078</a></li>\n<li class=\"\">fix: add MetastoreTransaction support to prevent concurrent transaction conflicts by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10080\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10080</a></li>\n<li class=\"\">fix: Use GreedyMemoryPool, add spidapter query memory limit arg by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10082\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10082</a></li>\n<li class=\"\">feat: Add metrics for EXPLAIN ANALYZE in FlightSQLExec by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10084\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10084</a></li>\n<li class=\"\">Use strict cast in <code>try_cast_to</code> to error on overflow instead of silent NULL by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10104\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10104</a></li>\n<li class=\"\">feat: Implement MERGE INTO for Cayenne catalog tables by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10105\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10105</a></li>\n<li class=\"\">feat: Add distributed MERGE INTO support for Cayenne catalog tables by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10106\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10106</a></li>\n<li class=\"\">Improve JSON format auto-detection for single multi-line objects by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10107\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10107</a></li>\n<li class=\"\">Add mode: file_update acceleration mode by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10108\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10108</a></li>\n<li class=\"\">Coerce unsupported Arrow types to Iceberg v2 equivalents in REST catalog API by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10109\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10109</a></li>\n<li class=\"\">fix: Update default query memory limit to 90% from 70% by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10112\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10112</a></li>\n<li class=\"\">feat: Add mTLS client auth support to spice sql REPL by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10113\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10113</a></li>\n<li class=\"\">fix(datafusion-federation): report error on overflow instead of silent NULL by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10124\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10124</a></li>\n<li class=\"\">fix: Prevent data loss in MERGE when source has duplicate keys by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10126\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10126</a></li>\n<li class=\"\">feat: Add ClickHouse Date32 type support by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10132\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10132</a></li>\n<li class=\"\">Add Delta Lake column mapping support (Name/Id modes) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10134\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10134</a></li>\n<li class=\"\">fix: Restore Turso numeric BETWEEN rewrite lost in DML revert by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10139\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10139</a></li>\n<li class=\"\">fix: Enable arm64 Linux builds with fp16 and lld workarounds by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10142\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10142</a></li>\n<li class=\"\">fix: remove double trailing slash in Unity Catalog storage locations by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10147\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10147</a></li>\n<li class=\"\">fix: Improve GitHub GraphQL client resilience and performance by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10151\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10151</a></li>\n<li class=\"\">Enable reqwest compression and optimize HTTP client settings by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10154\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10154</a></li>\n<li class=\"\">fix: executor startup failures by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10155\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10155</a></li>\n<li class=\"\">feat: Distributed runtime.task_history support by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10156\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10156</a></li>\n<li class=\"\">fix: Preserve timestamp timezone in DDL forwarding to executors by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10159\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10159</a></li>\n<li class=\"\">feat: Per-model rate-limited concurrent AI UDF execution by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10160\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10160</a></li>\n<li class=\"\">fix(Turso): Reject subquery/outer-ref filter pushdown in Turso provider by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10174\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10174</a></li>\n<li class=\"\">Fix linux/macos <code>spice upgrade</code> by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10194\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10194</a></li>\n<li class=\"\">Improve CREATE TABLE LIKE error messages, success output, EXPLAIN, and validation by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10203\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10203</a></li>\n<li class=\"\">fix: chunk MERGE delete filters and update Vortex for stack-safe IN-lists by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10207\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10207</a></li>\n<li class=\"\">Propagate <code>runtime.params.parquet_page_index</code> to Delta Lake connector by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10209\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10209</a></li>\n<li class=\"\">Properly mark dataset as Ready on Scheduler by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10215\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10215</a></li>\n<li class=\"\">fix: handle Utf8View/LargeUtf8 in GitHub connector ref filters by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10217\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10217</a></li>\n<li class=\"\">fix(databricks): Fix schema introspection and timestamp overflow by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10226\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10226</a></li>\n<li class=\"\">fix(databricks): Fix schema introspection failures for non-Unity-Catalog environments by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10227\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10227</a></li>\n<li class=\"\">feat: Add pagination support to HTTP data connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10228\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10228</a></li>\n<li class=\"\">feat(databricks): DESCRIBE TABLE fallback and source-native type parsing for Lakehouse Federation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10229\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10229</a></li>\n<li class=\"\">fix(databricks): harden HTTP retries, compression, and token refresh by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10232\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10232</a></li>\n<li class=\"\">feat[helm chart]: Add support for ServiceAccount annotations and AWS IRSA example by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9833\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9833</a></li>\n<li class=\"\">fix: Log warning and fall back gracefully on Cayenne config change by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9092\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9092</a></li>\n<li class=\"\">fix: Handle engine mismatch gracefully in snapshot fallback loop by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9187\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9187</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/spiceai/spiceai/compare/v2.0.0-rc.1...v2.0.0-rc.2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/compare/v2.0.0-rc.1...v2.0.0-rc.2</a></p>",
            "url": "https://spiceai.org/releases/v2.0-rc.2",
            "title": "Spice v2.0-rc.2 (Apr 10, 2026)",
            "summary": "Announcing the release of Spice v2.0-rc.2! 🔥",
            "date_modified": "2026-04-10T00:00:00.000Z",
            "author": {
                "name": "Evgenii Khramkov",
                "url": "https://github.com/ewgenius"
            },
            "tags": [
                "release",
                "distributed-query",
                "cayenne",
                "datafusion",
                "delta-lake",
                "databricks",
                "adbc",
                "data-connector"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.5",
            "content_html": "<p>Announcing the release of Spice v1.11.5! 🛠️</p>\n<p>Spice v1.11.5 is a patch release improving <strong><code>on_zero_results: use_source</code></strong> fallback performance, <strong>Delta Lake</strong> timestamp predicate data skipping, <strong>S3 Parquet</strong> read performance, <strong>PostgreSQL</strong> partitioned table support, <strong>Cayenne</strong> target file size handling, and preparing the CLI for v2.0 runtime upgrades.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1115\">What's New in v1.11.5<a href=\"https://spiceai.org/releases/v1.11.5#whats-new-in-v1115\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.5\" title=\"Direct link to What's New in v1.11.5\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"on_zero_results-use_source-fallback-performance-improvement\"><code>on_zero_results: use_source</code> Fallback Performance Improvement<a href=\"https://spiceai.org/releases/v1.11.5#on_zero_results-use_source-fallback-performance-improvement\" class=\"hash-link\" aria-label=\"Direct link to on_zero_results-use_source-fallback-performance-improvement\" title=\"Direct link to on_zero_results-use_source-fallback-performance-improvement\" translate=\"no\">​</a></h3>\n<p>Improved the <a href=\"https://spiceai.org/docs/features/data-acceleration/data-refresh#behavior-on-zero-results\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\"><code>on_zero_results: use_source</code></a> fallback path to run DataFusion's physical optimizer on the federated scan plan (<a href=\"https://github.com/spiceai/spiceai/pull/9927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9927</a>). The fallback path now runs <code>SessionState::physical_optimizers()</code> rules on the federated scan plan before execution, enabling parallel file group scanning and other optimizations. This results in significantly faster fallback queries on multi-core machines, particularly for file-based data sources like Delta Lake.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"delta-lake-improved-data-skipping-for--timestamp-predicates\">Delta Lake: Improved Data Skipping for <code>&gt;=</code> Timestamp Predicates<a href=\"https://spiceai.org/releases/v1.11.5#delta-lake-improved-data-skipping-for--timestamp-predicates\" class=\"hash-link\" aria-label=\"Direct link to delta-lake-improved-data-skipping-for--timestamp-predicates\" title=\"Direct link to delta-lake-improved-data-skipping-for--timestamp-predicates\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/components/data-connectors/delta-lake\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Delta Lake</a> table scans with <code>&gt;=</code> timestamp filters now correctly prune files that do not match the predicate (<a href=\"https://github.com/spiceai/spiceai/pull/9932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9932</a>), improving query performance through more effective data skipping (file-level pruning).</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"postgresql-partitioned-tables-support\">PostgreSQL: Partitioned Tables Support<a href=\"https://spiceai.org/releases/v1.11.5#postgresql-partitioned-tables-support\" class=\"hash-link\" aria-label=\"Direct link to PostgreSQL: Partitioned Tables Support\" title=\"Direct link to PostgreSQL: Partitioned Tables Support\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/components/data-connectors/postgres\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">PostgreSQL</a> data connector now supports <a href=\"https://www.postgresql.org/docs/current/ddl-partitioning.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">partitioned tables</a> (<a href=\"https://github.com/spiceai/spiceai/pull/9997\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9997</a>) for both federated and accelerated queries.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-parquet-read-performance-improvement\">S3 Parquet Read Performance Improvement<a href=\"https://spiceai.org/releases/v1.11.5#s3-parquet-read-performance-improvement\" class=\"hash-link\" aria-label=\"Direct link to S3 Parquet Read Performance Improvement\" title=\"Direct link to S3 Parquet Read Performance Improvement\" translate=\"no\">​</a></h3>\n<p>Improved parquet read performance from <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3</a> and other object stores (<a href=\"https://github.com/spiceai/spiceai/pull/10064\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10064</a>), particularly for tables with many columns. Column data ranges are now coalesced into fewer, larger requests instead of being fetched individually, reducing the number of HTTP round-trips.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cayenne-ensure-target-file-size-is-respected\">Cayenne: Ensure Target File Size is Respected<a href=\"https://spiceai.org/releases/v1.11.5#cayenne-ensure-target-file-size-is-respected\" class=\"hash-link\" aria-label=\"Direct link to Cayenne: Ensure Target File Size is Respected\" title=\"Direct link to Cayenne: Ensure Target File Size is Respected\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne</a> accelerator now correctly respects the configured target file size (<a href=\"https://github.com/spiceai/spiceai/pull/10071\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10071</a>). Previously, Cayenne could produce many small, fragmented Vortex files; with this fix, files are written at the expected target size, improving storage efficiency and query performance.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cli-support-for-v20-runtime-upgrades\">CLI: Support for v2.0 Runtime Upgrades<a href=\"https://spiceai.org/releases/v1.11.5#cli-support-for-v20-runtime-upgrades\" class=\"hash-link\" aria-label=\"Direct link to CLI: Support for v2.0 Runtime Upgrades\" title=\"Direct link to CLI: Support for v2.0 Runtime Upgrades\" translate=\"no\">​</a></h3>\n<p>The Spice CLI can now upgrade to v2.0 runtime versions. This enables upgrading to v2.0 release candidates and, once released, the v2.0 stable runtime.</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade v2.0.0-rc.1</span><br></span></code></pre></div></div>\n<p>Running <code>spice upgrade</code> without a version will upgrade to the latest stable version, including v2.0 once released.</p>\n<blockquote>\n<p><strong>Note:</strong> Native Windows runtime builds will no longer be provided in v2.0. Use <a href=\"https://learn.microsoft.com/en-us/windows/wsl/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">WSL</a> for local development instead.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.5#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.5#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.5#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No new cookbook recipes.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.5#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.5, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.11.5</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.11.5</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.5</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.5#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.5#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">fix(runtime): Run physical optimizer on <code>FallbackOnZeroResultsScanExec</code> fallback plan by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9927</a></li>\n<li class=\"\">fix(delta_lake): Fix data skipping for <code>&gt;=</code> timestamp predicates by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9932</a></li>\n<li class=\"\">fix(PostgreSQL): Fix schema discovery for PostgreSQL partitioned tables by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9997\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9997</a></li>\n<li class=\"\">fix(cli): Skip models variant download for v2+ in upgrade/install by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> and <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10052\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10052</a></li>\n<li class=\"\">perf(s3): Improve Parquet read performance by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10064\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10064</a></li>\n<li class=\"\">fix(cayenne): Ensure Cayenne respects target file size by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/10071\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#10071</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/spiceai/spiceai/compare/v1.11.4...v1.11.5\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/compare/v1.11.4...v1.11.5</a></p>",
            "url": "https://spiceai.org/releases/v1.11.5",
            "title": "Spice v1.11.5 (Apr 1, 2026)",
            "summary": "Announcing the release of Spice v1.11.5! 🛠️",
            "date_modified": "2026-04-01T00:00:00.000Z",
            "author": {
                "name": "Sergei Grebnov",
                "url": "https://github.com/sgrebnov"
            },
            "tags": [
                "release",
                "s3",
                "cayenne",
                "delta-lake",
                "PostgreSQL"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.4",
            "content_html": "<p>Announcing the release of Spice v1.11.4! ⚡</p>\n<p>Spice v1.11.4 is a patch release improving <strong>S3</strong> metadata column query robustness and enabling <strong><code>on_zero_results: use_source</code></strong> for accelerated views.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1114\">What's New in v1.11.4<a href=\"https://spiceai.org/releases/v1.11.4#whats-new-in-v1114\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.4\" title=\"Direct link to What's New in v1.11.4\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"accelerated-views-on_zero_results-use_source-support\">Accelerated Views: <code>on_zero_results: use_source</code> Support<a href=\"https://spiceai.org/releases/v1.11.4#accelerated-views-on_zero_results-use_source-support\" class=\"hash-link\" aria-label=\"Direct link to accelerated-views-on_zero_results-use_source-support\" title=\"Direct link to accelerated-views-on_zero_results-use_source-support\" translate=\"no\">​</a></h3>\n<p>Accelerated <a href=\"https://spiceai.org/docs/components/views\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">views</a> now support the <a href=\"https://spiceai.org/docs/features/data-acceleration/data-refresh#behavior-on-zero-results\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\"><code>on_zero_results: use_source</code></a> configuration (<a href=\"https://github.com/spiceai/spiceai/pull/9699\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9699</a>). Previously, accelerated views only supported <code>on_zero_results: return_empty</code>, which returned an empty result set when the accelerated data contained no matching rows. With this change, views can fall back to querying the source data when the accelerated query returns zero results, matching the behavior already available for accelerated datasets.</p>\n<p><strong>Example configuration:</strong></p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">views</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales_summary</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">|</span><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      SELECT region, SUM(amount) as total</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      FROM sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      GROUP BY region</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">on_zero_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> use_source</span><br></span></code></pre></div></div>\n<h4 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"how-the-fallback-works\">How the Fallback Works<a href=\"https://spiceai.org/releases/v1.11.4#how-the-fallback-works\" class=\"hash-link\" aria-label=\"Direct link to How the Fallback Works\" title=\"Direct link to How the Fallback Works\" translate=\"no\">​</a></h4>\n<p>When an accelerated view is configured with <code>on_zero_results: use_source</code>, the following happens at query time:</p>\n<ol>\n<li class=\"\">\n<p><strong>The accelerated store is queried first.</strong> The query runs against the view's accelerated data (e.g., Spice Cayenne, Arrow, DuckDB, or SQLite).</p>\n</li>\n<li class=\"\">\n<p><strong>If the accelerated query returns zero rows</strong>, the runtime falls back to re-executing the view's SQL query against the datasets it references.</p>\n</li>\n<li class=\"\">\n<p><strong>Referenced datasets are queried according to their own configuration.</strong> The view's SQL is re-executed against each referenced dataset as it is configured. This means:</p>\n<ul>\n<li class=\"\">If a referenced dataset is <strong>accelerated</strong>, the query hits that dataset's accelerated store — not the raw data source.</li>\n<li class=\"\">If a referenced dataset is <strong>accelerated with <code>on_zero_results: use_source</code></strong> and its accelerated store also returns zero rows, it will independently fall back to its own federated data source (e.g., Postgres, S3, etc.).</li>\n<li class=\"\">If a referenced dataset is <strong>federated</strong> (not accelerated), the query goes directly to the data source.</li>\n</ul>\n</li>\n</ol>\n<p>This means the fallback can chain through multiple layers: first the view's acceleration, then each referenced dataset's acceleration, and finally the original data source — each layer independently applying its own <code>on_zero_results</code> behavior.</p>\n<p><strong>Example: Multi-layer fallback</strong></p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> postgres</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">orders</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> orders</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"SELECT * FROM orders WHERE created_at &gt; now() - interval '7 days'\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">on_zero_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> use_source  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Falls back to Postgres if accelerated data has no matches</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">views</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> recent_orders_summary</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">|</span><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      SELECT status, COUNT(*) as order_count</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      FROM orders</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">      GROUP BY status</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">on_zero_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> use_source  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Falls back to re-running the SQL against referenced datasets</span><br></span></code></pre></div></div>\n<p>In this example, a query like <code>SELECT * FROM recent_orders_summary WHERE status = 'cancelled'</code> follows this path:</p>\n<ol>\n<li class=\"\">Queries <code>recent_orders_summary</code> in the view's accelerated store (DuckDB/SQLite).</li>\n<li class=\"\">If zero rows are returned, re-executes <code>SELECT status, COUNT(*) ... FROM orders GROUP BY status</code> against the <code>orders</code> dataset.</li>\n<li class=\"\">Since <code>orders</code> is accelerated, the query hits the <code>orders</code> accelerated store.</li>\n<li class=\"\">If <code>orders</code> also returns zero rows (e.g., the <code>refresh_sql</code> excluded cancelled orders), it falls back to querying Postgres directly.</li>\n</ol>\n<!-- -->\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-data-connector-more-robust-metadata-column-handling\">S3 Data Connector: More Robust Metadata Column Handling<a href=\"https://spiceai.org/releases/v1.11.4#s3-data-connector-more-robust-metadata-column-handling\" class=\"hash-link\" aria-label=\"Direct link to S3 Data Connector: More Robust Metadata Column Handling\" title=\"Direct link to S3 Data Connector: More Robust Metadata Column Handling\" translate=\"no\">​</a></h3>\n<p>Improved the robustness of <a href=\"https://spiceai.org/docs/components/data-connectors/#metadata-columns\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">metadata column</a> (<code>location</code>, <code>last_modified</code>, <code>size</code>) handling for <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3</a> datasets. Building on the v1.11.3 release, this update addresses an additional edge case where the query optimizer's projection swap could cause an <code>index out of bounds</code> panic when metadata columns are referenced in projections with filters or scalar functions.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.4#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.4#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.4#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No new cookbook recipes.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.4#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.4, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.11.4</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.11.4</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.4</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.4#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.4#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">fix(s3): Make metadata column handling more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9714\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9714</a></li>\n<li class=\"\">feat(views): Enable <code>on_zero_results: use_source</code> for accelerated views by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9699\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9699</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/spiceai/spiceai/compare/v1.11.3...v1.11.4\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/compare/v1.11.3...v1.11.4</a></p>",
            "url": "https://spiceai.org/releases/v1.11.4",
            "title": "Spice v1.11.4 (Mar 12, 2026)",
            "summary": "Announcing the release of Spice v1.11.4! ⚡",
            "date_modified": "2026-03-12T00:00:00.000Z",
            "author": {
                "name": "Sergei Grebnov",
                "url": "https://github.com/sgrebnov"
            },
            "tags": [
                "release",
                "s3",
                "data-connector",
                "acceleration"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.3",
            "content_html": "<p>Announcing the release of Spice v1.11.3! 🛠️</p>\n<p>Spice v1.11.3 is a patch release fixing schema consistency issues in the <strong>S3</strong> and <strong>FlightSQL</strong> data connectors, improving <strong>CDC cache invalidation</strong>, and enhancing the <strong>HTTP</strong> data connector's error handling and response metadata.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1113\">What's New in v1.11.3<a href=\"https://spiceai.org/releases/v1.11.3#whats-new-in-v1113\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.3\" title=\"Direct link to What's New in v1.11.3\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-data-connector-fix\">S3 Data Connector Fix<a href=\"https://spiceai.org/releases/v1.11.3#s3-data-connector-fix\" class=\"hash-link\" aria-label=\"Direct link to S3 Data Connector Fix\" title=\"Direct link to S3 Data Connector Fix\" translate=\"no\">​</a></h3>\n<p>Fixed an issue where queries using metadata columns (<code>location</code>, <code>last_modified</code>, <code>size</code>) on <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3</a> datasets produced <code>Input field name does not match with the projection expression</code> errors (<a href=\"https://github.com/spiceai/spiceai/issues/9647\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9647</a>). This occurred when projecting metadata columns with filters or scalar functions (e.g., <code>SELECT lower(location) FROM table WHERE location = '...'</code>), and when projection returned no matching files.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"flightsql-schema-consistency\">FlightSQL Schema Consistency<a href=\"https://spiceai.org/releases/v1.11.3#flightsql-schema-consistency\" class=\"hash-link\" aria-label=\"Direct link to FlightSQL Schema Consistency\" title=\"Direct link to FlightSQL Schema Consistency\" translate=\"no\">​</a></h3>\n<p>Fixed an issue where the Flight SQL JDBC driver returned <code>Unsupported ArrowType Utf8View</code> errors when performing <code>::TEXT</code> type casts (<a href=\"https://github.com/spiceai/spiceai/issues/9253\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9253</a>). The <a href=\"https://spiceai.org/docs/components/data-connectors/flightsql\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">FlightSQL</a> endpoint now maps view types (e.g., <code>Utf8View</code>, <code>BinaryView</code>) to their non-view equivalents, ensuring compatibility with JDBC and ODBC clients.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cdc-cache-invalidation\">CDC Cache Invalidation<a href=\"https://spiceai.org/releases/v1.11.3#cdc-cache-invalidation\" class=\"hash-link\" aria-label=\"Direct link to CDC Cache Invalidation\" title=\"Direct link to CDC Cache Invalidation\" translate=\"no\">​</a></h3>\n<p>Fixed an issue where the SQL results cache was invalidated on every change stream poll, even when zero records were returned (<a href=\"https://github.com/spiceai/spiceai/issues/9472\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9472</a>). This caused near-total cache miss rates for datasets using <code>refresh_mode: changes</code> (e.g., DynamoDB Streams), effectively rendering the cache useless. Cache invalidation now only occurs when a change batch contains actual data changes.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"http-data-connector-improvements\">HTTP Data Connector Improvements<a href=\"https://spiceai.org/releases/v1.11.3#http-data-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to HTTP Data Connector Improvements\" title=\"Direct link to HTTP Data Connector Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">HTTP error responses (e.g., 5xx) are now excluded from the cache, preventing transient server errors from polluting cached results.</li>\n<li class=\"\">Added a <code>response_headers</code> column (Map type) to HTTP responses, providing access to response header metadata in query results.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.3#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.3#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.3#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No new cookbook recipes.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.3#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.3, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.11.3</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.11.3</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.3</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.3#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.3#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">fix(s3): Fix metadata column schema mismatches in projected queries by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9664\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9664</a></li>\n<li class=\"\">s3_metadata_columns tests: include test for location outside table prefix by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9676\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9676</a></li>\n<li class=\"\">Fix Flight SQL schema consistency: expand view types and verify field names by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9438\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9438</a></li>\n<li class=\"\">Improve CDC cache invalidation by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9651\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9651</a></li>\n<li class=\"\">Skip caching http error response + add <code>response_headers</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9670\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9670</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/spiceai/spiceai/compare/v1.11.2...v1.11.3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/compare/v1.11.2...v1.11.3</a></p>",
            "url": "https://spiceai.org/releases/v1.11.3",
            "title": "Spice v1.11.3 (Mar 9, 2026)",
            "summary": "Announcing the release of Spice v1.11.3! 🛠️",
            "date_modified": "2026-03-09T00:00:00.000Z",
            "author": {
                "name": "Phillip LeBlanc",
                "url": "https://x.com/leblancphill"
            },
            "tags": [
                "release",
                "s3",
                "data-connector",
                "caching",
                "FlightSQL"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v2.0-rc.1",
            "content_html": "<p>Announcing the release of Spice v2.0-rc.1! 🚀</p>\n<p>v2.0.0-rc.1 is the first release candidate for early testing of v2.0.</p>\n<p>Highlights in this release candidate include:</p>\n<ul>\n<li class=\"\"><strong>Active-Active Highly-Available Distributed Query</strong> that is object-store-native and built on Apache Ballista, with dynamic cluster sizing, distributed ingestion, and cluster observability</li>\n<li class=\"\"><strong>Spice Cayenne RC</strong> with staged append writes, file-based retention deletes, composite partitioning, and distributed ingestion</li>\n<li class=\"\"><strong>DataFusion v52.2.0 Upgrade</strong> with sort pushdown, a new merge join, and dynamic filters</li>\n<li class=\"\"><strong>DDL Support</strong> for <code>CREATE TABLE</code> and <code>DROP TABLE</code> via SQL for Iceberg and Cayenne catalogs</li>\n<li class=\"\"><strong>DuckLake Catalog &amp; Data Connector</strong> for lakehouse-style data management</li>\n<li class=\"\"><strong>GCS Data Connector (Alpha)</strong> for Google Cloud Storage</li>\n<li class=\"\"><strong>Rust CLI Rewrite</strong> for a unified single-binary experience</li>\n<li class=\"\">Dependency upgrades including <strong>DuckDB v1.4.4</strong>, <strong>delta_kernel v0.18.2</strong>, and <strong>mistral.rs</strong></li>\n</ul>\n<p>Spice v2.0 includes several <a href=\"https://spiceai.org/releases/v2.0-rc.1#breaking-changes\" class=\"\">breaking changes</a>. Review the breaking changes section before upgrading.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distribution-changes\">Distribution Changes<a href=\"https://spiceai.org/releases/v2.0-rc.1#distribution-changes\" class=\"hash-link\" aria-label=\"Direct link to Distribution Changes\" title=\"Direct link to Distribution Changes\" translate=\"no\">​</a></h2>\n<p>AI/ML support including local LLM/ML model and hosted LLM inference is now included in the default Spice build and image. The separate <code>models</code> build variant has been removed.</p>\n<p>With models now included by default, the data-only distribution (without AI/ML support) is only published in nightly builds. Official production-ready data-only distributions are available exclusively through <a href=\"https://spice.ai/pricing\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cloud</a> and the Enterprise release.</p>\n<p>A new Network Attached Storage (NAS) distribution with built-in SMB and NFS data connector support is also now available in nightly builds and with <a href=\"https://spice.ai/pricing\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice.ai Enterprise</a>.</p>\n<table><thead><tr><th>Distribution / Variant</th><th>Open Source</th><th>Spice Cloud</th><th>Enterprise</th></tr></thead><tbody><tr><td>Default</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>Data</td><td>Nightly only</td><td>✅</td><td>✅</td></tr><tr><td>NAS (SMB + NFS)</td><td>Nightly only</td><td>❌</td><td>✅</td></tr><tr><td>Metal (macOS)</td><td>✅</td><td>✅</td><td>✅</td></tr><tr><td>CUDA (Linux)</td><td>Nightly only</td><td>✅</td><td>✅</td></tr><tr><td>Allocator variants</td><td>Nightly only</td><td>✅</td><td>✅</td></tr><tr><td>ODBC connector</td><td>Local build only</td><td>✅</td><td>✅</td></tr></tbody></table>\n<p>For more details, see the <a href=\"https://github.com/spiceai/spiceai/blob/trunk/docs/DISTRIBUTIONS.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributions documentation</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v200-rc1\">What's New in v2.0.0-rc.1<a href=\"https://spiceai.org/releases/v2.0-rc.1#whats-new-in-v200-rc1\" class=\"hash-link\" aria-label=\"Direct link to What's New in v2.0.0-rc.1\" title=\"Direct link to What's New in v2.0.0-rc.1\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"active-active-ha-distributed-query\">Active-Active HA Distributed Query<a href=\"https://spiceai.org/releases/v2.0-rc.1#active-active-ha-distributed-query\" class=\"hash-link\" aria-label=\"Direct link to Active-Active HA Distributed Query\" title=\"Direct link to Active-Active HA Distributed Query\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query</a> exits Beta with active-active highly-available object-store-based distributed query.</p>\n<p>Distributed query supports two execution modes:</p>\n<ul>\n<li class=\"\"><strong>Synchronous</strong>: Queries for accelerated datasets are distributed across executors and results are streamed back in real-time. Non-accelerated datasets execute only on the scheduler. Best for interactive queries where low latency is critical.</li>\n<li class=\"\"><strong>Asynchronous</strong>: Queries are submitted via the new HTTP-only <code>/v1/queries</code> API and results are materialized to object storage for later retrieval. Best for long-running analytical workloads, batch processing, and non-accelerated datasets in distributed mode.</li>\n</ul>\n<p><strong>Key improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>Dynamic Cluster Sizing</strong>: The query planner automatically adjusts parallelism based on the number of active executors in the cluster, ensuring optimal resource utilization as nodes are added or removed.</li>\n<li class=\"\"><strong>Distributed Ingestion</strong>: Data ingestion for partitioned accelerated tables is now distributed across executor nodes, enabling higher throughput and parallel data loading in cluster mode. Regular (non-partitioned) accelerated tables do not distribute ingestion loads.</li>\n<li class=\"\"><strong>Synchronous Execution on Scheduler</strong>: <code>/v1/sql</code> and FlightSQL queries now execute synchronously on the scheduler when appropriate, reducing inter-node overhead for queries that don't benefit from distribution.</li>\n<li class=\"\"><strong>Faster Failure Detection</strong>: Executor heartbeat timeout reduced from 180s to 30s, enabling the cluster to quickly detect and respond to executor failures.</li>\n<li class=\"\"><strong>Cluster Observability</strong>: New metrics and Grafana dashboard for monitoring distributed query clusters.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-cayenne-improvements\">Spice Cayenne Improvements<a href=\"https://spiceai.org/releases/v2.0-rc.1#spice-cayenne-improvements\" class=\"hash-link\" aria-label=\"Direct link to Spice Cayenne Improvements\" title=\"Direct link to Spice Cayenne Improvements\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cayenne data accelerator</a> exits Beta with significant reliability and performance improvements:</p>\n<ul>\n<li class=\"\"><strong>Staged Append Writes</strong>: WAL-based staged append writes prevent partial writes and data loss on stream errors. Batches are written to a WAL file before being committed, ensuring atomicity.</li>\n<li class=\"\"><strong>File-Based Retention Deletes</strong>: Time-based retention now supports file-level deletes for both position-based and primary-key tables, reducing I/O overhead compared to row-level deletion.</li>\n<li class=\"\"><strong>Multiple Partition Expressions</strong>: Support for composite partitioning with <code>partition_by: [col1, col2]</code> using hierarchical path-like keys (e.g., <code>2025/10/15</code>).</li>\n<li class=\"\"><strong>Distributed Ingestion</strong>: Cayenne catalog now supports distributed ingestion across executor nodes in cluster mode, including <code>UPDATE</code> operations.</li>\n<li class=\"\"><strong>Improved Robustness</strong>: Fixed CDC edge case where <code>DELETE</code> + <code>UPSERT</code> sequences could produce duplicate primary keys across protected snapshots. Improved upsert handling during runtime restarts.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v5220-upgrade\">DataFusion v52.2.0 Upgrade<a href=\"https://spiceai.org/releases/v2.0-rc.1#datafusion-v5220-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v52.2.0 Upgrade\" title=\"Direct link to DataFusion v52.2.0 Upgrade\" translate=\"no\">​</a></h3>\n<p><a href=\"https://datafusion.apache.org/blog/2026/01/12/datafusion-52.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion has been upgraded to v52.2.0</a>, bringing significant performance improvements, new query features, and enhanced extensibility.</p>\n<p><strong>Performance Improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>Faster <code>CASE</code> Expressions</strong>: Lookup-table-based evaluation for certain <code>CASE</code> expressions avoids repeated evaluation, accelerating common ETL patterns</li>\n<li class=\"\"><strong><code>MIN</code>/<code>MAX</code> Aggregate Dynamic Filters</strong>: Queries with <code>MIN</code>/<code>MAX</code> aggregates now create dynamic filters during scan to prune files and rows as tighter bounds are discovered during execution</li>\n<li class=\"\"><strong>New Merge Join</strong>: Rewritten sort-merge join (SMJ) operator with speedups of three orders of magnitude in pathological cases (e.g., TPC-H Q21: minutes → milliseconds)</li>\n<li class=\"\"><strong>Caching Improvements</strong>: New statistics cache for file metadata avoids repeatedly recalculating statistics, significantly improving planning time. A prefix-aware list-files cache accelerates evaluating partition predicates for Hive partitioned tables</li>\n<li class=\"\"><strong>Improved Hash Join Filter Pushdown</strong>: Build-side hash map contents are now passed dynamically to probe-side scans for pruning files, row groups, and individual rows</li>\n</ul>\n<p><strong>Major Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Sort Pushdown to Scans</strong>: Sorts are pushed into data sources, enabling ~30x performance improvement on pre-sorted data with top-K queries. Parquet scans now reverse row group order for <code>DESC</code> queries on <code>ASC</code>-sorted files</li>\n<li class=\"\"><strong><code>TableProvider</code> supports <code>DELETE</code> and <code>UPDATE</code></strong>: New hooks for <code>DELETE</code> and <code>UPDATE</code> statements in the <code>TableProvider</code> trait, enabling Iceberg and Cayenne connectors to implement SQL <code>DELETE</code> and <code>UPDATE</code> operations</li>\n<li class=\"\"><strong>More Extensible SQL Planning</strong>: New <code>RelationPlanner</code> API for extending SQL planning for <code>FROM</code> clauses, enabling support for vendor-specific SQL dialects</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"ddl-support-for-iceberg-and-cayenne\">DDL Support for Iceberg and Cayenne<a href=\"https://spiceai.org/releases/v2.0-rc.1#ddl-support-for-iceberg-and-cayenne\" class=\"hash-link\" aria-label=\"Direct link to DDL Support for Iceberg and Cayenne\" title=\"Direct link to DDL Support for Iceberg and Cayenne\" translate=\"no\">​</a></h3>\n<p><strong>SQL Schema Management</strong>: Spice now supports <code>CREATE TABLE</code> and <code>DROP TABLE</code> DDL operations for <a href=\"https://iceberg.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Iceberg</a> and <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne</a> catalogs via FlightSQL and the <code>/v1/sql</code> API. DML validation has been updated for catalog-level writability.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"ducklake-catalog--data-connector\">DuckLake Catalog &amp; Data Connector<a href=\"https://spiceai.org/releases/v2.0-rc.1#ducklake-catalog--data-connector\" class=\"hash-link\" aria-label=\"Direct link to DuckLake Catalog &amp; Data Connector\" title=\"Direct link to DuckLake Catalog &amp; Data Connector\" translate=\"no\">​</a></h3>\n<p><strong>Lakehouse-Style Data Management</strong>: New <a href=\"https://ducklake.select/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DuckLake</a> catalog and data connector enable lakehouse-style data management with DuckDB as the metadata catalog and object storage for data files. DuckLake provides ACID transactions, time travel, and schema evolution on top of Parquet files.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"gcs-data-connector-alpha\">GCS Data Connector (Alpha)<a href=\"https://spiceai.org/releases/v2.0-rc.1#gcs-data-connector-alpha\" class=\"hash-link\" aria-label=\"Direct link to GCS Data Connector (Alpha)\" title=\"Direct link to GCS Data Connector (Alpha)\" translate=\"no\">​</a></h3>\n<p><strong>Google Cloud Storage Support</strong>: New <a href=\"https://cloud.google.com/storage\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Google Cloud Storage</a> data connector enables federated queries against data stored in GCS buckets, with Iceberg table support.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"rust-cli-rewrite\">Rust CLI Rewrite<a href=\"https://spiceai.org/releases/v2.0-rc.1#rust-cli-rewrite\" class=\"hash-link\" aria-label=\"Direct link to Rust CLI Rewrite\" title=\"Direct link to Rust CLI Rewrite\" translate=\"no\">​</a></h3>\n<p><strong>Unified Single-Binary Experience</strong>: The Spice CLI has been completely rewritten from Go to Rust, eliminating the Go dependency and providing a single <code>spice</code> binary built from the same codebase as <code>spiced</code>. This improves startup performance, reduces distribution size, and ensures consistent behavior between CLI and runtime.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Full Feature Parity</strong>: All 27+ CLI commands re-implemented in Rust with identical behavior</li>\n<li class=\"\"><strong>New <code>spice query</code> Command</strong>: Interactive REPL for <a href=\"https://spiceai.org/docs/features/query-federation/async-queries\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">async queries</a> via the <code>/v1/queries</code> API with multi-line SQL input, spinner progress indicator, Ctrl+C cancellation, and partial query ID matching</li>\n<li class=\"\"><strong><code>--output=json</code> Flag</strong>: Machine-readable JSON output for CLI commands, enabling scripting and automation</li>\n<li class=\"\"><strong><code>spice login --output</code></strong>: New output modes (<code>env</code>, <code>json</code>, <code>keychain</code>) for flexible credential management</li>\n<li class=\"\"><strong><code>spice cloud metrics</code></strong>: New command for Spice Cloud deployment metrics</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"models-included-by-default\">Models Included by Default<a href=\"https://spiceai.org/releases/v2.0-rc.1#models-included-by-default\" class=\"hash-link\" aria-label=\"Direct link to Models Included by Default\" title=\"Direct link to Models Included by Default\" translate=\"no\">​</a></h3>\n<p>Local LLM/ML model inference (via <code>mistral.rs</code>) is now included in the default Spice build. The separate <code>models</code> build variant has been removed. This simplifies installation and ensures all users have access to local AI inference capabilities.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"error-propagation-for-dataset-and-model-status-apis\">Error Propagation for Dataset and Model Status APIs<a href=\"https://spiceai.org/releases/v2.0-rc.1#error-propagation-for-dataset-and-model-status-apis\" class=\"hash-link\" aria-label=\"Direct link to Error Propagation for Dataset and Model Status APIs\" title=\"Direct link to Error Propagation for Dataset and Model Status APIs\" translate=\"no\">​</a></h3>\n<p>The <code>/v1/datasets</code> and <code>/v1/models</code> APIs now return structured error information when a component is in an <code>Error</code> state. The <code>?status=true</code> query parameter must be passed to retrieve the real-time component status, including the error state and details. Previously, the status field only indicated <code>Error</code> with no further detail. Now, two new fields are included when <code>?status=true</code> is specified:</p>\n<ul>\n<li class=\"\"><strong><code>error</code></strong>: A structured object with <code>category</code>, <code>type</code>, and <code>code</code> fields for programmatic error handling (e.g. <code>{ \"category\": \"dataset\", \"type\": \"auth\", \"code\": \"dataset.auth\" }</code>).</li>\n<li class=\"\"><strong><code>error_message</code></strong>: A human-readable description of why the component entered an error state.</li>\n</ul>\n<p>These fields are only present when <code>?status=true</code> is passed and the component is in an error state.</p>\n<p><strong>Example <code>/v1/datasets?status=true</code> response:</strong></p>\n<div class=\"language-json codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-json codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">[</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"from\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"postgres:syncs\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"name\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"daily_journal\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"replication_enabled\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">false</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"acceleration_enabled\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">true</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"status\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"Ready\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"from\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"databricks:hive_metastore.default.messages\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"name\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"messages\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"replication_enabled\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">false</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"acceleration_enabled\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">true</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"status\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"Error\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"error\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"category\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"dataset\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"type\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"auth\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"code\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"dataset.auth\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token property\" style=\"color:hsl(5, 74%, 59%)\">\"error_message\"</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"Unable to authenticate with datasource credentials\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">]</span><br></span></code></pre></div></div>\n<p>The <code>spice datasets</code> and <code>spice models</code> CLI commands now include an <code>ERROR</code> column that displays the error message for any component in an error state.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-dependency-upgrades\">Additional Dependency Upgrades<a href=\"https://spiceai.org/releases/v2.0-rc.1#additional-dependency-upgrades\" class=\"hash-link\" aria-label=\"Direct link to Additional Dependency Upgrades\" title=\"Direct link to Additional Dependency Upgrades\" translate=\"no\">​</a></h3>\n<table><thead><tr><th>Dependency</th><th>Version</th></tr></thead><tbody><tr><td><strong>Ballista</strong></td><td>v52.0.0</td></tr><tr><td><strong>DuckDB</strong></td><td>v1.4.4</td></tr><tr><td><strong>delta_kernel</strong></td><td>v0.18.2</td></tr><tr><td><strong>mistral.rs</strong></td><td>v0.7.0 (candle fork removed, now uses candle 0.9.2 from crates.io)</td></tr><tr><td><strong>Turso (libsql)</strong></td><td>v0.4.4</td></tr><tr><td><strong>Vortex</strong></td><td>Upgraded with CASE-WHEN support</td></tr><tr><td><strong>AWS SDK</strong></td><td>Multiple crates updated + APN user-agent support</td></tr></tbody></table>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"other-improvements\">Other Improvements<a href=\"https://spiceai.org/releases/v2.0-rc.1#other-improvements\" class=\"hash-link\" aria-label=\"Direct link to Other Improvements\" title=\"Direct link to Other Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Spicepod v2 Support</strong>: Spicepods now support version <code>v2</code>, and <code>spice init</code> generates <code>spicepod.yaml</code> files with <code>version: v2</code> by default while maintaining backward compatibility for existing <code>v1</code> spicepods.</li>\n<li class=\"\"><strong>x.ai Models</strong>: x.ai models now exclusively use the <code>/v1/responses</code> endpoint with rate limiting support.</li>\n<li class=\"\"><strong>HuggingFace Chat Templates</strong>: Added support for chat templates in HuggingFace model configurations.</li>\n<li class=\"\"><strong>Databricks SQL Dialect</strong>: Added Databricks SQL dialect for DataFusion unparser, improving federation query generation.</li>\n<li class=\"\"><strong>Snowflake</strong>: Added <code>snowflake_private_key</code> parameter for key-pair authentication.</li>\n<li class=\"\"><strong>Acceleration Metrics</strong>: New <code>rows_written</code>, <code>bytes_written</code>, and <code>dataset_acceleration_size_bytes</code> metrics for acceleration refresh ingestion.</li>\n<li class=\"\"><strong>Refresh SQL UDFs</strong>: Core scalar UDFs are now enabled in refresh SQL expressions.</li>\n<li class=\"\"><strong>FlightSQL</strong>: Fixed TLS connection handling for <code>grpc+tls://</code> endpoints with custom CA certificate support.</li>\n<li class=\"\"><strong>FlightSQL</strong>: Fixed schema consistency by expanding view types and verifying field names.</li>\n<li class=\"\"><strong>Hash Index</strong>: Fixed query correctness when hash index is used with additional filters.</li>\n<li class=\"\"><strong>Results Cache</strong>: Fixed schema preservation for empty query results.</li>\n<li class=\"\"><strong>Query Nullability</strong>: Reconciled execution stream nullability with logical plan schema.</li>\n<li class=\"\"><strong>Schema Evolution</strong>: Graceful handling of schema evolution mismatch errors during data refresh.</li>\n<li class=\"\"><strong>Internal YAML Parser</strong>: Replaced deprecated <code>serde_yaml</code> with an internal YAML implementation.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spicepod-v1-to-v2-changes\">Spicepod v1 to v2 Changes<a href=\"https://spiceai.org/releases/v2.0-rc.1#spicepod-v1-to-v2-changes\" class=\"hash-link\" aria-label=\"Direct link to Spicepod v1 to v2 Changes\" title=\"Direct link to Spicepod v1 to v2 Changes\" translate=\"no\">​</a></h3>\n<p>Spicepod <code>v2</code> introduces configuration improvements while maintaining backward compatibility with <code>v1</code>. Existing <code>v1</code> spicepods continue to work — deprecated fields are automatically migrated at load time.</p>\n<p><strong>Version support</strong>:</p>\n<table><thead><tr><th>Version</th><th>Status</th></tr></thead><tbody><tr><td><code>v2</code></td><td>Default. Used by <code>spice init</code>.</td></tr><tr><td><code>v1</code></td><td>Supported. Deprecated fields auto-migrate.</td></tr><tr><td><code>v1beta1</code></td><td>Removed. No longer accepted.</td></tr></tbody></table>\n<p><strong>Configuration changes</strong>:</p>\n<table><thead><tr><th>v1 (deprecated)</th><th>v2 (preferred)</th><th>Notes</th></tr></thead><tbody><tr><td><code>runtime.results_cache</code></td><td><code>runtime.caching.sql_results</code></td><td>All fields migrate automatically. <code>cache_max_size</code> → <code>max_size</code>.</td></tr><tr><td><code>runtime.memory_limit</code></td><td><code>runtime.query.memory_limit</code></td><td>Auto-migrated. <code>query.memory_limit</code> takes priority if both set.</td></tr><tr><td><code>runtime.temp_directory</code></td><td><code>runtime.query.temp_directory</code></td><td>Auto-migrated. <code>query.temp_directory</code> takes priority if both set.</td></tr><tr><td><code>dataset.invalid_type_action</code></td><td><code>dataset.unsupported_type_action</code></td><td>Auto-migrated. v2 adds a new <code>string</code> variant.</td></tr></tbody></table>\n<p><strong>New v2 fields</strong>:</p>\n<ul>\n<li class=\"\"><code>runtime.ready_state</code> — Controls when the runtime reports ready (<code>on_load</code> default, or <code>on_registration</code>).</li>\n<li class=\"\"><code>runtime.flight.do_put_rate_limit_enabled</code> — Enable/disable FlightSQL DoPut rate limiting (default: <code>true</code>).</li>\n<li class=\"\"><code>runtime.query.spill_compression</code> — Compression for query spill files (e.g., <code>lz4_frame</code>).</li>\n<li class=\"\"><code>runtime.scheduler.partition_management</code> — Configure partition assignment interval, limits, and timeouts for distributed mode.</li>\n<li class=\"\"><code>runtime.caching.sql_results.stale_while_revalidate_ttl</code> — Serve stale cached results while revalidating in the background.</li>\n<li class=\"\"><code>runtime.caching.sql_results.encoding</code> — Cache entry compression (e.g., <code>zstd</code>).</li>\n<li class=\"\"><code>catalog.access: read_write_create</code> — New access mode for catalogs that support DDL operations.</li>\n</ul>\n<p><strong>Migration note</strong>: When both the deprecated v1 field and its v2 equivalent are set, the v2 field takes priority.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v2.0-rc.1#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/avishafir\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@avishafir</a></li>\n<li class=\"\"><a href=\"https://github.com/cluster2600\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@cluster2600</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v2.0-rc.1#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Cayenne and Distributed Query exit Beta</strong>: Beta warnings have been removed from documentation and code. Both features are now considered GA-ready.</li>\n<li class=\"\"><strong>Models included by default</strong>: The separate <code>models</code> build variant has been removed. Local LLM inference is now always included.</li>\n<li class=\"\"><strong>Spicepod version defaults to <code>v2</code></strong>: New spicepods created with <code>spice init</code> now default to <code>version: v2</code>. Existing <code>v1</code> spicepods remain supported, and <code>v1beta1</code> is no longer accepted.</li>\n<li class=\"\"><strong>Windows native builds removed</strong>: Native Windows builds are no longer provided. Use <a href=\"https://learn.microsoft.com/en-us/windows/wsl/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">WSL</a> for local development instead.</li>\n<li class=\"\"><strong>Metric renames</strong>: <code>accelerated_refresh</code> metrics renamed to <code>acceleration_refresh</code> for consistency. <code>last_refresh_time</code> gauge renamed to include milliseconds unit.</li>\n<li class=\"\"><strong>Caching config renamed</strong>: <code>ResultsCache</code> replaced with <code>SQLResultsCacheConfig</code> in configuration.</li>\n<li class=\"\"><strong>DuckDB parameter rename</strong>: <code>partitioned_write_flush_threshold</code> renamed to <code>partitioned_write_flush_threshold_rows</code>.</li>\n<li class=\"\"><strong>v1/search API</strong>: The <code>/v1/search</code> API now always returns an array in <code>matches</code>, even for single results.</li>\n<li class=\"\"><strong>x.ai model endpoint</strong>: x.ai models now exclusively use the <code>/v1/responses</code> endpoint.</li>\n<li class=\"\"><strong>Error messages</strong>: Error messages across S3 Vectors, ScyllaDB, Snowflake, ClickHouse, and other components have been refactored for clarity and consistency.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v2.0-rc.1#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>New and updated <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> recipes:</p>\n<ul>\n<li class=\"\"><strong><a href=\"https://github.com/spiceai/cookbook/blob/trunk/async-queries\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Async Queries</a></strong>: Submit long-running queries asynchronously and retrieve results later.</li>\n<li class=\"\"><strong><a href=\"https://github.com/spiceai/cookbook/blob/trunk/ducklake\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DuckLake Catalog Connector</a></strong>: Use DuckLake for lakehouse-style data management with ACID transactions and time travel.</li>\n</ul>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 88 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v2.0-rc.1#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v2.0.0-rc.1, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:2.0.0-rc.1</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:2.0.0-rc.1</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.1</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v2.0-rc.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v2.0-rc.1#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Add TPC-DS integration tests with S3 source and PostgreSQL acceleration by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9006\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9006</a></li>\n<li class=\"\">fix(tests): fix flaky/slow/failing unit tests by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9009\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9009</a></li>\n<li class=\"\">fix: Update benchmark snapshots for DF51 upgrade by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9008\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9008</a></li>\n<li class=\"\">fix: add feature gate to rrf TEST_EMBEDDING_MODEL by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9017\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9017</a></li>\n<li class=\"\">fix: features check by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9014\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9014</a></li>\n<li class=\"\">fix: Enable Cayenne acceleration snapshots by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9020\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9020</a></li>\n<li class=\"\">URL table support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9018\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9018</a></li>\n<li class=\"\">ScyllaDB key filter by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8997\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8997</a></li>\n<li class=\"\">fix: Schema mismatch when using column projection with HTTP caching by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9021\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9021</a></li>\n<li class=\"\">Add more tests for HTTP caching with columns selection by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9025\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9025</a></li>\n<li class=\"\">HTTP cache snapshots: default to <code>time_interval</code> and fix <code>snapshots_creation_policy: on_change</code> by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9026\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9026</a></li>\n<li class=\"\">Fix duplicate snapshot creation on startup by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9029\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9029</a></li>\n<li class=\"\">Add ScyllaDB and SMB to the README table by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9034\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9034</a></li>\n<li class=\"\">Remove waiting for runtime to be ready before creating snapshot by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9033\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9033</a></li>\n<li class=\"\">Fix snapshot on_change policy to skip when no writes occurred by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9028\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9028</a></li>\n<li class=\"\">Release notes for release <code>release/1.11.0-rc.2</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9016\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9016</a></li>\n<li class=\"\">ci: use arduino/setup-protoc for official protobuf compiler by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9036\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9036</a></li>\n<li class=\"\">ci: install unzip on aarch64 runner for arduino/setup-protoc by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9038\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9038</a></li>\n<li class=\"\">fix: don't fail release if upload to minio fails by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9039\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9039</a></li>\n<li class=\"\">Add missing protoc step to setup-cc action by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9041\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9041</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9013\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9013</a></li>\n<li class=\"\">Fix <code>formula_1</code> and <code>codebase_community</code> in <code>bird-bench</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9000\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9000</a></li>\n<li class=\"\">Cayenne S3 Express One Zone improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9015\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9015</a></li>\n<li class=\"\">Add zlib1g-dev to CI by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9052\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9052</a></li>\n<li class=\"\">Improve validation and logging for hash indexes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9047\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9047</a></li>\n<li class=\"\">Upgrade Vortex with CASE-WHEN by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9051\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9051</a></li>\n<li class=\"\">x.ai models now exclusively use /v1/responses endpoint by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9400\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9400</a></li>\n<li class=\"\">Improvements for snapshot schema comparison by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9401\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9401</a></li>\n<li class=\"\">v2.0 breaking changes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9233\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9233</a></li>\n<li class=\"\">Create <code>PartitionManagementTask</code> for scheduler to update accelerated table partition assignments by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9378\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9378</a></li>\n<li class=\"\">refactor(Cayenne): route all write orchestration through <code>CayenneDataSink</code> by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9402\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9402</a></li>\n<li class=\"\">Refactor benchmark to use QueryExecutor trait by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9418\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9418</a></li>\n<li class=\"\">feat: Add spidapter build and release workflow by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9427\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9427</a></li>\n<li class=\"\">Testoperator: add support for api-key when connecting to external spice instance by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9421\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9421</a></li>\n<li class=\"\">Initial implementation of Ducklake catalog &amp; data connectors by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9083\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9083</a></li>\n<li class=\"\">Require <code>aws_lc_rs</code> since jsonwebtoken upgrade by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9426\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9426</a></li>\n<li class=\"\">feat: Add spidapter tool by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9425\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9425</a></li>\n<li class=\"\">Add release notes for 1.11.2 patch release by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9430\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9430</a></li>\n<li class=\"\">feat(spidapter): integrate system-adapter-protocol with SCP provisioning by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9434\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9434</a></li>\n<li class=\"\">Add DuckLake TPCH E2E workflow and federated Spicepod configuration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9431\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9431</a></li>\n<li class=\"\">fix(spidapter): use Flight handshake auth instead of x-api-key header by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9435\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9435</a></li>\n<li class=\"\">[spidapter] Keep only what sparks joy by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9439\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9439</a></li>\n<li class=\"\">Refactor binary operator balancing by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9424\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9424</a></li>\n<li class=\"\">feat: Add Iceberg DDL support (CREATE TABLE / DROP TABLE) for default catalog override by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9440\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9440</a></li>\n<li class=\"\">Fix Flight SQL schema consistency: expand view types and verify field names by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9438\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9438</a></li>\n<li class=\"\">Update spidapter for new system-adapter-protocol by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9442\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9442</a></li>\n<li class=\"\">docs: fix typos and syntax errors in style guide and error handling docs by <a href=\"https://github.com/cluster2600\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@cluster2600</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9445\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9445</a></li>\n<li class=\"\">Add acceleration refresh ingestion metrics (rows_written, bytes_written) by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9461\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9461</a></li>\n<li class=\"\">Refactor(Cayenne): Replace CatalogError and string based errors with Snafu errors by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9403\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9403</a></li>\n<li class=\"\">Replace deprecated claude-3-5-haiku-latest with claude-haiku-4-5 by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9492\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9492</a></li>\n<li class=\"\">Fix #9481: Preserve schema in results cache for empty query results by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9485\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9485</a></li>\n<li class=\"\">Fix partition by serializing by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9474</a></li>\n<li class=\"\">query: reconcile execution stream nullability with logical plan schema by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9486\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9486</a></li>\n<li class=\"\">initial <code>spice-cloud-client</code> crate and <code>spice cloud metrics --app &lt;app-name&gt;</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9480\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9480</a></li>\n<li class=\"\">feat: Return dataset error message in datasets API by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9487\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9487</a></li>\n<li class=\"\">Spicebench by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9447\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9447</a></li>\n<li class=\"\">build(deps): consolidate dependabot dependency updates by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9504\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9504</a></li>\n<li class=\"\">fix(cluster): route non-partitioned accelerated tables in distributed mode by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9508\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9508</a></li>\n<li class=\"\">Enable core scalar UDFs in refresh SQL by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9502\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9502</a></li>\n<li class=\"\">Fix metrics in Spidapter again by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9497\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9497</a></li>\n<li class=\"\">fix(cluster): tolerate Completed-&gt;status propagation race in distributed query handle by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9510\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9510</a></li>\n<li class=\"\">feat: Support distributed ingestion in cayenne catalog by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9506\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9506</a></li>\n<li class=\"\">Fix Cayenne duplicate primary keys after DELETE + UPSERT CDC sequences by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9494\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9494</a></li>\n<li class=\"\">fix(cluster): rewrite table scans inside subqueries for distributed execution by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9518\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9518</a></li>\n<li class=\"\">fix: Set catalog mode to readwritecreate in spidapter by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9519\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9519</a></li>\n<li class=\"\">Upgrade AWS SDK crates &amp; set APN user-agent in AWS SDK credential bridge by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8328\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8328</a></li>\n<li class=\"\">feat(runtime): add runtime ready_state on_registration semantics by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9522\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9522</a></li>\n<li class=\"\">fix: Add spidapter post-setup retries by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9526\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9526</a></li>\n<li class=\"\">Make partition discovery more robust and make initialization non-blocking by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9499\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9499</a></li>\n<li class=\"\">Make <code>lint-rust-fix</code> support targeted packages and features by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9511\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9511</a></li>\n<li class=\"\">Handle new Cloud SCP API by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9532\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9532</a></li>\n<li class=\"\">Refactor and simplify streaming benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9405\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9405</a></li>\n<li class=\"\">fix: ensure spidapter only increments attempts on failures by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9534\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9534</a></li>\n<li class=\"\">feat: Support specifying app resources in spidapter by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9536\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9536</a></li>\n<li class=\"\">test(runtime): Spice Cayenne DDL integration test by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9535\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9535</a></li>\n<li class=\"\">fix: Handle schema evolution mismatch errors during data refresh by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9527\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9527</a></li>\n<li class=\"\">fix: resolve clippy lint warnings by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9547\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9547</a></li>\n<li class=\"\"><code>pr-builds --tag &lt;TAG&gt;</code> for build_and_release.yml by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9507\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9507</a></li>\n<li class=\"\">Add <code>--output</code> flag to <code>spice login</code> with env/json/keychain modes by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9541\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9541</a></li>\n<li class=\"\">Don't use 'PartitionedTableScanRewrite' in async distributed query by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9548\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9548</a></li>\n<li class=\"\">feat(spidapter): add local backend mode with single executor by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9531\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9531</a></li>\n<li class=\"\">support chat template in HF by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9543\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9543</a></li>\n<li class=\"\">fix(cayenne): stream PK retention deletes and run OOM regression in CI by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9533\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9533</a></li>\n<li class=\"\">cayenne: Staged append writes to prevent partial writes and data loss on stream error by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9491\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9491</a></li>\n<li class=\"\"><code>AcceleratedTable::scan</code> use <code>FederatedTable::scan</code> when <code>ClusterRole::Scheduler</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9550\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9550</a></li>\n<li class=\"\">Upgrade to delta-kernel-rs v0.18.2 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9528\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9528</a></li>\n<li class=\"\">Run cayenne tests as part of PR CI by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9554\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9554</a></li>\n<li class=\"\">Upgrade to DataFusion v52.2.0 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9419\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9419</a></li>\n<li class=\"\">Remove Snapshot Compaction + Add snapshot existence check by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9523\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9523</a></li>\n<li class=\"\">Update dependencies by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9566\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9566</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9565\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9565</a></li>\n<li class=\"\">fix: Compare Cayenne table configuration on startup by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9529\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9529</a></li>\n<li class=\"\">Make <code>Refresh::refresh_sql</code> more robust to alterations over time. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9549\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9549</a></li>\n<li class=\"\">fix: Update datafusion-table-providers dependency to latest revision by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9574\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9574</a></li>\n<li class=\"\">Unset <code>AWS_ENDPOINT_URL</code> when empty by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9575\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9575</a></li>\n<li class=\"\">fix: allow BytesProcessedExec repartitioning for unordered input by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9540\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9540</a></li>\n<li class=\"\">Sanitize DataFusion errors by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9530\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9530</a></li>\n<li class=\"\">Add conditional logging for partition assignments by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9577\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9577</a></li>\n<li class=\"\">use 'properly early exit on SIGTERM' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9573\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9573</a></li>\n<li class=\"\">Update datafusion to 52.2.0 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9582\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9582</a></li>\n<li class=\"\">Ensure we query one and only one partition per request by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9416\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9416</a></li>\n<li class=\"\">feat: Add support for Spicepod version v2 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9583\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9583</a></li>\n<li class=\"\">[SpiceDQ] Improve error messages; Avoid race condition on allocate_initial_partitions. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9579\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9579</a></li>\n<li class=\"\">Update ballista dependencies to latest 52.0.0 revision by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9581\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9581</a></li>\n<li class=\"\">Fix Databricks spark_connect mode always disabled by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9586\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9586</a></li>\n<li class=\"\">Support partitioning in Arrow accelerator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9571\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9571</a></li>\n<li class=\"\">Fix <code>spice query</code> CLI response deserialization by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9588\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9588</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9584\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9584</a></li>\n<li class=\"\">fix: Share RuntimeEnv across Cayenne read/write/delete paths for targeted list_files_cache invalidation by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9589\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9589</a></li>\n<li class=\"\">feat: Add file:// state_location support for async queries scheduler by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9590\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9590</a></li>\n<li class=\"\">Update endgame links by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9598\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9598</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/spiceai/spiceai/compare/v1.11.2...v2.0.0-rc.1\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/compare/v1.11.2...v2.0.0-rc.1</a></p>",
            "url": "https://spiceai.org/releases/v2.0-rc.1",
            "title": "Spice v2.0-rc.1 (Mar 4, 2026)",
            "summary": "Announcing the release of Spice v2.0-rc.1! 🚀",
            "date_modified": "2026-03-04T00:00:00.000Z",
            "author": {
                "name": "Sergei Grebnov",
                "url": "https://github.com/sgrebnov"
            },
            "tags": [
                "release",
                "distributed-query",
                "cayenne",
                "datafusion",
                "ducklake",
                "gcp",
                "Rust",
                "data-connector"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.1",
            "content_html": "<p>Announcing the release of Spice v1.11.1! 🛠️</p>\n<p>v1.11.1 is a patch release improving <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cayenne</a> accelerator reliability and performance, enhancing <strong>DynamoDB Streams</strong> and <strong>HTTP</strong> data connectors, and fixing issues in <strong>Federated Task History</strong> and <strong>FlightSQL</strong>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1111\">What's New in v1.11.1<a href=\"https://spiceai.org/releases/v1.11.1#whats-new-in-v1111\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.1\" title=\"Direct link to What's New in v1.11.1\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-cayenne-accelerator-improvements\">Spice Cayenne Accelerator Improvements<a href=\"https://spiceai.org/releases/v1.11.1#spice-cayenne-accelerator-improvements\" class=\"hash-link\" aria-label=\"Direct link to Spice Cayenne Accelerator Improvements\" title=\"Direct link to Spice Cayenne Accelerator Improvements\" translate=\"no\">​</a></h3>\n<p>This release includes stability and performance fixes for the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cayenne</a> accelerator:</p>\n<ul>\n<li class=\"\"><strong>Row-based Deletion Logic</strong>: Refactored row-based delete operations to use per-file deletion vectors with <code>RoaringBitmap</code>. Deletion scans now use Vortex-native streaming with filter pushdown and project only row indices, achieving zero data I/O for delete operations.</li>\n<li class=\"\"><strong>Constraints &amp; On Conflict</strong>: <code>constraints</code> and <code>on_conflict</code> configurations are now automatically inferred from federated table metadata, enabling datasets like <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB</a> to work without explicitly defining <code>primary_key</code> in the Spicepod.</li>\n<li class=\"\"><strong>Partitioned Table Deletion</strong>: Fixed an issue where <code>DELETE</code> operations on partitioned Cayenne tables failed.</li>\n<li class=\"\"><strong>Data Integrity</strong>: Fixed two issues with acceleration snapshot handling: protected snapshots are now included in conflict detection keyset scans (preventing duplicate key creation during append refresh), and snapshot cleanup no longer deletes protected snapshots.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"data-connector-improvements\">Data Connector Improvements<a href=\"https://spiceai.org/releases/v1.11.1#data-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to Data Connector Improvements\" title=\"Direct link to Data Connector Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>DynamoDB Streams</strong>: Added automatic re-bootstrapping when the stream lag exceeds DynamoDB shard retention (24h). Configurable via the new <code>lag_exceeds_shard_retention_behavior</code> parameter with values <code>error</code> (default), <code>ready_before_load</code>, or <code>ready_after_load</code>.</li>\n<li class=\"\"><strong>HTTP Connector</strong>: HTTP responses now include a <code>response_status</code> column (UInt16). 4xx responses (e.g., 404 Not Found) are treated as valid queryable data and cached normally. 5xx responses are retried with backoff, returned to the user, but excluded from the cache to prevent transient server errors from polluting cached results.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"other-improvements\">Other Improvements<a href=\"https://spiceai.org/releases/v1.11.1#other-improvements\" class=\"hash-link\" aria-label=\"Direct link to Other Improvements\" title=\"Direct link to Other Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Added retries for <code>SnapshotManager</code> operations and general snapshot reliability improvements.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed handling of timestamp precision mismatches in <a href=\"https://spiceai.org/docs/features/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">query result caching</a>.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed a double projection issue in federated task history queries that caused <code>Schema error: project index out of bounds</code> errors in cluster mode.</li>\n<li class=\"\"><strong>Developer Experience</strong>: Added cookie middleware support to the <a href=\"https://spiceai.org/docs/components/data-connectors/flightsql\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">FlightSQL</a> data connector.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.1#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.1#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.1#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates. The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.1#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.1, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.11.1</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.11.1</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.1</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.1#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Cayenne: row-based delete logic improvements by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9237\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9237</a></li>\n<li class=\"\">Proper support for <code>constraints</code>/<code>on_conflict</code> in Cayenne Acceleration by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9335\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9335</a></li>\n<li class=\"\">Retries for SnapshotManager by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9334\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9334</a></li>\n<li class=\"\">fix(cayenne): Include protected snapshots in conflict detection keyset scan by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9176\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9176</a></li>\n<li class=\"\">fix(cayenne): Fix data loss by preserving protected snapshots during cleanup by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9182\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9182</a></li>\n<li class=\"\">Simplify retention filter expressions before pushdown by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9244\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9244</a></li>\n<li class=\"\">Fix test_retention_complex_sql by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9270\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9270</a></li>\n<li class=\"\">runtime: avoid double projection in federated task history by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9326\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9326</a></li>\n<li class=\"\">feat(http): Return all HTTP responses as data, skip caching 5xx by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9313\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9313</a></li>\n<li class=\"\">Snapshots Improvements by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9318\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9318</a></li>\n<li class=\"\">fix(caching): Handle timestamp precision mismatch and add more tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9315\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9315</a></li>\n<li class=\"\">DynamoDB Streams Table Rebootstrapping by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9305\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9305</a></li>\n<li class=\"\">Fix Cayenne partitioned table deletion support by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9267\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9267</a></li>\n<li class=\"\">FlightSQL: add cookie middleware support by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9282\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9282</a></li>\n<li class=\"\">Apply <code>SchemaCastScanExec</code> before applying changes in <code>process_upsert_batch</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9297\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9297</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.11.1",
            "title": "Spice v1.11.1 (Feb 10, 2026)",
            "summary": "Announcing the release of Spice v1.11.1! 🛠️",
            "date_modified": "2026-02-10T00:00:00.000Z",
            "author": {
                "name": "Jack Eadie",
                "url": "https://github.com/Jeadie"
            },
            "tags": [
                "release",
                "cayenne",
                "data-connector",
                "dynamodb",
                "FlightSQL"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.0",
            "content_html": "<p>Announcing the release of Spice v1.11.0-stable! ⚡</p>\n<p>In Spice v1.11.0, <strong>Spice Cayenne reaches Beta status</strong> with acceleration snapshots, Key-based deletion vectors, and Amazon S3 Express One Zone support. <strong>DataFusion has been upgraded to v51</strong> along with <strong>Arrow v57.2</strong>, and <strong>iceberg-rust v0.8.0</strong>. v1.11 adds several <strong>DynamoDB &amp; DynamoDB Streams improvements</strong> such as JSON nesting, and adds significant improvements to <strong>Distributed Query</strong> with active-active schedulers and mTLS for enterprise-grade high-availability and secure cluster communication.</p>\n<p>This release also adds new <strong>SMB, NFS, and ScyllaDB Data Connectors (Alpha)</strong>, <strong>Prepared Statements with full SDK support</strong> (gospice, spice-rs, spice-dotnet, spice-java, spice.js, and spicepy), <strong>Google LLM Support</strong> for expanded AI inference capabilities, and significant improvements to caching, observability, and Hash Indexing for Arrow Acceleration.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1110\">What's New in v1.11.0<a href=\"https://spiceai.org/releases/v1.11.0#whats-new-in-v1110\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.0\" title=\"Direct link to What's New in v1.11.0\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-cayenne-accelerator-reaches-beta\">Spice Cayenne Accelerator Reaches Beta<a href=\"https://spiceai.org/releases/v1.11.0#spice-cayenne-accelerator-reaches-beta\" class=\"hash-link\" aria-label=\"Direct link to Spice Cayenne Accelerator Reaches Beta\" title=\"Direct link to Spice Cayenne Accelerator Reaches Beta\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cayenne</a> has been promoted to Beta status with acceleration snapshots support and numerous performance and stability improvements.</p>\n<p><strong>Key Enhancements</strong>:</p>\n<ul>\n<li class=\"\"><strong>Key-based Deletion Vectors</strong>: Improved deletion vector support using key-based lookups for more efficient data management and faster delete operations. Key-based deletion vectors are more memory-efficient than positional vectors for sparse deletions.</li>\n<li class=\"\"><strong>S3 Express One Zone Support</strong>: Store Cayenne data files in <a href=\"https://aws.amazon.com/s3/storage-classes/express-one-zone/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Express One Zone</a> for single-digit millisecond latency, ideal for latency-sensitive query workloads that require persistence.</li>\n</ul>\n<p><strong>Improved Reliability</strong>:</p>\n<ul>\n<li class=\"\">Resolved <code>FuturesUnordered</code> reentrant drop crashes</li>\n<li class=\"\">Fixed memory growth issues related to Vortex metrics allocation</li>\n<li class=\"\">Metadata catalog now properly respects <code>cayenne_file_path</code> location</li>\n<li class=\"\">Added warnings for unparseable configuration values</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v51-upgrade\">DataFusion v51 Upgrade<a href=\"https://spiceai.org/releases/v1.11.0#datafusion-v51-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v51 Upgrade\" title=\"Direct link to DataFusion v51 Upgrade\" translate=\"no\">​</a></h3>\n<p><a href=\"https://datafusion.apache.org/blog/2025/11/25/datafusion-51.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion has been upgraded to v51</a>, bringing significant performance improvements, new SQL features, and enhanced observability.</p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https://datafusion.apache.org/blog/images/datafusion-51.0.0/performance_over_time_clickbench.png\" alt=\"DataFusion v51 ClickBench Performance\" class=\"img_ev3q\"></p>\n<p><strong>Performance Improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>Faster <code>CASE</code> Expression Evaluation</strong>: Expressions now short-circuit earlier, reuse partial results, and avoid unnecessary scattering, speeding up common ETL patterns</li>\n<li class=\"\"><strong>Better Defaults for Remote Parquet Reads</strong>: DataFusion now fetches the last 512KB of Parquet files by default, typically avoiding 2 I/O requests per file</li>\n<li class=\"\"><strong>Faster Parquet Metadata Parsing</strong>: Leverages Arrow 57's new thrift metadata parser for up to 4x faster metadata parsing</li>\n</ul>\n<p><strong>New SQL Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQL Pipe Operators</strong>: Support for <code>|&gt;</code> syntax for inline transforms</li>\n<li class=\"\"><strong><code>DESCRIBE &lt;query&gt;</code></strong>: Returns the schema of any query without executing it</li>\n<li class=\"\"><strong>Named Arguments in SQL Functions</strong>: PostgreSQL-style <code>param =&gt; value</code> syntax for scalar, aggregate, and window functions</li>\n<li class=\"\"><strong>Decimal32/Decimal64 Support</strong>: New Arrow types supported including aggregations like <code>SUM</code>, <code>AVG</code>, and <code>MIN/MAX</code></li>\n</ul>\n<p>Example pipe operator:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> t</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">|</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> a </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">|</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">ORDER</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">BY</span><span class=\"token plain\"> b</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">|</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">5</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Improved Observability</strong>:</p>\n<ul>\n<li class=\"\"><strong>Improved <code>EXPLAIN ANALYZE</code> Metrics</strong>: New metrics including <code>output_bytes</code>, <code>selectivity</code> for filters, <code>reduction_factor</code> for aggregates, and detailed timing breakdowns</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"arrow-572-upgrade\">Arrow 57.2 Upgrade<a href=\"https://spiceai.org/releases/v1.11.0#arrow-572-upgrade\" class=\"hash-link\" aria-label=\"Direct link to Arrow 57.2 Upgrade\" title=\"Direct link to Arrow 57.2 Upgrade\" translate=\"no\">​</a></h3>\n<p><a href=\"https://arrow.apache.org/blog/2025/10/30/arrow-rs-57.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache Arrow has been upgraded to v57.2</a>, bringing major performance improvements and new capabilities.</p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https://arrow.apache.org/img/rust-parquet-metadata/results.png\" alt=\"Arrow 57 Parquet Metadata Parsing Performance\" class=\"img_ev3q\"></p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>4x Faster Parquet Metadata Parsing</strong>: 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</li>\n<li class=\"\"><strong>Parquet Variant Support</strong>: Experimental support for reading and writing the new <a href=\"https://github.com/apache/parquet-format/blob/master/VariantEncoding.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Parquet Variant type</a> for semi-structured data, including shredded variant values</li>\n<li class=\"\"><strong>Parquet Geometry Support</strong>: Read and write support for Parquet Geometry types (<code>GEOMETRY</code> and <code>GEOGRAPHY</code>) with <code>GeospatialStatistics</code></li>\n<li class=\"\"><strong>New <code>arrow-avro</code> Crate</strong>: Efficient conversion between Apache Avro and Arrow <code>RecordBatch</code>es with projection pushdown and vectorized execution support</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-connector-enhancements\">DynamoDB Connector Enhancements<a href=\"https://spiceai.org/releases/v1.11.0#dynamodb-connector-enhancements\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Connector Enhancements\" title=\"Direct link to DynamoDB Connector Enhancements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Added JSON nesting for DynamoDB Streams</li>\n<li class=\"\">Improved batch deletion handling</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distributed-query-improvements\">Distributed Query Improvements<a href=\"https://spiceai.org/releases/v1.11.0#distributed-query-improvements\" class=\"hash-link\" aria-label=\"Direct link to Distributed Query Improvements\" title=\"Direct link to Distributed Query Improvements\" translate=\"no\">​</a></h3>\n<p><strong>High Availability Clusters</strong>: Spice now supports running multiple active schedulers in an active/active configuration for production deployments. This eliminates the scheduler as a single point of failure and enables graceful handling of node failures.</p>\n<ul>\n<li class=\"\">Multiple schedulers run simultaneously, each capable of accepting queries</li>\n<li class=\"\">Schedulers coordinate via a shared S3-compatible object store</li>\n<li class=\"\">Executors discover all schedulers automatically</li>\n<li class=\"\">A load balancer distributes client queries across schedulers</li>\n</ul>\n<p>Example HA configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">scheduler</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">state_location</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">cluster</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">region</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> us</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">east</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1</span><br></span></code></pre></div></div>\n<p><strong>mTLS Verification</strong>: Cluster communication between scheduler and executors now supports mutual TLS verification for enhanced security.</p>\n<p><strong>Credential Propagation</strong>: S3, ABFS, and GCS credentials are now automatically propagated to executors in cluster mode, enabling access to cloud storage across the distributed query cluster.</p>\n<p><strong>Improved Resilience</strong>:</p>\n<ul>\n<li class=\"\">Exponential backoff for scheduler disconnection recovery</li>\n<li class=\"\">Increased gRPC message size limit from 16MB to 100MB for large query plans</li>\n<li class=\"\">HTTP health endpoint for cluster executors</li>\n<li class=\"\">Automatic executor role inference when <code>--scheduler-address</code> is provided</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"iceberg-rust-v080-upgrade\">iceberg-rust v0.8.0 Upgrade<a href=\"https://spiceai.org/releases/v1.11.0#iceberg-rust-v080-upgrade\" class=\"hash-link\" aria-label=\"Direct link to iceberg-rust v0.8.0 Upgrade\" title=\"Direct link to iceberg-rust v0.8.0 Upgrade\" translate=\"no\">​</a></h3>\n<p>Spice has been upgraded to <a href=\"https://github.com/apache/iceberg-rust/releases/tag/v0.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">iceberg-rust v0.8.0</a>, bringing improved Iceberg table support.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>V3 Metadata Support</strong>: Full support for Iceberg V3 table metadata format</li>\n<li class=\"\"><strong><code>INSERT INTO</code> Partitioned Tables</strong>: DataFusion integration now supports inserting data into partitioned Iceberg tables</li>\n<li class=\"\"><strong>Improved Delete File Handling</strong>: Better support for position and equality delete files, including shared delete file loading and caching</li>\n<li class=\"\"><strong>SQL Catalog Updates</strong>: Implement <code>update_table</code> and <code>register_table</code> for SQL catalog</li>\n<li class=\"\"><strong>S3 Tables Catalog</strong>: Implement <code>update_table</code> for S3 Tables catalog</li>\n<li class=\"\"><strong>Enhanced Arrow Integration</strong>: Convert Arrow schema to Iceberg schema with auto-assigned field IDs, <code>_file</code> column support, and <code>Date32</code> type support</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"acceleration-snapshots\">Acceleration Snapshots<a href=\"https://spiceai.org/releases/v1.11.0#acceleration-snapshots\" class=\"hash-link\" aria-label=\"Direct link to Acceleration Snapshots\" title=\"Direct link to Acceleration Snapshots\" translate=\"no\">​</a></h3>\n<p>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.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Flexible Triggers</strong>: Configure when snapshots are created based on time intervals or stream batch counts</li>\n<li class=\"\"><strong>Automatic Compaction</strong>: Reduce storage overhead by compacting older snapshots (DuckDB only)</li>\n<li class=\"\"><strong>Bootstrap Integration</strong>: Snapshots can reset cache expiry on load for seamless recovery (DuckDB with Caching refresh mode)</li>\n<li class=\"\"><strong>Smart Creation Policies</strong>: Only create snapshots when data has actually changed</li>\n</ul>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_dataset</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_trigger</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> time_interval</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_trigger_threshold</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1h</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_creation_policy</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> on_changed</span><br></span></code></pre></div></div>\n<p><strong>Snapshots API and CLI</strong>: New API endpoints and CLI commands for managing snapshots programmatically.</p>\n<p>CLI Commands:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># List all snapshots for a dataset</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice acceleration snapshots taxi_trips</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Get details of a specific snapshot</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice acceleration snapshot taxi_trips </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">3</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Set the current snapshot for rollback (requires runtime restart)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice acceleration set-snapshot taxi_trips </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">2</span><br></span></code></pre></div></div>\n<p>HTTP API Endpoints:</p>\n<table><thead><tr><th>Method</th><th>Endpoint</th><th>Description</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/datasets/{dataset}/acceleration/snapshots</code></td><td>List all snapshots for a dataset</td></tr><tr><td>GET</td><td><code>/v1/datasets/{dataset}/acceleration/snapshots/{id}</code></td><td>Get details of a specific snapshot</td></tr><tr><td>POST</td><td><code>/v1/datasets/{dataset}/acceleration/snapshots/current</code></td><td>Set the current snapshot for rollback</td></tr></tbody></table>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration/snapshots\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Acceleration Snapshots Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"caching-acceleration-mode-improvements\">Caching Acceleration Mode Improvements<a href=\"https://spiceai.org/releases/v1.11.0#caching-acceleration-mode-improvements\" class=\"hash-link\" aria-label=\"Direct link to Caching Acceleration Mode Improvements\" title=\"Direct link to Caching Acceleration Mode Improvements\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/features/data-acceleration/refresh-modes/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Caching Acceleration Mode</a> introduced in v1.10.0 has received significant performance optimizations and reliability fixes in this release.</p>\n<p><strong>Performance Optimizations</strong>:</p>\n<ul>\n<li class=\"\"><strong>Non-blocking Cache Writes</strong>: 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.</li>\n<li class=\"\"><strong>Batch Cache Writes</strong>: Multiple cache entries are now written in batches rather than individually, significantly improving write throughput for high-volume cache operations.</li>\n</ul>\n<p><strong>Reliability Fixes</strong>:</p>\n<ul>\n<li class=\"\"><strong>Correct SWR Refresh Behavior</strong>: 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.</li>\n<li class=\"\"><strong>Deduplicated Refresh Requests</strong>: Fixed an issue where JSON array responses could trigger multiple redundant refresh operations. Refresh requests are now properly deduplicated.</li>\n<li class=\"\"><strong>Fixed Cache Hit Detection</strong>: Resolved an issue where queries that didn't include <code>fetched_at</code> in their projection would always result in cache misses, even when cached data was available.</li>\n<li class=\"\"><strong>Unfiltered Query Optimization</strong>: <code>SELECT *</code> queries without filters now return cached data directly without unnecessary filtering overhead.</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration/refresh-modes/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Caching Acceleration Mode Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"prepared-statements\">Prepared Statements<a href=\"https://spiceai.org/releases/v1.11.0#prepared-statements\" class=\"hash-link\" aria-label=\"Direct link to Prepared Statements\" title=\"Direct link to Prepared Statements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Query Performance and Security</strong>: Spice now supports prepared statements, enabling parameterized queries that improve both performance through query plan caching and security by preventing SQL injection attacks.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Query Plan Caching</strong>: Prepared statements cache query plans, reducing planning overhead for repeated queries</li>\n<li class=\"\"><strong>SQL Injection Prevention</strong>: Parameters are safely bound, preventing SQL injection vulnerabilities</li>\n<li class=\"\"><strong>Arrow Flight SQL Support</strong>: Full prepared statement support via <a href=\"https://arrow.apache.org/docs/format/FlightSql.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Arrow Flight SQL</a> protocol</li>\n</ul>\n<p><strong>SDK Support</strong>:</p>\n<table><thead><tr><th>SDK</th><th>Support</th><th>Min Version</th><th>Method</th></tr></thead><tbody><tr><td><a href=\"https://github.com/spiceai/gospice\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">gospice</a> (Go)</td><td>✅ Full</td><td>v8.0.0+</td><td><code>SqlWithParams()</code> with typed constructors (<code>Int32Param</code>, <code>StringParam</code>, <code>TimestampParam</code>, etc.)</td></tr><tr><td><a href=\"https://github.com/spiceai/spice-rs\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-rs</a> (Rust)</td><td>✅ Full</td><td>v3.0.0+</td><td><code>query_with_params()</code> with <code>RecordBatch</code> parameters</td></tr><tr><td><a href=\"https://github.com/spiceai/spice-dotnet\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-dotnet</a> (.NET)</td><td>✅ Full</td><td>v0.3.0+</td><td><code>QueryWithParams()</code> with typed parameter builders</td></tr><tr><td><a href=\"https://github.com/spiceai/spice-java\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-java</a> (Java)</td><td>✅ Full</td><td>v0.5.0+</td><td><code>queryWithParams()</code> with typed <code>Param</code> constructors (<code>Param.int64()</code>, <code>Param.string()</code>, etc.)</td></tr><tr><td><a href=\"https://github.com/spiceai/spice.js\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice.js</a> (JavaScript)</td><td>✅ Full</td><td>v3.1.0+</td><td><code>query()</code> with parameterized query support</td></tr><tr><td><a href=\"https://github.com/spiceai/spicepy\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spicepy</a> (Python)</td><td>✅ Full</td><td>v3.1.0+</td><td><code>query()</code> with parameterized query support</td></tr></tbody></table>\n<p><strong>Example (Go)</strong>:</p>\n<div class=\"language-go codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-go codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">import</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"github.com/spiceai/gospice/v8\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">client</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">_</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">NewClient</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">defer</span><span class=\"token plain\"> client</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">Close</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">// Parameterized query with typed parameters</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">_</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> client</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">SqlWithParams</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">ctx</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"SELECT * FROM products WHERE price &gt; $1 AND category = $2\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">Float64Param</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10.0</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">StringParam</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"electronics\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><br></span></code></pre></div></div>\n<p><strong>Example (Java)</strong>:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.SpiceClient;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.Param;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import org.apache.arrow.adbc.core.ArrowReader;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">try (SpiceClient client = new SpiceClient()) {</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With automatic type inference</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM products WHERE price &gt; $1 AND category = $2\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        10.0, \"electronics\");</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With explicit typed parameters</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM products WHERE price &gt; $1 AND category = $2\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.float64(10.0),</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.string(\"electronics\"));</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">}</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/query-federation/parameterized-queries\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Parameterized Queries Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-java-sdk-v050\">Spice Java SDK v0.5.0<a href=\"https://spiceai.org/releases/v1.11.0#spice-java-sdk-v050\" class=\"hash-link\" aria-label=\"Direct link to Spice Java SDK v0.5.0\" title=\"Direct link to Spice Java SDK v0.5.0\" translate=\"no\">​</a></h3>\n<p><strong>Parameterized Query Support for Java</strong>: The <a href=\"https://github.com/spiceai/spice-java\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Java SDK</a> v0.5.0 introduces parameterized queries using ADBC (Arrow Database Connectivity), providing a safer and more efficient way to execute queries with dynamic parameters.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQL Injection Prevention</strong>: Parameters are safely bound, preventing SQL injection vulnerabilities</li>\n<li class=\"\"><strong>Automatic Type Inference</strong>: Java types are automatically mapped to Arrow types (e.g., <code>double</code> → <code>Float64</code>, <code>String</code> → <code>Utf8</code>)</li>\n<li class=\"\"><strong>Explicit Type Control</strong>: Use the new <code>Param</code> class with typed factory methods (<code>Param.int64()</code>, <code>Param.string()</code>, <code>Param.decimal128()</code>, etc.) for precise control over Arrow types</li>\n<li class=\"\"><strong>Updated Dependencies</strong>: Apache Arrow Flight SQL upgraded to 18.3.0, plus new ADBC driver support</li>\n</ul>\n<p><strong>Example</strong>:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.SpiceClient;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.Param;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">try (SpiceClient client = new SpiceClient()) {</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With automatic type inference</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM taxi_trips WHERE trip_distance &gt; $1 LIMIT 10\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        5.0);</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With explicit typed parameters for precise control</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM orders WHERE order_id = $1 AND amount &gt;= $2\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.int64(12345),</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.decimal128(new BigDecimal(\"99.99\"), 10, 2));</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">}</span><br></span></code></pre></div></div>\n<p><strong>Maven</strong>:</p>\n<div class=\"language-xml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-xml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">dependency</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">groupId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\">ai.spice</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">groupId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">artifactId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\">spiceai</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">artifactId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">version</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\">0.5.0</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">version</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">dependency</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://github.com/spiceai/spice-java\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Java SDK Repository</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"google-llm-support\">Google LLM Support<a href=\"https://spiceai.org/releases/v1.11.0#google-llm-support\" class=\"hash-link\" aria-label=\"Direct link to Google LLM Support\" title=\"Direct link to Google LLM Support\" translate=\"no\">​</a></h3>\n<p><strong>Expanded AI Provider Support</strong>: Spice now supports Google embedding and chat models via the Google AI provider, expanding the available LLM options for AI inference workloads alongside existing providers like OpenAI, Anthropic, and AWS Bedrock.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Google Chat Models</strong>: Access Google's Gemini models for chat completions</li>\n<li class=\"\"><strong>Google Embeddings</strong>: Generate embeddings using Google's text embedding models</li>\n<li class=\"\"><strong>Unified API</strong>: Use the same OpenAI-compatible API endpoints for all LLM providers</li>\n</ul>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">models</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> google</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">gemini</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">2.0</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">flash</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> gemini</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">google_api_key</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">GOOGLE_API_KEY</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> google</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">text</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">embedding</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">004</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> google_embeddings</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">google_api_key</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">GOOGLE_API_KEY</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://docs.spiceai.org/components/models/google\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Google LLM Documentation</a> (see <a href=\"https://github.com/spiceai/docs/pull/1286\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">docs PR #1286</a>).</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"url-tables\">URL Tables<a href=\"https://spiceai.org/releases/v1.11.0#url-tables\" class=\"hash-link\" aria-label=\"Direct link to URL Tables\" title=\"Direct link to URL Tables\" translate=\"no\">​</a></h3>\n<p>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.</p>\n<p><strong>Supported Patterns</strong>:</p>\n<ul>\n<li class=\"\"><strong>Single files</strong>: <code>SELECT * FROM 's3://bucket/data.parquet'</code></li>\n<li class=\"\"><strong>Directories/prefixes</strong>: <code>SELECT * FROM 's3://bucket/data/'</code></li>\n<li class=\"\"><strong>Glob patterns</strong>: <code>SELECT * FROM 's3://bucket/year=*/month=*/data.parquet'</code></li>\n</ul>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\">Automatic file format detection (Parquet, CSV, JSON, etc.)</li>\n<li class=\"\">Hive-style partition inference with filter pushdown</li>\n<li class=\"\">Schema inference from files</li>\n<li class=\"\">Works with both SQL and DataFrame APIs</li>\n</ul>\n<p>Example with hive partitioning:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Partitions are automatically inferred from paths</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'s3://bucket/data/'</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">year</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'2024'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">month</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'01'</span><br></span></code></pre></div></div>\n<p>Enable via spicepod.yml:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">url_tables</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cluster-mode-async-query-apis-experimental\">Cluster Mode Async Query APIs (experimental)<a href=\"https://spiceai.org/releases/v1.11.0#cluster-mode-async-query-apis-experimental\" class=\"hash-link\" aria-label=\"Direct link to Cluster Mode Async Query APIs (experimental)\" title=\"Direct link to Cluster Mode Async Query APIs (experimental)\" translate=\"no\">​</a></h3>\n<p>New asynchronous query APIs for long-running queries in cluster mode:</p>\n<ul>\n<li class=\"\"><strong><code>/v1/queries</code> endpoint</strong>: Submit queries and retrieve results asynchronously</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"opentelemetry-improvements\">OpenTelemetry Improvements<a href=\"https://spiceai.org/releases/v1.11.0#opentelemetry-improvements\" class=\"hash-link\" aria-label=\"Direct link to OpenTelemetry Improvements\" title=\"Direct link to OpenTelemetry Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Unified Telemetry Endpoint</strong>: OTel metrics ingestion has been consolidated to the Flight port (50051), simplifying deployment by removing the separate OTel port (50052). The push-based metrics exporter continues to support integration with OpenTelemetry collectors.</p>\n<blockquote>\n<p><strong>Note</strong>: This is a breaking change. Update your configurations if you were using the dedicated OTel port 50052. Internal cluster communication now uses port 50052 exclusively.</p>\n</blockquote>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"observability-improvements\">Observability Improvements<a href=\"https://spiceai.org/releases/v1.11.0#observability-improvements\" class=\"hash-link\" aria-label=\"Direct link to Observability Improvements\" title=\"Direct link to Observability Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Enhanced Dashboards</strong>: Updated Grafana and Datadog example dashboards with:</p>\n<ul>\n<li class=\"\">Snapshot monitoring widgets</li>\n<li class=\"\">Improved accelerated datasets section</li>\n<li class=\"\">Renamed ingestion lag charts for clarity</li>\n</ul>\n<p><strong>Additional Histogram Buckets</strong>: Added more buckets to histogram metrics for better latency distribution visibility.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/monitoring\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Monitoring Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"hash-indexing-for-arrow-acceleration-experimental\">Hash Indexing for Arrow Acceleration (experimental)<a href=\"https://spiceai.org/releases/v1.11.0#hash-indexing-for-arrow-acceleration-experimental\" class=\"hash-link\" aria-label=\"Direct link to Hash Indexing for Arrow Acceleration (experimental)\" title=\"Direct link to Hash Indexing for Arrow Acceleration (experimental)\" translate=\"no\">​</a></h3>\n<p>Arrow-based accelerations now support hash indexing for faster point lookups on equality predicates. Hash indexes provide O(1) average-case lookup performance for columns with high cardinality.</p>\n<p><strong>Features</strong>:</p>\n<ul>\n<li class=\"\">Primary key hash index support</li>\n<li class=\"\">Secondary index support for non-primary key columns</li>\n<li class=\"\">Composite key support with proper null value handling</li>\n</ul>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> postgres</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">users</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> users</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> arrow</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">primary_key</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> user_id</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(tenant_id, user_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> unique  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Composite hash index</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/next/features/data-acceleration/hash-index\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Hash Index Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"smb-and-nfs-data-connectors\">SMB and NFS Data Connectors<a href=\"https://spiceai.org/releases/v1.11.0#smb-and-nfs-data-connectors\" class=\"hash-link\" aria-label=\"Direct link to SMB and NFS Data Connectors\" title=\"Direct link to SMB and NFS Data Connectors\" translate=\"no\">​</a></h3>\n<p><strong>Network-Attached Storage Connectors</strong>: New <a href=\"https://spiceai.org/docs/components/data-connectors\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">data connectors</a> for SMB (Server Message Block) and NFS (Network File System) protocols enable direct federated queries against network-attached storage without requiring data movement to cloud object stores.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SMB Protocol Support</strong>: Connect to Windows file shares and Samba servers with authentication support</li>\n<li class=\"\"><strong>NFS Protocol Support</strong>: Connect to Unix/Linux NFS exports for direct data access</li>\n<li class=\"\"><strong>Federated Queries</strong>: Query Parquet, CSV, JSON, and other file formats directly from network storage with full SQL support</li>\n<li class=\"\"><strong>Acceleration Support</strong>: Accelerate data from SMB/NFS sources using DuckDB, Spice Cayenne, or other accelerators</li>\n</ul>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># SMB share</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> smb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//fileserver/share/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> smb_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">smb_username</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">SMB_USER</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">smb_password</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">SMB_PASS</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># NFS export</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> nfs</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//nfsserver/export/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> nfs_data</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Connectors Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"scylladb-data-connector\">ScyllaDB Data Connector<a href=\"https://spiceai.org/releases/v1.11.0#scylladb-data-connector\" class=\"hash-link\" aria-label=\"Direct link to ScyllaDB Data Connector\" title=\"Direct link to ScyllaDB Data Connector\" translate=\"no\">​</a></h3>\n<p>A new data connector for <a href=\"https://www.scylladb.com/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ScyllaDB</a>, the high-performance NoSQL database compatible with Apache Cassandra. Query ScyllaDB tables directly or accelerate them for faster analytics.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> scylladb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_keyspace.my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> scylla_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/next/components/data-connectors/scylladb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ScyllaDB Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"flight-sql-tls-connection-fixes\">Flight SQL TLS Connection Fixes<a href=\"https://spiceai.org/releases/v1.11.0#flight-sql-tls-connection-fixes\" class=\"hash-link\" aria-label=\"Direct link to Flight SQL TLS Connection Fixes\" title=\"Direct link to Flight SQL TLS Connection Fixes\" translate=\"no\">​</a></h3>\n<p><strong>TLS Connection Support</strong>: Fixed TLS connection issues when using <code>grpc+tls://</code> scheme with Flight SQL endpoints. Added support for custom CA certificate files via the new <code>flightsql_tls_ca_certificate_file</code> parameter.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"developer-experience-improvements\">Developer Experience Improvements<a href=\"https://spiceai.org/releases/v1.11.0#developer-experience-improvements\" class=\"hash-link\" aria-label=\"Direct link to Developer Experience Improvements\" title=\"Direct link to Developer Experience Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Turso v0.3.2 Upgrade</strong>: Upgraded Turso accelerator for improved performance and reliability</li>\n<li class=\"\"><strong>Rust 1.91 Upgrade</strong>: Updated to Rust 1.91 for latest language features and performance improvements</li>\n<li class=\"\"><strong>Spice Cloud CLI</strong>: Added <code>spice cloud</code> CLI commands for cloud deployment management</li>\n<li class=\"\"><strong>Improved Spicepod Schema</strong>: Improved JSON schema generation for better IDE support and validation</li>\n<li class=\"\"><strong>Acceleration Snapshots</strong>: Added configurable <code>snapshots_create_interval</code> for periodic acceleration snapshots independent of refresh cycles</li>\n<li class=\"\"><strong>Tiered Caching with Localpod</strong>: The <a href=\"https://spiceai.org/docs/components/data-connectors/localpod\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Localpod connector</a> now supports <code>caching</code> refresh mode, enabling multi-layer acceleration where a persistent cache feeds a fast in-memory cache</li>\n<li class=\"\"><strong>GitHub Data Connector</strong>: Added workflows and workflow runs support for GitHub repositories</li>\n<li class=\"\"><strong>NDJSON/LDJSON Support</strong>: Added support for Newline Delimited JSON and Line Delimited JSON file formats</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.11.0#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Model Listing</strong>: New functionality to list available models across multiple AI providers</li>\n<li class=\"\"><strong>DuckDB Partitioned Tables</strong>: Primary key constraints now supported in partitioned DuckDB table mode</li>\n<li class=\"\"><strong>Post-refresh Sorting</strong>: New <code>on_refresh_sort_columns</code> parameter for DuckDB enables data ordering after writes</li>\n<li class=\"\"><strong>Improved Install Scripts</strong>: Removed jq dependency and improved cross-platform compatibility</li>\n<li class=\"\"><strong>Better Error Messages</strong>: Improved error messaging for bucket UDF arguments and deprecated OpenAI parameters</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed DynamoDB IAM role authentication with new <code>dynamodb_auth: iam_role</code> parameter</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed cluster executors to use scheduler's <code>temp_directory</code> parameter for shuffle files</li>\n<li class=\"\"><strong>Reliability</strong>: Initialize secrets before object stores in cluster executor mode</li>\n<li class=\"\"><strong>Reliability</strong>: Added page-level retry with backoff for transient GitHub GraphQL errors</li>\n<li class=\"\"><strong>Performance</strong>: Improved statistics for rewritten <code>DistributeFileScanOptimizer</code> plans</li>\n<li class=\"\"><strong>Developer Experience</strong>: Added <code>max_message_size</code> configuration for Flight service</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.0#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.0#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"otel-ingestion-port-change\">OTel Ingestion Port Change<a href=\"https://spiceai.org/releases/v1.11.0#otel-ingestion-port-change\" class=\"hash-link\" aria-label=\"Direct link to OTel Ingestion Port Change\" title=\"Direct link to OTel Ingestion Port Change\" translate=\"no\">​</a></h3>\n<p>OTel ingestion has been moved to the Flight port (50051), removing the separate OTel port 50052. Port 50052 is now used exclusively for internal cluster communication. Update your configurations if you were using the dedicated OTel port.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distributed-query-cluster-mode-requires-mtls\">Distributed Query Cluster Mode Requires mTLS<a href=\"https://spiceai.org/releases/v1.11.0#distributed-query-cluster-mode-requires-mtls\" class=\"hash-link\" aria-label=\"Direct link to Distributed Query Cluster Mode Requires mTLS\" title=\"Direct link to Distributed Query Cluster Mode Requires mTLS\" translate=\"no\">​</a></h3>\n<p>Distributed query cluster mode now requires mTLS for secure communication between cluster nodes. This is a security enhancement to prevent unauthorized nodes from joining the cluster and accessing secrets.</p>\n<p><strong>Migration Steps</strong>:</p>\n<ol>\n<li class=\"\">Generate certificates using <code>spice cluster tls init</code> and <code>spice cluster tls add</code></li>\n<li class=\"\">Update scheduler and executor startup commands with <code>--node-mtls-*</code> arguments</li>\n<li class=\"\">For development/testing, use <code>--allow-insecure-connections</code> to opt out of mTLS</li>\n</ol>\n<p><strong>Renamed CLI Arguments</strong>:</p>\n<table><thead><tr><th>Old Name</th><th>New Name</th></tr></thead><tbody><tr><td><code>--cluster-mode</code></td><td><code>--role</code></td></tr><tr><td><code>--cluster-ca-certificate-file</code></td><td><code>--node-mtls-ca-certificate-file</code></td></tr><tr><td><code>--cluster-certificate-file</code></td><td><code>--node-mtls-certificate-file</code></td></tr><tr><td><code>--cluster-key-file</code></td><td><code>--node-mtls-key-file</code></td></tr><tr><td><code>--cluster-address</code></td><td><code>--node-bind-address</code></td></tr><tr><td><code>--cluster-advertise-address</code></td><td><code>--node-advertise-address</code></td></tr><tr><td><code>--cluster-scheduler-url</code></td><td><code>--scheduler-address</code></td></tr></tbody></table>\n<p><strong>Removed CLI Arguments</strong>:</p>\n<ul>\n<li class=\"\"><code>--cluster-api-key</code>: Replaced by mTLS authentication</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.0#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p><strong>New ScyllaDB Data Connector Recipe</strong>: New recipe demonstrating how to use the ScyllaDB Data Connector. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/scylladb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ScyllaDB Data Connector Recipe</a> for details.</p>\n<p><strong>New SMB Data Connector Recipe</strong>: New recipe demonstrating how to use the SMB Data Connector. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/smb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">SMB Data Connector Recipe</a> for details.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.0#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.0, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.11.0</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.11.0</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.0</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dependencies\">Dependencies<a href=\"https://spiceai.org/releases/v1.11.0#dependencies\" class=\"hash-link\" aria-label=\"Direct link to Dependencies\" title=\"Direct link to Dependencies\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>DataFusion</strong>: Upgraded to v51 (<a href=\"https://datafusion.apache.org/blog/2025/11/25/datafusion-51.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">release notes</a>)</li>\n<li class=\"\"><strong>Arrow</strong>: Upgraded to v57.2 (<a href=\"https://arrow.apache.org/blog/2025/10/30/arrow-rs-57.2.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">release notes</a>)</li>\n<li class=\"\"><strong>iceberg-rust</strong>: Upgraded to v0.8.0 (<a href=\"https://github.com/apache/iceberg-rust/releases/tag/v0.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">release notes</a>)</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.0#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.0#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">OTel exporter for push metrics by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8442\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8442</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8448\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8448</a></li>\n<li class=\"\">Add TPCH append tests to scheduled dispatch workflow by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8451\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8451</a></li>\n<li class=\"\">Add snapshot creation logging by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8469\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8469</a></li>\n<li class=\"\">Fix PeriodicReader panic by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8471\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8471</a></li>\n<li class=\"\">Benchmarks: increase readiness timeout for turso acceleration (TPC-H) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8470\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8470</a></li>\n<li class=\"\">fix: Pin CUDA build actions to commits by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8477\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8477</a></li>\n<li class=\"\">Add Criterion benchmarking to <code>chunking</code> crate. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8431\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8431</a></li>\n<li class=\"\">DuckDB agg pushdown: gate behind accelerator parameter by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8474</a></li>\n<li class=\"\">Rename <code>aggregate_pushdown_optimization</code> -&gt; <code>optimizer_duckdb_aggregate_pushdown</code> by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8485\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8485</a></li>\n<li class=\"\">Handle throttling exception for DynamoDB streams by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8492\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8492</a></li>\n<li class=\"\">docs: Add release notes by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8478\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8478</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8496\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8496</a></li>\n<li class=\"\">Move 'test_projection_pushdown' to <code>runtime-datafusion</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8490\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8490</a></li>\n<li class=\"\">Fix OTEL metrics HTTP exporter client setup by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8489\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8489</a></li>\n<li class=\"\">Update endgame to include new caching accelerator cookbook by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8487\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8487</a></li>\n<li class=\"\">DynamoDB tests and fixes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8491\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8491</a></li>\n<li class=\"\">Align <code>make lint-rust-fix</code> with <code>make lint-rust</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8499\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8499</a></li>\n<li class=\"\">fix: Remove unused Cayenne parameters by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8500\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8500</a></li>\n<li class=\"\">Force task history <code>captured_plan</code> outputs to be captured even if they would be filtered out otherwise by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8501\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8501</a></li>\n<li class=\"\">release: post-release updates by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8503\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8503</a></li>\n<li class=\"\">CI: Fix E2E models dispatch by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8505\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8505</a></li>\n<li class=\"\">Use an isolated Tokio runtime for refresh tasks that is separate from the main query API by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8504\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8504</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8512\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8512</a></li>\n<li class=\"\">Update dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8513\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8513</a></li>\n<li class=\"\">fix: Avoid double hashing cache key by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8511\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8511</a></li>\n<li class=\"\">fix: Eagerly drop cached records for results larger than max by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8516\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8516</a></li>\n<li class=\"\">feat: Support vortex zstd compressor by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8515\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8515</a></li>\n<li class=\"\">warning if column is defined in spicepod but is non-existant by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8498\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8498</a></li>\n<li class=\"\">Return summarized spicepods from /v1/spicepods by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8404\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8404</a></li>\n<li class=\"\">Fix for idle DynamoDB Stream by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8506\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8506</a></li>\n<li class=\"\">Use <code>Datafusion::Plan</code> over <code>Datafusion::Internal</code> for user-facing search errors. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8484\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8484</a></li>\n<li class=\"\">DDB Streams Integration Test + Memory Acceleration + Improved Warning by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8520\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8520</a></li>\n<li class=\"\">Upgrade to gospice v8 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8524\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8524</a></li>\n<li class=\"\">Vortex file format for object store by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8525\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8525</a></li>\n<li class=\"\">docs: Add missing cookbooks to endgame, focus area section by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8527\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8527</a></li>\n<li class=\"\">ListingTableConnector: Drop partition columns that reoccur in file schema by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8519\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8519</a></li>\n<li class=\"\">fix(cluster): initialize secrets before object stores in executor by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8532\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8532</a></li>\n<li class=\"\">Use separate Tokio runtime for SWR refreshes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8530\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8530</a></li>\n<li class=\"\">fix: SQL Results Cache SWR triggers incorrect cache miss metric by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8529\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8529</a></li>\n<li class=\"\">feat: testoperator: OTLP streaming metrics / connect to existing instance / infinite mode / query timeout by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8537\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8537</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8518\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8518</a></li>\n<li class=\"\">Add better attributes for search testing by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8531\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8531</a></li>\n<li class=\"\">fix: Improve Cayenne errors, ID selection for table/partition creation by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8523\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8523</a></li>\n<li class=\"\">Percent-encode Kubernetes secret name path segment by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8522\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8522</a></li>\n<li class=\"\">Initial parameterisation of Search integration tests by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8066\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8066</a></li>\n<li class=\"\">fix: Add warning when multiple partitions are defined for the same table by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8540\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8540</a></li>\n<li class=\"\">Add DuckDB file-mode support for search test parameterization. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8541\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8541</a></li>\n<li class=\"\">fix: Add recursion depth limits to prevent DoS via deeply nested data (DynamoDB + S3 Vectors) by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8544\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8544</a></li>\n<li class=\"\">Remove the <code>clippy::too_many_lines</code> lint by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8549\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8549</a></li>\n<li class=\"\">feat: Add <code>spice cluster tls</code> commands by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8550\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8550</a></li>\n<li class=\"\">Move OTel ingestion to Flight port, remove separate OTel port 50052 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8551\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8551</a></li>\n<li class=\"\">Move verbose tool init messages to trace by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8552\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8552</a></li>\n<li class=\"\">Add SANs to <code>spice cluster tls add</code> certificates by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8554\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8554</a></li>\n<li class=\"\">Add cpu, gpu, and memory to telemetry by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8483\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8483</a></li>\n<li class=\"\">feat: Add workflows and workflow runs to GitHub Data Connector by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8548\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8548</a></li>\n<li class=\"\">Add S3Vectors option for paramterised search tests by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8555\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8555</a></li>\n<li class=\"\">Distributed query: TLS + API key by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8468\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8468</a></li>\n<li class=\"\">Refactor RRF SQL to use LogicalPlanBuilder by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7968\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7968</a></li>\n<li class=\"\">Require mTLS for distributed query cluster mode by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8580\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8580</a></li>\n<li class=\"\">Fix stats for rewritten <code>DistributeFileScanOptimizer</code> plans by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8581\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8581</a></li>\n<li class=\"\">Bump actions/cache from 4.3.0 to 5.0.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8573\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8573</a></li>\n<li class=\"\">Show user-friendly error on empty DDB table by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8586\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8586</a></li>\n<li class=\"\">Add <code>(Deprecated)</code> labels to deprecated <code>spice sql</code> params by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8588\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8588</a></li>\n<li class=\"\">Fix kafka warning when <code>security.protocol</code> is set to <code>PLAINTEXT</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8587\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8587</a></li>\n<li class=\"\">Upgrade dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8593\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8593</a></li>\n<li class=\"\">Release notes for v1.10.1 by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8568\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8568</a></li>\n<li class=\"\">Run search benchmarks twice a week. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8592\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8592</a></li>\n<li class=\"\">Add cayenne data accelerator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8553\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8553</a></li>\n<li class=\"\">SQL allowlist for tools: sql, list_datasets, search, table_schema by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8449\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8449</a></li>\n<li class=\"\">use <code>rstest</code> for llms integration tests by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8566\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8566</a></li>\n<li class=\"\">Post v1.10.1 housekeeping by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8600\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8600</a></li>\n<li class=\"\">Add checklist for SDK publication in end_game.md by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8602\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8602</a></li>\n<li class=\"\">Fix IMAGE_TAG assignment for Docker compatibility by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8599\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8599</a></li>\n<li class=\"\">Modify cluster arguments to spiced for UX review by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8603\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8603</a></li>\n<li class=\"\">Update QA analytics with new release data by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8601\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8601</a></li>\n<li class=\"\">Remove 'tract-core' dependency. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8605\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8605</a></li>\n<li class=\"\">Google embedding and chat models.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8423\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8423</a></li>\n<li class=\"\">Fix test_github_workflows integration test by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8607\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8607</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8604\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8604</a></li>\n<li class=\"\">ci: Upload artifacts to MinIO eagerly after each build step by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8615\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8615</a></li>\n<li class=\"\">fix: SQLite accelerator decimal/date handling by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8606\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8606</a></li>\n<li class=\"\">Configure mTLS for executor-to-executor gRPC connections by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8617\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8617</a></li>\n<li class=\"\">feat: Enable localpod with caching mode accelerator for tiered caching by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8621\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8621</a></li>\n<li class=\"\">Add Cayenne S3 Express One Zone support for data files by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8502\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8502</a></li>\n<li class=\"\">Add snapshot interval for acceleration snapshots by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8627\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8627</a></li>\n<li class=\"\">Add dataset_load_parallelism parameter to spicepod.yml by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8630\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8630</a></li>\n<li class=\"\">Json Nesting for DynamoDB by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8623\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8623</a></li>\n<li class=\"\">Restore deprecated open-telemetry flag in spiced by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8629\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8629</a></li>\n<li class=\"\">Implement batching for Kafka/Debezium + null Decimal handling by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8622\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8622</a></li>\n<li class=\"\">fix: Status field in /v1/datasets &amp; /v1/models by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8633\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8633</a></li>\n<li class=\"\">Add Spice test operator improvements by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8625\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8625</a></li>\n<li class=\"\">Add v1.10.2 release notes by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8640\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8640</a></li>\n<li class=\"\">Align object-store vortex with runtime feature flagging by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8620\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8620</a></li>\n<li class=\"\">Extended LLM &amp; search tests on cron by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8624\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8624</a></li>\n<li class=\"\">Test-operator: emit main metrics as part of load tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8639\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8639</a></li>\n<li class=\"\">Build a local docker image from an existing Spice binary by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8619\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8619</a></li>\n<li class=\"\">fix: Use runtime-rate-control for GitHub Data Connector by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8638\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8638</a></li>\n<li class=\"\">Upgrade dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8655\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8655</a></li>\n<li class=\"\">Bump headers-accept from 0.1.4 to 0.3.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8644\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8644</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8637\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8637</a></li>\n<li class=\"\">Update SECURITY.md - Include v1.10.2 by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8661\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8661</a></li>\n<li class=\"\">Serialize acceleration snapshots with refresh writes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8652\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8652</a></li>\n<li class=\"\">Update AI Installation test to use minilm_l6_v2 by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8659\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8659</a></li>\n<li class=\"\">Fixes for search integration test CI by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8656\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8656</a></li>\n<li class=\"\">fix: Use a GitHub rate controller per auth context by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8662\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8662</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8654\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8654</a></li>\n<li class=\"\">Make E2E Test Release Installation (AI, Local HF model) test more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8666\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8666</a></li>\n<li class=\"\">Fix issue with location predicate for custom S3 endpoints + regression integration test by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8668\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8668</a></li>\n<li class=\"\">fix: Validate schema match before projection pushdown in UnionProjectionPushdownOptimizer by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8669\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8669</a></li>\n<li class=\"\">Proper batch commit for kafka/debezium by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8671\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8671</a></li>\n<li class=\"\">Improve spicepod json schema generation by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8547\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8547</a></li>\n<li class=\"\">Start the anonymous telemetry exporter asynchronously by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8679\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8679</a></li>\n<li class=\"\">fix: Move enforce-pulls to hosted runner by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8686\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8686</a></li>\n<li class=\"\">Update QA analytics with 1.10.2 release data by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8667\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8667</a></li>\n<li class=\"\">fix: Azure does not support suffix range requests by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8685\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8685</a></li>\n<li class=\"\">Remove <code>spicepod-validator</code> cargo build from <code>build-dev</code> target by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8684\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8684</a></li>\n<li class=\"\">fix: Update test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8680\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8680</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8681\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8681</a></li>\n<li class=\"\">SMB and NFS Data Connectors by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8674\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8674</a></li>\n<li class=\"\">Upgrade to openai-async v0.32 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8635\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8635</a></li>\n<li class=\"\">v1.10.3 release notes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8693\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8693</a></li>\n<li class=\"\">Upgrade dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8704\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8704</a></li>\n<li class=\"\">fix: Support NDJSON and LDJSON by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8649\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8649</a></li>\n<li class=\"\">move OpenAI overrides to non-prefixed by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8678\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8678</a></li>\n<li class=\"\">Update Google LLM param: google_dimensions -&gt; dimensions by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8677\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8677</a></li>\n<li class=\"\">Make cluster mTLS optional with insecure flag by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8703\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8703</a></li>\n<li class=\"\">Revert \"fix: Move enforce-pulls to hosted runner (#8686)\" by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8709\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8709</a></li>\n<li class=\"\">Initial 'testoperator run text-to-sql' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8618\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8618</a></li>\n<li class=\"\">Add support for abfss by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8706\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8706</a></li>\n<li class=\"\">Add testoperator TPCH dispatch for ABFS with hierarchical namespace disabled + versioning enabled by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8711\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8711</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8692\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8692</a></li>\n<li class=\"\">cluster: validate --role argument by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8717\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8717</a></li>\n<li class=\"\">Upgrade to Turso v0.3.2 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8716\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8716</a></li>\n<li class=\"\">Rename --insecure to --allow-insecure-connections to be consistent with existing naming by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8720\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8720</a></li>\n<li class=\"\">Remove 'testoperator run http-consistency/http-overhead' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8708\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8708</a></li>\n<li class=\"\">refactor: Remove cluster feature flag by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8718\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8718</a></li>\n<li class=\"\">Docs: Distributed query ADR by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8608\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8608</a></li>\n<li class=\"\">Use <code>model.datasets</code> to allowlist on tools by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8714\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8714</a></li>\n<li class=\"\">cluster: quality of life improvements to starting cluster mode locally by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8719\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8719</a></li>\n<li class=\"\">Docs: Ballista extension ADR by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8616\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8616</a></li>\n<li class=\"\">Improve deprecation messages when going from prefixed -&gt; non-prefixed. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8724\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8724</a></li>\n<li class=\"\">Remove <code>tools</code> from auto-defaults by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8725\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8725</a></li>\n<li class=\"\">Make distinct providers for vector spilling, vector partitioning. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8546\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8546</a></li>\n<li class=\"\">cluster: default scheduler address port by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8728\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8728</a></li>\n<li class=\"\">Add Makefile targets for testoperator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8729\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8729</a></li>\n<li class=\"\"><code>text-to-sql</code> dispatch in testoperator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8705\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8705</a></li>\n<li class=\"\">DR-006: High Availability Distributed Query with Stateless Schedulers by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8721\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8721</a></li>\n<li class=\"\">DR-007: mTLS for Distributed Query Cluster Communication by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8722\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8722</a></li>\n<li class=\"\">SMB and NFS improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8710\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8710</a></li>\n<li class=\"\">fix: Cluster executors use scheduler's temp_directory for shuffle files by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8733\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8733</a></li>\n<li class=\"\">use 'max_message_size' in flight service too by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8730\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8730</a></li>\n<li class=\"\">Add page-level retry for transient GraphQL errors with backoff and increase GitHub rate limit buffer up to 100 by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8726\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8726</a></li>\n<li class=\"\">Make testoperator Dockerfile; CI to build docker image to <code>ghcr.io</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8732\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8732</a></li>\n<li class=\"\">cluster: UnionProjectionPushdownOptimizer: Add projection pushdown diagnostics for union children by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8734\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8734</a></li>\n<li class=\"\">Fix column projection order mismatch with location metadata columns by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8738\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8738</a></li>\n<li class=\"\">Fixes for testoperator. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8737\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8737</a></li>\n<li class=\"\">Improve Cayenne Deletion Vectors with KeyBased support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8713\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8713</a></li>\n<li class=\"\">Fix <code>testoperator_dispatch.yaml</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8740\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8740</a></li>\n<li class=\"\">Add spice cloud CLI commands by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8528\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8528</a></li>\n<li class=\"\">Add FTP, NFS, &amp; SMB TPCH SF1 spicepods by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8739\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8739</a></li>\n<li class=\"\">Prepared Statements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7588\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7588</a></li>\n<li class=\"\">Schedule dispatch of <code>testoperator run text-to-sql</code>.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8745\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8745</a></li>\n<li class=\"\">Fix minio for ai benchmark CI by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8743\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8743</a></li>\n<li class=\"\">Upgrade to Rust 1.91 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8749\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8749</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8763\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8763</a></li>\n<li class=\"\">Benchmarks: make row count validation skip logic configurable by scale factor, query set, and overrides by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8756\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8756</a></li>\n<li class=\"\">Make benchmark tests more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8766\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8766</a></li>\n<li class=\"\">Add parameter to force using iam_role for DynamoDB by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8767\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8767</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8735\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8735</a></li>\n<li class=\"\">v1.10.4 release notes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8790\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8790</a></li>\n<li class=\"\">Trace metrics export errors by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8791\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8791</a></li>\n<li class=\"\">v1.10.4 SECURITY.md update by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8800\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8800</a></li>\n<li class=\"\">Add timezone database to Docker image to fix Cayenne acceleration panic by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8799\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8799</a></li>\n<li class=\"\">Upgrade dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8801\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8801</a></li>\n<li class=\"\">Fix <code>table_allowlist</code> for table sampling and NSQL by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8789\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8789</a></li>\n<li class=\"\">Cayenne primary key on-conflict handling by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8788\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8788</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8773\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8773</a></li>\n<li class=\"\">fix: correctly identify deprecated openai_* parameters by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8809\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8809</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8812\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8812</a></li>\n<li class=\"\">Use workspace version for cayenne crate by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8811\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8811</a></li>\n<li class=\"\">Don't CAST strings which breaks push down optimizer by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8810\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8810</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8815\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8815</a></li>\n<li class=\"\">Update async-openai to latest revision 4dcd633aad6f - brings fix for openai compatible model providers by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8816\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8816</a></li>\n<li class=\"\">Add <code>auth</code>/<code>iam_role_source</code> to DynamoDB connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8808\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8808</a></li>\n<li class=\"\">DynamoDB fixes: JSON nesting for Streams, proper batch deletions by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8821\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8821</a></li>\n<li class=\"\">Rough roadmap for 2026-2027 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8805\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8805</a></li>\n<li class=\"\">Release notes for v1.11.0-rc1 by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8786\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8786</a></li>\n<li class=\"\">Make S3V integration tests prepare_for_aws_tests more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8820\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8820</a></li>\n<li class=\"\">Bump rsa from 0.9.9 to 0.9.10 in the cargo group across 1 directory by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8819\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8819</a></li>\n<li class=\"\">Add timezone database to Release and CUDA Docker images to fix Cayene panic by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8832\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8832</a></li>\n<li class=\"\">fix: <code>UnionProjectionPushdownOptimizer</code> - Schema change during <code>transform_down</code> breaks parent nodes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8831\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8831</a></li>\n<li class=\"\">Update grafana/datadog example dashboards by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8833\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8833</a></li>\n<li class=\"\">Add Dev bird bench as text-to-sql queryset in CI.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8753\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8753</a></li>\n<li class=\"\">Update testoperator scheduler to use <code>release/1.11</code> branch by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8829\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8829</a></li>\n<li class=\"\">Spice Cayenne fixes and test spicepods for Beta &amp; RC by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8787\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8787</a></li>\n<li class=\"\">testoperator dispatch all bird-bench database variants by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8835\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8835</a></li>\n<li class=\"\">feat: Improve column statistics handling with safe access and defaults by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8836\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8836</a></li>\n<li class=\"\">cluster: mTLS verification by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8837\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8837</a></li>\n<li class=\"\">fix: 8770: Unsupported ScalarFunctionExpr in ORDER BY by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8838\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8838</a></li>\n<li class=\"\">Workflow tweaks by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8845\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8845</a></li>\n<li class=\"\">Cayenne: metadata catalog should respect cayenne_file_path location by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8844\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8844</a></li>\n<li class=\"\">Expand Cayenne feature coverage by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8848\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8848</a></li>\n<li class=\"\">docs: HA distributed query decisions by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8817\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8817</a></li>\n<li class=\"\">fix(optimizer): Fix correctness issues in UnionProjectionPushdownOptimizer by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8851\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8851</a></li>\n<li class=\"\">Pin reqwest to 0.12.24 to fix HuggingFace embedding model download by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8853\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8853</a></li>\n<li class=\"\">Fix builds and pin to Ubuntu 22.04 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8856\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8856</a></li>\n<li class=\"\">Revert \"Fix builds and pin to Ubuntu 22.04\" by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8861\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8861</a></li>\n<li class=\"\">Ensure setup Rust is run by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8862\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8862</a></li>\n<li class=\"\">fix: Ubuntu 24.04+ renamed libaio1 to libaio1t64 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8865\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8865</a></li>\n<li class=\"\">Upgrade to Pulls with Spice v2 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8866\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8866</a></li>\n<li class=\"\">Add limit and configuration name to 'testoperator run text-to-sql' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8839\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8839</a></li>\n<li class=\"\">PR check and test optimization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8868\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8868</a></li>\n<li class=\"\">Upgrade S3 Vectors SDK and improve test robustness by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8867\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8867</a></li>\n<li class=\"\">[Testoperator] Query level and improved aggregate level for NSQL by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8840\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8840</a></li>\n<li class=\"\">Add docker build for private branches for ghcr.io/spiceai/spiceai-dev by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8873\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8873</a></li>\n<li class=\"\">Expand the data acceleration round-trip test coverage by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8855\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8855</a></li>\n<li class=\"\">fix: Provide a better error for improper bucket UDF arguments by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8849\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8849</a></li>\n<li class=\"\">ScyllaDB Data Connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8827\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8827</a></li>\n<li class=\"\">Use tokio-rusqlite for Spice Cayenne SQLite by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8857\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8857</a></li>\n<li class=\"\">Cayenne: fix FuturesUnordered reentrant drop crash by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8863\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8863</a></li>\n<li class=\"\">Bump github/codeql-action from 4.31.9 to 4.31.10 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8884\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8884</a></li>\n<li class=\"\">Bump golang.org/x/sys from 0.39.0 to 0.40.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8881\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8881</a></li>\n<li class=\"\">Bump github.com/spiceai/gospice/v8 from 8.0.0 to 8.0.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8883\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8883</a></li>\n<li class=\"\">Bump roaring from 0.11.2 to 0.11.3 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8885\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8885</a></li>\n<li class=\"\">Bump golang.org/x/mod from 0.31.0 to 0.32.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8882\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8882</a></li>\n<li class=\"\">Bump aws-sdk-s3 from 1.115.0 to 1.119.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8887\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8887</a></li>\n<li class=\"\">Bump libc from 0.2.177 to 0.2.180 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8886\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8886</a></li>\n<li class=\"\">Bump tokio-util from 0.7.17 to 0.7.18 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8889\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8889</a></li>\n<li class=\"\">Bump governor from 0.10.2 to 0.10.4 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8888\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8888</a></li>\n<li class=\"\">fix: flaky test test_concurrent_partition_creation by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8898\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8898</a></li>\n<li class=\"\">Update Cayenne snapshots for TPC-DS by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8890\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8890</a></li>\n<li class=\"\">Add more buckets to histogram metrics by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8850\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8850</a></li>\n<li class=\"\">feat: Add HTTP health endpoint for cluster executors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8899\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8899</a></li>\n<li class=\"\">feat: Implement model listing functionality for multiple providers by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8901\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8901</a></li>\n<li class=\"\">feat: Initial HA schedulers distributed query implementation by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8852\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8852</a></li>\n<li class=\"\">fix: infer executor role from --scheduler-address when --role is omitted by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8903\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8903</a></li>\n<li class=\"\">Improve install scripts and remove jq dependency by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8847\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8847</a></li>\n<li class=\"\">Benchmarks: sort PartitionedUnionExec children for deterministic snapshot comparison by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8877\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8877</a></li>\n<li class=\"\">Cayenne: share VortexFileCache across partitions via CayenneContext by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8880\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8880</a></li>\n<li class=\"\">Update ballista to add exponential backoff for scheduler disconnection by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8905\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8905</a></li>\n<li class=\"\">Configurably add BirdBench evidence to testoperator text-to-SQL. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8904\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8904</a></li>\n<li class=\"\">Helm: Allow command override via values.yaml by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8906\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8906</a></li>\n<li class=\"\">Fix distributed query gRPC message size limit (16MB -&gt; 100MB) by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8900\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8900</a></li>\n<li class=\"\">OS specific setup actions by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8909\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8909</a></li>\n<li class=\"\">Cayenne should warn if unable to parse configuration value by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8907\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8907</a></li>\n<li class=\"\">Add snapshots widgets to example dashboard by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8910\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8910</a></li>\n<li class=\"\">Add quality criteria for the features by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8897\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8897</a></li>\n<li class=\"\">Improve Accelerated Datasets section for Grafana/Datadog dashboards by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8915\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8915</a></li>\n<li class=\"\">Use HTTP traceparent in NSQL to support concurrency in 'testoperator run text-to-SQL' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8912\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8912</a></li>\n<li class=\"\">Remove setup for cc from integration_models.yml by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8917\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8917</a></li>\n<li class=\"\">Propagate Azure and GCS credentials to executors in cluster mode by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8918\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8918</a></li>\n<li class=\"\">Cayenne: fix memory growth due to vortex metrics allocation by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8908\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8908</a></li>\n<li class=\"\">fix(caching): Deduplicate refresh requests for JSON array responses by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8921\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8921</a></li>\n<li class=\"\">fix(caching): Return cached data directly for unfiltered queries (SELECT *) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8919\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8919</a></li>\n<li class=\"\">Correct MinIO path syntax for spiced download by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8916\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8916</a></li>\n<li class=\"\">Acceleration snapshots compaction + Improved Snapshots UX by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8858\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8858</a></li>\n<li class=\"\">Change base image from bookworm-slim to trixie-slim by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8923\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8923</a></li>\n<li class=\"\">Add <code>testoperator run text-to-sql</code> metrics from LogicalPlan by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8895\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8895</a></li>\n<li class=\"\">Fix spicepod dependencies in testoperator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8875\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8875</a></li>\n<li class=\"\">Update copilot instructions for data correctness by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8922\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8922</a></li>\n<li class=\"\">Add <code>BootstrapStatus</code> + Snapshot bootstrapping parallelization by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8926\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8926</a></li>\n<li class=\"\">fix: add missing feature-gate for AWS Secrets Manager error variant by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8928\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8928</a></li>\n<li class=\"\">refactor: make ConnectorParams fields public for external connectors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8929\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8929</a></li>\n<li class=\"\">fix(caching): SWR refreshes only accessed entry instead of all stale rows by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8931\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8931</a></li>\n<li class=\"\">Cayenne: include <code>cayenne_metadata_dir</code> to known params by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8933\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8933</a></li>\n<li class=\"\">Rename Ingestion Lag chart in example dashboards by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8932</a></li>\n<li class=\"\">fix(caching): Fix HTTP caching always MISS when projection excludes fetched_at by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8930\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8930</a></li>\n<li class=\"\">Reset expiry after snapshot bootstraping for Caching by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8925\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8925</a></li>\n<li class=\"\">Set use_ssl=false for sccache by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8945\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8945</a></li>\n<li class=\"\">Hash indexing for Arrow Acceleration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8924\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8924</a></li>\n<li class=\"\">[Cayenne] Acceleration snapshots support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7973\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7973</a></li>\n<li class=\"\">perf(caching): Non-blocking cache writes on cache miss by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8948\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8948</a></li>\n<li class=\"\">Update NSQL models by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8951\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8951</a></li>\n<li class=\"\">Hash Index Key verification by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8949\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8949</a></li>\n<li class=\"\">Add <code>snapshots_creation_policy</code> param by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8954\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8954</a></li>\n<li class=\"\">Remove candle &amp; cudarc from non-models build by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8955\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8955</a></li>\n<li class=\"\">Acceleration Snapshots API and CLI by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8934\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8934</a></li>\n<li class=\"\">Ignore test for <code>data_components arrow::indexed::test_primary_key_value_matches_batch</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8962\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8962</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8965\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8965</a></li>\n<li class=\"\">Hash Index secondary index support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8958\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8958</a></li>\n<li class=\"\">fix: Support primary key constraints in partitioned DuckDB tables mode by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8966\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8966</a></li>\n<li class=\"\">perf(caching): Batch cache writes by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8959\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8959</a></li>\n<li class=\"\">CI perf optimizations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8968\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8968</a></li>\n<li class=\"\">Fix Makefile linting by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8970\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8970</a></li>\n<li class=\"\">Fixes in <code>testoperator run text-to-sql</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8927</a></li>\n<li class=\"\">implement <code>Chat::as_sql</code> for xAI anthropic by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8957\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8957</a></li>\n<li class=\"\">Fix <code>duckdb_file_path</code> in search integration test by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8972\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8972</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8971\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8971</a></li>\n<li class=\"\">Maintenance updates to Anthropic API by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8956\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8956</a></li>\n<li class=\"\">Add CacheBackend Trait, implement pingora-lru, and add throughput tests by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8080\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8080</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8974\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8974</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8975\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8975</a></li>\n<li class=\"\">Make accelerator shutdown more robust by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8969\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8969</a></li>\n<li class=\"\">feat(duckdb): Add <code>on_refresh_sort_columns</code> for post-write data ordering (initial version) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8964\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8964</a></li>\n<li class=\"\">Proper handling for initial snapshot by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8911\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8911</a></li>\n<li class=\"\">fix: Remove --no-default-features from cargo-hack command in features workflow by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8977\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8977</a></li>\n<li class=\"\">build(deps): bump actions/cache from 5.0.1 to 5.0.2 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8983\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8983</a></li>\n<li class=\"\">build(deps): bump actions/checkout from 4 to 6 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8982\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8982</a></li>\n<li class=\"\">build(deps): bump actions/setup-go from 6.1.0 to 6.2.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8984\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8984</a></li>\n<li class=\"\">build(deps): bump github.com/olekukonko/tablewriter from 1.1.2 to 1.1.3 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8979\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8979</a></li>\n<li class=\"\">build(deps): bump github.com/klauspost/compress from 1.18.2 to 1.18.3 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8980\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8980</a></li>\n<li class=\"\">Add /v1/queries and Arrow Flight async APIs by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8946\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8946</a></li>\n<li class=\"\">build(deps): bump Vampire/setup-wsl from 5 to 6 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8981\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8981</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8973\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8973</a></li>\n<li class=\"\">build(deps): bump insta from 1.46.0 to 1.46.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8988\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8988</a></li>\n<li class=\"\">build(deps): bump schemars from 1.1.0 to 1.2.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8985\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8985</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8978\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8978</a></li>\n<li class=\"\">fix: Data correctness edge cases by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8953\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8953</a></li>\n<li class=\"\">Correct MinIO path syntax for spiced download (Part 2) by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8995\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8995</a></li>\n<li class=\"\">Make <code>.spice/data</code> in search integration tests by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8992\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8992</a></li>\n<li class=\"\">fix: Hash index composite keys null values by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9001\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9001</a></li>\n<li class=\"\">Update Cayenne status to Beta by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9002\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9002</a></li>\n<li class=\"\">fix: Disable TPC-DS result validation (not yet supported) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9004\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9004</a></li>\n<li class=\"\">feat: Upgrade to DataFusion v51 and dependencies by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8864\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8864</a></li>\n<li class=\"\">Improvements for <code>snapshots_creation_policy</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9003\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9003</a></li>\n<li class=\"\">fix(ci): restore cached spicepod-validator binary instead of lookup-only by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9007\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9007</a></li>\n<li class=\"\">Update version by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9010\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9010</a></li>\n<li class=\"\">Update lock file - <a href=\"https://github.com/spiceai/spiceai/commit/53babbf07ca8c1c7b2e1da42ce58c465d9bc9276/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/commit/53babbf07ca8c1c7b2e1da42ce58c465d9bc9276/</a></li>\n<li class=\"\">fix: Enable Cayenne acceleration snapshots by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9020\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9020</a></li>\n<li class=\"\">Add TPC-DS integration tests with S3 source and PostgreSQL acceleration by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9006\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9006</a></li>\n<li class=\"\">fix(tests): fix flaky/slow/failing unit tests by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9009\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9009</a></li>\n<li class=\"\">fix: Update benchmark snapshots for DF51 upgrade by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9008\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9008</a></li>\n<li class=\"\">fix: add feature gate to rrf TEST_EMBEDDING_MODEL by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9017\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9017</a></li>\n<li class=\"\">fix: features check by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9014\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9014</a></li>\n<li class=\"\">URL table support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9018\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9018</a></li>\n<li class=\"\">ScyllaDB key filter by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8997\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8997</a></li>\n<li class=\"\">fix: Schema mismatch when using column projection with HTTP caching by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9021\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9021</a></li>\n<li class=\"\">Add more tests for HTTP caching with columns selection by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9025\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9025</a></li>\n<li class=\"\">HTTP cache snapshots: default to <code>time_interval</code> and fix <code>snapshots_creation_policy: on_change</code> by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9026\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9026</a></li>\n<li class=\"\">Fix duplicate snapshot creation on startup by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9029\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9029</a></li>\n<li class=\"\">Remove waiting for runtime to be ready before creating snapshot by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9033\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9033</a></li>\n<li class=\"\">Fix snapshot on_change policy to skip when no writes occurred by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9028\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9028</a></li>\n<li class=\"\">Release notes for release <code>release/1.11.0-rc.2</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9016\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9016</a></li>\n<li class=\"\">ci: use arduino/setup-protoc for official protobuf compiler by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9036\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9036</a></li>\n<li class=\"\">ci: install unzip on aarch64 runner for arduino/setup-protoc by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9038\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9038</a></li>\n<li class=\"\">fix: don't fail release if upload to minio fails by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9039\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9039</a></li>\n<li class=\"\">Improve validation and logging for hash indexes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9047\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9047</a></li>\n<li class=\"\">Pin to ubuntu-22.04 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9068\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9068</a></li>\n<li class=\"\">Fix broken telemetry for <code>testoperator</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9054\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9054</a></li>\n<li class=\"\">Fix release builds by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9069\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9069</a></li>\n<li class=\"\">Spice 1.11.0-rc3 release notes by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9070\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9070</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9071\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9071</a></li>\n<li class=\"\">Add missing protoc step to setup-cc action by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9041\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9041</a></li>\n<li class=\"\">Fix TLS connection for grpc+tls:// Flight SQL endpoints and add custom CA certificate support by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9073\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9073</a></li>\n<li class=\"\">Update <code>1.11.0-rc.3</code> release notes by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9082\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9082</a></li>\n<li class=\"\">Fix <code>formula_1</code> and <code>codebase_community</code> in <code>bird-bench</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9000\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9000</a></li>\n<li class=\"\">Cayenne S3 Express One Zone improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9015\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9015</a></li>\n<li class=\"\">Add zlib1g-dev to CI by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9052\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9052</a></li>\n<li class=\"\">Upgrade Vortex with CASE-WHEN by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9051\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9051</a></li>\n<li class=\"\">fix: Cayenne CatalogError handling for constraint violations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9050\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9050</a></li>\n<li class=\"\">Fix Docker build failing to copy shared libraries due to ldd output parsing by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9058\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9058</a></li>\n<li class=\"\">feat: Change /v1/sql and FlightSQL to use local execution in cluster mode by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9055\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9055</a></li>\n<li class=\"\">Remove unmaintained dependencies by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9045\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9045</a></li>\n<li class=\"\">Enable cayenne + changes stream by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9053\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9053</a></li>\n<li class=\"\">feat(cli): add <code>spice query</code> command for async queries REPL by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9057\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9057</a></li>\n<li class=\"\">Remove unncessary allocations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9059\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9059</a></li>\n<li class=\"\">Add <code>dataset_acceleration_size_bytes</code> metric by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9062\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9062</a></li>\n<li class=\"\">Fix tracing of <code>sql_query</code> beneath <code>tool_use::sample_data</code>.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9043\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9043</a></li>\n<li class=\"\">Basic script to run distributed spice by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9049\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9049</a></li>\n<li class=\"\">Add integration tests for Acceleration Snapshots by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9067\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9067</a></li>\n<li class=\"\">Upgrade CUDA toolkit to 12.6.0 by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9079\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9079</a></li>\n<li class=\"\">Install required protoc dependency for CUDA build by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9080\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9080</a></li>\n<li class=\"\">feat(cluster): add executor control stream heartbeat by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9072\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9072</a></li>\n<li class=\"\">feat: Fix async queries API and integrate Ballista shuffle improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9075\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9075</a></li>\n<li class=\"\">Remove models variant (now default) &amp; Windows builds (use WSL) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9063\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9063</a></li>\n<li class=\"\">Cayenne: share upload semaphore across partitions to bound memory growth and optimize I/O by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9078\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9078</a></li>\n<li class=\"\">Snowflake data connector - add <code>snowflake_private_key</code> parameter by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9085\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9085</a></li>\n<li class=\"\">Rewrite Go CLI in Rust by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9061\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9061</a></li>\n<li class=\"\">GCS Data Connector (Alpha) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9084\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9084</a></li>\n<li class=\"\">Skip 'latest' Docker tag for pre-release versions by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9077\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9077</a></li>\n<li class=\"\">Add HTTP endpoints for acceleration snapshots API by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9065\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9065</a></li>\n<li class=\"\">Cayenne: Allow append mode with both primary_key and time_column by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9090\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9090</a></li>\n<li class=\"\">Add Cluster Observability (Metrics+Dashboard) by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9066\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9066</a></li>\n<li class=\"\">proto for 'CayenneAccelerationExec' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9094\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9094</a></li>\n<li class=\"\">Add 'anthropic-beta' header for structured outputs by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9093\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9093</a></li>\n<li class=\"\">Cayenne: refactor write path to use insert_into() as single entry point (part 1) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9088\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9088</a></li>\n<li class=\"\">Fix testoperator dispatch by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9097\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9097</a></li>\n<li class=\"\">Fix setup-spiced GH action (_models suffix does not exist anymore) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9102\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9102</a></li>\n<li class=\"\">build(deps): bump github/codeql-action from 4.31.10 to 4.31.11 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9108\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9108</a></li>\n<li class=\"\">Remove <code>DistributeFileScanOptimizer</code> and <code>UnionProjectionPushdownOptimizer</code> &amp; set <code>target_partitions</code> dynamically based on cluster capacity by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9100\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9100</a></li>\n<li class=\"\">build(deps): bump zip from 2.4.2 to 6.0.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9111\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9111</a></li>\n<li class=\"\">fix: Preserve query parameter order in HTTP connector to match filter values by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9114\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9114</a></li>\n<li class=\"\">Add PollNow interrupt for Ballista executors to reduce task scheduling latency by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9098\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9098</a></li>\n<li class=\"\">Revert \"GCS Data Connector (Alpha) \" by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9084\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9084</a></li>\n<li class=\"\">Fix stack overflow for CDC batching by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9115\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9115</a></li>\n<li class=\"\">fix: update Ballista fork to include executor timeout fix by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9124\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9124</a></li>\n<li class=\"\">Properly propagate SIGINT/SIGTERM from CLI to runtime by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9127\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9127</a></li>\n<li class=\"\">fix: Use the same vortex dependency as ballista by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9123\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9123</a></li>\n<li class=\"\">release: Bump version to 1.11.0 for stable - <a href=\"https://github.com/spiceai/spiceai/commit/14d09f8e262008df69ded898ed3bebee08471508/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/commit/14d09f8e262008df69ded898ed3bebee08471508/</a></li>\n<li class=\"\">Cayenne snapshots with shared metadata by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9118\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9118</a></li>\n<li class=\"\">Improve error handling for URL tables with Azure URLs by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9129\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9129</a></li>\n<li class=\"\">Add missing Windows build step for spice CLI in build_and_release workflow by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9143\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9143</a></li>\n<li class=\"\">Fix install-dev to use debug build path for spice binary by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9142\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9142</a></li>\n<li class=\"\">fix: CLI builds by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9145\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9145</a></li>\n<li class=\"\">Always create initial snapshots (unless bootstrapped) + when no snapshots exist by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9119\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9119</a></li>\n<li class=\"\">fix(cayenne): Fix upsert with pending deletions causing duplicate PKs by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9152\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9152</a></li>\n<li class=\"\">fix(flightrepl): Add chrono-tz feature to flightrepl for timezone formatting by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9153\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9153</a></li>\n<li class=\"\">fix(delta_lake): Preserve container name in ABFSS URLs for Azure Delta Lake tables by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9155\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9155</a></li>\n<li class=\"\">fix: Make CLI system and asset type detection more robust by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9148\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9148</a></li>\n<li class=\"\">fix: Set query set properly on benchmarks telemetry metrics attributes by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9162\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9162</a></li>\n<li class=\"\">fix: Download _models variant - <a href=\"https://github.com/spiceai/spiceai/commit/27f3058d0007595b02c198755c3b22319032ff30/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/commit/27f3058d0007595b02c198755c3b22319032ff30/</a></li>\n<li class=\"\">fix: Helm chart image tag - <a href=\"https://github.com/spiceai/spiceai/commit/7405c8df0db4ecce0ed6d4a4d424553d604b9036/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/spiceai/spiceai/commit/7405c8df0db4ecce0ed6d4a4d424553d604b9036/</a></li>\n<li class=\"\">Revert \"Remove models variant (now default) &amp; Windows builds (use WSL) \" by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9063\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9063</a></li>\n<li class=\"\">fix(cli): Several CLI fixes from the Go to Rust migration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9157\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9157</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.11.0",
            "title": "Spice v1.11.0 (Jan 28, 2026)",
            "summary": "Announcing the release of Spice v1.11.0-stable! ⚡",
            "date_modified": "2026-01-28T00:00:00.000Z",
            "author": {
                "name": "William Croxson",
                "url": "https://github.com/peasee"
            },
            "tags": [
                "release",
                "cayenne",
                "acceleration",
                "datafusion",
                "iceberg",
                "arrow",
                "snapshots",
                "scylladb",
                "data-connector",
                "distributed-query",
                "caching",
                "dynamodb",
                "LLM Tool"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.0-rc.3",
            "content_html": "<p>Announcing the release of Spice v1.11.0-rc.3! <!-- -->⭐</p>\n<p>v1.11.0-rc.3 is a patch release that includes improvements to Hash Indexing for Arrow Acceleration and fixes for TLS connections with Flight SQL endpoints.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1110-rc3\">What's New in v1.11.0-rc.3<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#whats-new-in-v1110-rc3\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.0-rc.3\" title=\"Direct link to What's New in v1.11.0-rc.3\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"hash-indexing-for-arrow-acceleration-experimental\">Hash Indexing for Arrow Acceleration (experimental)<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#hash-indexing-for-arrow-acceleration-experimental\" class=\"hash-link\" aria-label=\"Direct link to Hash Indexing for Arrow Acceleration (experimental)\" title=\"Direct link to Hash Indexing for Arrow Acceleration (experimental)\" translate=\"no\">​</a></h3>\n<p>Arrow-based accelerations now support hash indexing for faster point lookups on equality predicates. Hash indexes provide O(1) average-case lookup performance for columns with high cardinality.</p>\n<p><strong>Features</strong>:</p>\n<ul>\n<li class=\"\">Primary key hash index support</li>\n<li class=\"\">Secondary index support for non-primary key columns</li>\n<li class=\"\">Composite key support with proper null value handling</li>\n</ul>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> postgres</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">users</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> users</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> arrow</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">primary_key</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> user_id</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(tenant_id, user_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> unique  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Composite hash index</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/next/features/data-acceleration/hash-index\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Hash Index Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"flight-sql-tls-connection-fixes\">Flight SQL TLS Connection Fixes<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#flight-sql-tls-connection-fixes\" class=\"hash-link\" aria-label=\"Direct link to Flight SQL TLS Connection Fixes\" title=\"Direct link to Flight SQL TLS Connection Fixes\" translate=\"no\">​</a></h3>\n<p><strong>TLS Connection Support</strong>: Fixed TLS connection issues when using <code>grpc+tls://</code> scheme with Flight SQL endpoints. Added support for custom CA certificate files via the new <code>flightsql_tls_ca_certificate_file</code> parameter.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.0-rc.3, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:v1.11.0-rc.3</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:v1.11.0-rc.3</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.0-rc.3</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.0-rc.3#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Hash indexing for Arrow Acceleration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8924\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8924</a></li>\n<li class=\"\">Improve validation and logging for hash indexes <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9047\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9047</a></li>\n<li class=\"\">Fix TLS connection for grpc+tls:// Flight SQL endpoints and add custom CA certificate support <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9073\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9073</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.11.0-rc.3",
            "title": "Spice v1.11.0-rc.3 (Jan 23, 2026)",
            "summary": "Announcing the release of Spice v1.11.0-rc.3!",
            "date_modified": "2026-01-23T00:00:00.000Z",
            "author": {
                "name": "Viktor Yershov",
                "url": "https://github.com/krinart"
            },
            "tags": [
                "release",
                "acceleration",
                "arrow"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.0-rc.2",
            "content_html": "<p>Announcing the release of Spice v1.11.0-rc.2! <!-- -->⭐</p>\n<p>v1.11.0-rc.2 is the second release candidate for advanced test of v1.11. It brings <strong>Spice Cayenne to Beta status</strong> with acceleration snapshots support, a new <strong>ScyllaDB Data Connector</strong>, upgrades to <strong>DataFusion v51</strong>, <strong>Arrow 57.2</strong>, and <strong>iceberg-rust v0.8.0</strong>. It includes significant improvements to distributed query, caching, and observability.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1110-rc2\">What's New in v1.11.0-rc.2<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#whats-new-in-v1110-rc2\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.0-rc.2\" title=\"Direct link to What's New in v1.11.0-rc.2\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-cayenne-accelerator-reaches-beta\">Spice Cayenne Accelerator Reaches Beta<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#spice-cayenne-accelerator-reaches-beta\" class=\"hash-link\" aria-label=\"Direct link to Spice Cayenne Accelerator Reaches Beta\" title=\"Direct link to Spice Cayenne Accelerator Reaches Beta\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cayenne</a> has been promoted to Beta status with acceleration snapshots support and numerous stability improvements.</p>\n<p><strong>Improved Reliability</strong>:</p>\n<ul>\n<li class=\"\">Fixed timezone database issues in Docker images that caused acceleration panics</li>\n<li class=\"\">Resolved <code>FuturesUnordered</code> reentrant drop crashes</li>\n<li class=\"\">Fixed memory growth issues related to Vortex metrics allocation</li>\n<li class=\"\">Metadata catalog now properly respects <code>cayenne_file_path</code> location</li>\n<li class=\"\">Added warnings for unparseable configuration values</li>\n</ul>\n<p>Example configuration with snapshots:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_dataset</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v51-upgrade\">DataFusion v51 Upgrade<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#datafusion-v51-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v51 Upgrade\" title=\"Direct link to DataFusion v51 Upgrade\" translate=\"no\">​</a></h3>\n<p><a href=\"https://datafusion.apache.org/blog/2025/11/25/datafusion-51.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion has been upgraded to v51</a>, bringing significant performance improvements, new SQL features, and enhanced observability.</p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https://datafusion.apache.org/blog/images/datafusion-51.0.0/performance_over_time_clickbench.png\" alt=\"DataFusion v51 ClickBench Performance\" class=\"img_ev3q\"></p>\n<p><strong>Performance Improvements</strong>:</p>\n<ul>\n<li class=\"\"><strong>Faster <code>CASE</code> Expression Evaluation</strong>: Expressions now short-circuit earlier, reuse partial results, and avoid unnecessary scattering, speeding up common ETL patterns</li>\n<li class=\"\"><strong>Better Defaults for Remote Parquet Reads</strong>: DataFusion now fetches the last 512KB of Parquet files by default, typically avoiding 2 I/O requests per file</li>\n<li class=\"\"><strong>Faster Parquet Metadata Parsing</strong>: Leverages Arrow 57's new thrift metadata parser for up to 4x faster metadata parsing</li>\n</ul>\n<p><strong>New SQL Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQL Pipe Operators</strong>: Support for <code>|&gt;</code> syntax for inline transforms</li>\n<li class=\"\"><strong><code>DESCRIBE &lt;query&gt;</code></strong>: Returns the schema of any query without executing it</li>\n<li class=\"\"><strong>Named Arguments in SQL Functions</strong>: PostgreSQL-style <code>param =&gt; value</code> syntax for scalar, aggregate, and window functions</li>\n<li class=\"\"><strong>Decimal32/Decimal64 Support</strong>: New Arrow types supported including aggregations like <code>SUM</code>, <code>AVG</code>, and <code>MIN/MAX</code></li>\n</ul>\n<p>Example pipe operator:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> t</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">|</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> a </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">|</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">ORDER</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">BY</span><span class=\"token plain\"> b</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">|</span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">5</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Improved Observability</strong>:</p>\n<ul>\n<li class=\"\"><strong>Improved <code>EXPLAIN ANALYZE</code> Metrics</strong>: New metrics including <code>output_bytes</code>, <code>selectivity</code> for filters, <code>reduction_factor</code> for aggregates, and detailed timing breakdowns</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"arrow-572-upgrade\">Arrow 57.2 Upgrade<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#arrow-572-upgrade\" class=\"hash-link\" aria-label=\"Direct link to Arrow 57.2 Upgrade\" title=\"Direct link to Arrow 57.2 Upgrade\" translate=\"no\">​</a></h3>\n<p>Spice has been upgraded to <a href=\"https://arrow.apache.org/blog/2025/10/30/arrow-rs-57.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache Arrow Rust 57.2.0</a>, bringing major performance improvements and new capabilities.</p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https://arrow.apache.org/img/rust-parquet-metadata/results.png\" alt=\"Arrow 57 Parquet Metadata Parsing Performance\" class=\"img_ev3q\"></p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>4x Faster Parquet Metadata Parsing</strong>: 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</li>\n<li class=\"\"><strong>Parquet Variant Support</strong>: Experimental support for reading and writing the new <a href=\"https://github.com/apache/parquet-format/blob/master/VariantEncoding.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Parquet Variant type</a> for semi-structured data, including shredded variant values</li>\n<li class=\"\"><strong>Parquet Geometry Support</strong>: Read and write support for Parquet Geometry types (<code>GEOMETRY</code> and <code>GEOGRAPHY</code>) with <code>GeospatialStatistics</code></li>\n<li class=\"\"><strong>New <code>arrow-avro</code> Crate</strong>: Efficient conversion between Apache Avro and Arrow <code>RecordBatches</code> with projection pushdown and vectorized execution support</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"iceberg-rust-v080-upgrade\">iceberg-rust v0.8.0 Upgrade<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#iceberg-rust-v080-upgrade\" class=\"hash-link\" aria-label=\"Direct link to iceberg-rust v0.8.0 Upgrade\" title=\"Direct link to iceberg-rust v0.8.0 Upgrade\" translate=\"no\">​</a></h3>\n<p>Spice has been upgraded to <a href=\"https://github.com/apache/iceberg-rust/releases/tag/v0.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">iceberg-rust v0.8.0</a>, bringing improved Iceberg table support.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>V3 Metadata Support</strong>: Full support for Iceberg V3 table metadata format</li>\n<li class=\"\"><strong><code>INSERT INTO</code> Partitioned Tables</strong>: DataFusion integration now supports inserting data into partitioned Iceberg tables</li>\n<li class=\"\"><strong>Improved Delete File Handling</strong>: Better support for position and equality delete files, including shared delete file loading and caching</li>\n<li class=\"\"><strong>SQL Catalog Updates</strong>: Implement <code>update_table</code> and <code>register_table</code> for SQL catalog</li>\n<li class=\"\"><strong>S3 Tables Catalog</strong>: Implement <code>update_table</code> for S3 Tables catalog</li>\n<li class=\"\"><strong>Enhanced Arrow Integration</strong>: Convert Arrow schema to Iceberg schema with auto-assigned field IDs, <code>_file</code> column support, and <code>Date32</code> type support</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"acceleration-snapshots\">Acceleration Snapshots<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#acceleration-snapshots\" class=\"hash-link\" aria-label=\"Direct link to Acceleration Snapshots\" title=\"Direct link to Acceleration Snapshots\" translate=\"no\">​</a></h3>\n<p>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.</p>\n<p><strong>Key Feature Improvements in v1.11</strong>:</p>\n<ul>\n<li class=\"\"><strong>Flexible Triggers</strong>: Configure when snapshots are created based on time intervals or stream batch counts</li>\n<li class=\"\"><strong>Automatic Compaction</strong>: Reduce storage overhead by compacting older snapshots (DuckDB only)</li>\n<li class=\"\"><strong>Bootstrap Integration</strong>: Snapshots can reset cache expiry on load for seamless recovery (DuckDB with Caching refresh mode)</li>\n<li class=\"\"><strong>Smart Creation Policies</strong>: Only create snapshots when data has actually changed</li>\n</ul>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_dataset</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_trigger</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> time_interval</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_trigger_threshold</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1h</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_creation_policy</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> on_changed</span><br></span></code></pre></div></div>\n<p><strong>Snapshots API and CLI</strong>: New API endpoints and CLI commands for managing snapshots programmatically. List, create, and restore snapshots directly from the command line or via HTTP.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration/snapshots\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Acceleration Snapshots Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"scylladb-data-connector\">ScyllaDB Data Connector<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#scylladb-data-connector\" class=\"hash-link\" aria-label=\"Direct link to ScyllaDB Data Connector\" title=\"Direct link to ScyllaDB Data Connector\" translate=\"no\">​</a></h3>\n<p>A new data connector for <a href=\"https://www.scylladb.com/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ScyllaDB</a>, the high-performance NoSQL database compatible with Apache Cassandra. Query ScyllaDB tables directly or accelerate them for faster analytics.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> scylladb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_keyspace.my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> scylla_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/next/components/data-connectors/scylladb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ScyllaDB Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distributed-query-improvements\">Distributed Query Improvements<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#distributed-query-improvements\" class=\"hash-link\" aria-label=\"Direct link to Distributed Query Improvements\" title=\"Direct link to Distributed Query Improvements\" translate=\"no\">​</a></h3>\n<p><strong>mTLS Verification</strong>: Cluster communication between scheduler and executors now supports mutual TLS verification for enhanced security.</p>\n<p><strong>Credential Propagation</strong>: Azure and GCS credentials are now automatically propagated to executors in cluster mode, enabling access to cloud storage across the distributed query cluster.</p>\n<p><strong>Improved Resilience</strong>:</p>\n<ul>\n<li class=\"\">Exponential backoff for scheduler disconnection recovery</li>\n<li class=\"\">Increased gRPC message size limit from 16MB to 100MB for large query plans</li>\n<li class=\"\">HTTP health endpoint for cluster executors</li>\n<li class=\"\">Automatic executor role inference when <code>--scheduler-address</code> is provided</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"caching-acceleration-mode-improvements\">Caching Acceleration Mode Improvements<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#caching-acceleration-mode-improvements\" class=\"hash-link\" aria-label=\"Direct link to Caching Acceleration Mode Improvements\" title=\"Direct link to Caching Acceleration Mode Improvements\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/features/data-acceleration/refresh-modes/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Caching Acceleration Mode</a> introduced in v1.10.0 has received significant performance optimizations and reliability fixes in this release.</p>\n<p><strong>Performance Optimizations</strong>:</p>\n<ul>\n<li class=\"\"><strong>Non-blocking Cache Writes</strong>: 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.</li>\n<li class=\"\"><strong>Batch Cache Writes</strong>: Multiple cache entries are now written in batches rather than individually, significantly improving write throughput for high-volume cache operations.</li>\n</ul>\n<p><strong>Reliability Fixes</strong>:</p>\n<ul>\n<li class=\"\"><strong>Correct SWR Refresh Behavior</strong>: 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.</li>\n<li class=\"\"><strong>Deduplicated Refresh Requests</strong>: Fixed an issue where JSON array responses could trigger multiple redundant refresh operations. Refresh requests are now properly deduplicated.</li>\n<li class=\"\"><strong>Fixed Cache Hit Detection</strong>: Resolved an issue where queries that didn't include <code>fetched_at</code> in their projection would always result in cache misses, even when cached data was available.</li>\n<li class=\"\"><strong>Unfiltered Query Optimization</strong>: <code>SELECT *</code> queries without filters now return cached data directly without unnecessary filtering overhead.</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration/refresh-modes/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Caching Acceleration Mode Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-connector-enhancements\">DynamoDB Connector Enhancements<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#dynamodb-connector-enhancements\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Connector Enhancements\" title=\"Direct link to DynamoDB Connector Enhancements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Added JSON nesting for DynamoDB Streams</li>\n<li class=\"\">Proper batch deletion handling</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"url-tables\">URL Tables<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#url-tables\" class=\"hash-link\" aria-label=\"Direct link to URL Tables\" title=\"Direct link to URL Tables\" translate=\"no\">​</a></h3>\n<p>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.</p>\n<p><strong>Supported Patterns</strong>:</p>\n<ul>\n<li class=\"\"><strong>Single files</strong>: <code>SELECT * FROM 's3://bucket/data.parquet'</code></li>\n<li class=\"\"><strong>Directories/prefixes</strong>: <code>SELECT * FROM 's3://bucket/data/'</code></li>\n<li class=\"\"><strong>Glob patterns</strong>: <code>SELECT * FROM 's3://bucket/year=*/month=*/data.parquet'</code></li>\n</ul>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\">Automatic file format detection (Parquet, CSV, JSON, etc.)</li>\n<li class=\"\">Hive-style partition inference with filter pushdown</li>\n<li class=\"\">Schema inference from files</li>\n<li class=\"\">Works with both SQL and DataFrame APIs</li>\n</ul>\n<p>Example with hive partitioning:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Partitions are automatically inferred from paths</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'s3://bucket/data/'</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">year</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'2024'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">month</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'01'</span><br></span></code></pre></div></div>\n<p>Enable via spicepod.yml:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">url_tables</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cluster-mode-async-query-apis-experimental\">Cluster Mode Async Query APIs (experimental)<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#cluster-mode-async-query-apis-experimental\" class=\"hash-link\" aria-label=\"Direct link to Cluster Mode Async Query APIs (experimental)\" title=\"Direct link to Cluster Mode Async Query APIs (experimental)\" translate=\"no\">​</a></h3>\n<p>New asynchronous query APIs for long-running queries in cluster mode:</p>\n<ul>\n<li class=\"\"><strong><code>/v1/queries</code> endpoint</strong>: Submit queries and retrieve results asynchronously</li>\n<li class=\"\"><strong>Arrow Flight async support</strong>: Non-blocking query execution via Arrow Flight protocol</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"observability-improvements\">Observability Improvements<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#observability-improvements\" class=\"hash-link\" aria-label=\"Direct link to Observability Improvements\" title=\"Direct link to Observability Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Enhanced Dashboards</strong>: Updated Grafana and Datadog example dashboards with:</p>\n<ul>\n<li class=\"\">Snapshot monitoring widgets</li>\n<li class=\"\">Improved accelerated datasets section</li>\n<li class=\"\">Renamed ingestion lag charts for clarity</li>\n</ul>\n<p><strong>Additional Histogram Buckets</strong>: Added more buckets to histogram metrics for better latency distribution visibility.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/monitoring\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Monitoring Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements\">Additional Improvements<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#additional-improvements\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements\" title=\"Direct link to Additional Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Model Listing</strong>: New functionality to list available models across multiple AI providers</li>\n<li class=\"\"><strong>DuckDB Partitioned Tables</strong>: Primary key constraints now supported in partitioned DuckDB table mode</li>\n<li class=\"\"><strong>Post-refresh Sorting</strong>: New <code>on_refresh_sort_columns</code> parameter for DuckDB enables data ordering after writes</li>\n<li class=\"\"><strong>Improved Install Scripts</strong>: Removed jq dependency and improved cross-platform compatibility</li>\n<li class=\"\"><strong>Better Error Messages</strong>: Improved error messaging for bucket UDF arguments and deprecated OpenAI parameters</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p><strong>New ScyllaDB Data Connector Recipe</strong>: New recipe demonstrating how to use ScyllaDB Data Connector. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/scylladb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ScyllaDB Data Connector Recipe</a> for details.</p>\n<p><strong>New SMB Data Connector Recipe</strong>: New recipe demonstrating how to use ScyllaDB Data Connector. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/smb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">SMB Data Connector Recipe</a> for details.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 86 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.11.0-rc.2, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:v1.11.0-rc.2</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:v1.11.0-rc.2</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dependencies\">Dependencies<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#dependencies\" class=\"hash-link\" aria-label=\"Direct link to Dependencies\" title=\"Direct link to Dependencies\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>DataFusion</strong>: Upgraded to v51 (<a href=\"https://datafusion.apache.org/blog/2025/11/25/datafusion-51.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">release notes</a>)</li>\n<li class=\"\"><strong>Arrow</strong>: Upgraded to v57 (<a href=\"https://arrow.apache.org/blog/2025/10/30/arrow-rs-57.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">release notes</a>)</li>\n<li class=\"\"><strong>iceberg-rust</strong>: Upgraded to v0.8.0 (<a href=\"https://github.com/apache/iceberg-rust/releases/tag/v0.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">release notes</a>)</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.0-rc.2#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Add timezone database to Docker image to fix Cayenne acceleration panic by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8799\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8799</a></li>\n<li class=\"\">Upgrade dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8801\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8801</a></li>\n<li class=\"\">Fix <code>table_allowlist</code> for table sampling and NSQL by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8789\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8789</a></li>\n<li class=\"\">Cayenne primary key on-conflict handling by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8788\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8788</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8773\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8773</a></li>\n<li class=\"\">fix: correctly identify deprecated openai_* parameters by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8809\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8809</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8812\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8812</a></li>\n<li class=\"\">Use workspace version for cayenne crate by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8811\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8811</a></li>\n<li class=\"\">Don't CAST strings which breaks push down optimizer by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8810\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8810</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8815\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8815</a></li>\n<li class=\"\">Update async-openai to latest revision 4dcd633aad6f - brings fix for openai compatible model providers by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8816\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8816</a></li>\n<li class=\"\">Add <code>auth</code>/<code>iam_role_source</code> to DynamoDB connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8808\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8808</a></li>\n<li class=\"\">DynamoDB fixes: JSON nesting for Streams, proper batch deletions by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8821\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8821</a></li>\n<li class=\"\">Rough roadmap for 2026-2027 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8805\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8805</a></li>\n<li class=\"\">Release notes for v1.11.0-rc1 by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8786\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8786</a></li>\n<li class=\"\">Make S3V integration tests prepare_for_aws_tests more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8820\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8820</a></li>\n<li class=\"\">Bump rsa from 0.9.9 to 0.9.10 in the cargo group across 1 directory by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8819\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8819</a></li>\n<li class=\"\">Add timezone database to Release and CUDA Docker images to fix Cayene panic by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8832\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8832</a></li>\n<li class=\"\">fix: <code>UnionProjectionPushdownOptimizer</code> - Schema change during <code>transform_down</code> breaks parent nodes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8831\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8831</a></li>\n<li class=\"\">Update grafana/datadog example dashboards by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8833\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8833</a></li>\n<li class=\"\">Add Dev bird bench as text-to-sql queryset in CI.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8753\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8753</a></li>\n<li class=\"\">Update testoperator scheduler to use <code>release/1.11</code> branch by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8829\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8829</a></li>\n<li class=\"\">Spice Cayenne fixes and test spicepods for Beta &amp; RC by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8787\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8787</a></li>\n<li class=\"\">testoperator dispatch all bird-bench database variants by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8835\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8835</a></li>\n<li class=\"\">feat: Improve column statistics handling with safe access and defaults by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8836\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8836</a></li>\n<li class=\"\">cluster: mTLS verification by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8837\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8837</a></li>\n<li class=\"\">fix: 8770: Unsupported ScalarFunctionExpr in ORDER BY by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8838\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8838</a></li>\n<li class=\"\">Workflow tweaks by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8845\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8845</a></li>\n<li class=\"\">Cayenne: metadata catalog should respect cayenne_file_path location by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8844\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8844</a></li>\n<li class=\"\">Expand Cayenne feature coverage by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8848\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8848</a></li>\n<li class=\"\">docs: HA distributed query decisions by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8817\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8817</a></li>\n<li class=\"\">fix(optimizer): Fix correctness issues in UnionProjectionPushdownOptimizer by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8851\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8851</a></li>\n<li class=\"\">Pin reqwest to 0.12.24 to fix HuggingFace embedding model download by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8853\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8853</a></li>\n<li class=\"\">Fix builds and pin to Ubuntu 22.04 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8856\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8856</a></li>\n<li class=\"\">Revert \"Fix builds and pin to Ubuntu 22.04\" by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8861\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8861</a></li>\n<li class=\"\">Ensure setup Rust is run by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8862\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8862</a></li>\n<li class=\"\">fix: Ubuntu 24.04+ renamed libaio1 to libaio1t64 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8865\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8865</a></li>\n<li class=\"\">Upgrade to Pulls with Spice v2 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8866\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8866</a></li>\n<li class=\"\">Add limit and configuration name to 'testoperator run text-to-sql' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8839\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8839</a></li>\n<li class=\"\">PR check and test optimization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8868\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8868</a></li>\n<li class=\"\">Upgrade S3 Vectors SDK and improve test robustness by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8867\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8867</a></li>\n<li class=\"\">[Testoperator] Query level and improved aggregate level for NSQL by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8840\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8840</a></li>\n<li class=\"\">Add docker build for private branches for ghcr.io/spiceai/spiceai-dev by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8873\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8873</a></li>\n<li class=\"\">Expand the data acceleration round-trip test coverage by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8855\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8855</a></li>\n<li class=\"\">fix: Provide a better error for improper bucket UDF arguments by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8849\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8849</a></li>\n<li class=\"\">ScyllaDB Data Connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8827\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8827</a></li>\n<li class=\"\">Use tokio-rusqlite for Spice Cayenne SQLite by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8857\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8857</a></li>\n<li class=\"\">Cayenne: fix FuturesUnordered reentrant drop crash by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8863\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8863</a></li>\n<li class=\"\">Bump github/codeql-action from 4.31.9 to 4.31.10 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8884\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8884</a></li>\n<li class=\"\">Bump golang.org/x/sys from 0.39.0 to 0.40.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8881\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8881</a></li>\n<li class=\"\">Bump github.com/spiceai/gospice/v8 from 8.0.0 to 8.0.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8883\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8883</a></li>\n<li class=\"\">Bump roaring from 0.11.2 to 0.11.3 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8885\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8885</a></li>\n<li class=\"\">Bump golang.org/x/mod from 0.31.0 to 0.32.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8882\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8882</a></li>\n<li class=\"\">Bump aws-sdk-s3 from 1.115.0 to 1.119.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8887\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8887</a></li>\n<li class=\"\">Bump libc from 0.2.177 to 0.2.180 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8886\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8886</a></li>\n<li class=\"\">Bump tokio-util from 0.7.17 to 0.7.18 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8889\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8889</a></li>\n<li class=\"\">Bump governor from 0.10.2 to 0.10.4 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8888\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8888</a></li>\n<li class=\"\">fix: flaky test test_concurrent_partition_creation by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8898\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8898</a></li>\n<li class=\"\">Update Cayenne snapshots for TPC-DS by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8890\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8890</a></li>\n<li class=\"\">Add more buckets to histogram metrics by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8850\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8850</a></li>\n<li class=\"\">feat: Add HTTP health endpoint for cluster executors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8899\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8899</a></li>\n<li class=\"\">feat: Implement model listing functionality for multiple providers by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8901\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8901</a></li>\n<li class=\"\">feat: Initial HA schedulers distributed query implementation by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8852\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8852</a></li>\n<li class=\"\">fix: infer executor role from --scheduler-address when --role is omitted by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8903\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8903</a></li>\n<li class=\"\">Improve install scripts and remove jq dependency by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8847\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8847</a></li>\n<li class=\"\">Benchmarks: sort PartitionedUnionExec children for deterministic snapshot comparison by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8877\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8877</a></li>\n<li class=\"\">Cayenne: share VortexFileCache across partitions via CayenneContext by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8880\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8880</a></li>\n<li class=\"\">Update ballista to add exponential backoff for scheduler disconnection by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8905\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8905</a></li>\n<li class=\"\">Configurably add BirdBench evidence to testoperator text-to-SQL. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8904\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8904</a></li>\n<li class=\"\">Helm: Allow command override via values.yaml by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8906\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8906</a></li>\n<li class=\"\">Fix distributed query gRPC message size limit (16MB -&gt; 100MB) by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8900\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8900</a></li>\n<li class=\"\">OS specific setup actions by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8909\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8909</a></li>\n<li class=\"\">Cayenne should warn if unable to parse configuration value by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8907\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8907</a></li>\n<li class=\"\">Add snapshots widgets to example dashboard by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8910\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8910</a></li>\n<li class=\"\">Add quality criteria for the features by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8897\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8897</a></li>\n<li class=\"\">Improve Accelerated Datasets section for Grafana/Datadog dashboards by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8915\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8915</a></li>\n<li class=\"\">Use HTTP traceparent in NSQL to support concurrency in 'testoperator run text-to-SQL' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8912\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8912</a></li>\n<li class=\"\">Remove setup for cc from integration_models.yml by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8917\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8917</a></li>\n<li class=\"\">Propagate Azure and GCS credentials to executors in cluster mode by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8918\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8918</a></li>\n<li class=\"\">Cayenne: fix memory growth due to vortex metrics allocation by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8908\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8908</a></li>\n<li class=\"\">fix(caching): Deduplicate refresh requests for JSON array responses by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8921\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8921</a></li>\n<li class=\"\">fix(caching): Return cached data directly for unfiltered queries (SELECT *) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8919\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8919</a></li>\n<li class=\"\">Correct MinIO path syntax for spiced download by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8916\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8916</a></li>\n<li class=\"\">Acceleration snapshots compaction + Improved Snapshots UX by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8858\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8858</a></li>\n<li class=\"\">Change base image from bookworm-slim to trixie-slim by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8923\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8923</a></li>\n<li class=\"\">Add <code>testoperator run text-to-sql</code> metrics from LogicalPlan by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8895\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8895</a></li>\n<li class=\"\">Fix spicepod dependencies in testoperator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8875\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8875</a></li>\n<li class=\"\">Update copilot instructions for data correctness by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8922\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8922</a></li>\n<li class=\"\">Add <code>BootstrapStatus</code> + Snapshot bootstrapping parallelization by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8926\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8926</a></li>\n<li class=\"\">fix: add missing feature-gate for AWS Secrets Manager error variant by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8928\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8928</a></li>\n<li class=\"\">refactor: make ConnectorParams fields public for external connectors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8929\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8929</a></li>\n<li class=\"\">fix(caching): SWR refreshes only accessed entry instead of all stale rows by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8931\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8931</a></li>\n<li class=\"\">Cayenne: include <code>cayenne_metadata_dir</code> to known params by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8933\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8933</a></li>\n<li class=\"\">Rename Ingestion Lag chart in example dashboards by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8932</a></li>\n<li class=\"\">fix(caching): Fix HTTP caching always MISS when projection excludes fetched_at by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8930\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8930</a></li>\n<li class=\"\">Reset expiry after snapshot bootstraping for Caching by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8925\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8925</a></li>\n<li class=\"\">Set use_ssl=false for sccache by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8945\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8945</a></li>\n<li class=\"\">Hash indexing for Arrow Acceleration by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8924\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8924</a></li>\n<li class=\"\">[Cayenne] Acceleration snapshots support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7973\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7973</a></li>\n<li class=\"\">perf(caching): Non-blocking cache writes on cache miss by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8948\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8948</a></li>\n<li class=\"\">Update NSQL models by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8951\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8951</a></li>\n<li class=\"\">Hash Index Key verification by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8949\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8949</a></li>\n<li class=\"\">Add <code>snapshots_creation_policy</code> param by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8954\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8954</a></li>\n<li class=\"\">Remove candle &amp; cudarc from non-models build by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8955\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8955</a></li>\n<li class=\"\">Acceleration Snapshots API and CLI by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8934\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8934</a></li>\n<li class=\"\">Ignore test for <code>data_components arrow::indexed::test_primary_key_value_matches_batch</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8962\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8962</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8965\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8965</a></li>\n<li class=\"\">Hash Index secondary index support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8958\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8958</a></li>\n<li class=\"\">fix: Support primary key constraints in partitioned DuckDB tables mode by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8966\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8966</a></li>\n<li class=\"\">perf(caching): Batch cache writes by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8959\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8959</a></li>\n<li class=\"\">CI perf optimizations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8968\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8968</a></li>\n<li class=\"\">Fix Makefile linting by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8970\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8970</a></li>\n<li class=\"\">Fixes in <code>testoperator run text-to-sql</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8927</a></li>\n<li class=\"\">implement <code>Chat::as_sql</code> for xAI anthropic by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8957\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8957</a></li>\n<li class=\"\">Fix <code>duckdb_file_path</code> in search integration test by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8972\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8972</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8971\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8971</a></li>\n<li class=\"\">Maintenance updates to Anthropic API by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8956\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8956</a></li>\n<li class=\"\">Add CacheBackend Trait, implement pingora-lru, and add throughput tests by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8080\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8080</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8974\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8974</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8975\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8975</a></li>\n<li class=\"\">Make accelerator shutdown more robust by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8969\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8969</a></li>\n<li class=\"\">feat(duckdb): Add <code>on_refresh_sort_columns</code> for post-write data ordering (initial version) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8964\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8964</a></li>\n<li class=\"\">Proper handling for initial snapshot by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8911\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8911</a></li>\n<li class=\"\">fix: Remove --no-default-features from cargo-hack command in features workflow by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8977\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8977</a></li>\n<li class=\"\">build(deps): bump actions/cache from 5.0.1 to 5.0.2 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8983\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8983</a></li>\n<li class=\"\">build(deps): bump actions/checkout from 4 to 6 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8982\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8982</a></li>\n<li class=\"\">build(deps): bump actions/setup-go from 6.1.0 to 6.2.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8984\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8984</a></li>\n<li class=\"\">build(deps): bump github.com/olekukonko/tablewriter from 1.1.2 to 1.1.3 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8979\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8979</a></li>\n<li class=\"\">build(deps): bump github.com/klauspost/compress from 1.18.2 to 1.18.3 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8980\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8980</a></li>\n<li class=\"\">Add /v1/queries and Arrow Flight async APIs by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8946\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8946</a></li>\n<li class=\"\">build(deps): bump Vampire/setup-wsl from 5 to 6 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8981\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8981</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8973\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8973</a></li>\n<li class=\"\">build(deps): bump insta from 1.46.0 to 1.46.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8988\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8988</a></li>\n<li class=\"\">build(deps): bump schemars from 1.1.0 to 1.2.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8985\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8985</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8978\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8978</a></li>\n<li class=\"\">fix: Data correctness edge cases by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8953\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8953</a></li>\n<li class=\"\">Correct MinIO path syntax for spiced download (Part 2) by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8995\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8995</a></li>\n<li class=\"\">Make <code>.spice/data</code> in search integration tests by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8992\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8992</a></li>\n<li class=\"\">fix: Hash index composite keys null values by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9001\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9001</a></li>\n<li class=\"\">Update Cayenne status to Beta by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9002\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9002</a></li>\n<li class=\"\">fix: Disable TPC-DS result validation (not yet supported) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9004\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9004</a></li>\n<li class=\"\">feat: Upgrade to DataFusion v51 and dependencies by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8864\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8864</a></li>\n<li class=\"\">Improvements for <code>snapshots_creation_policy</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9003\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9003</a></li>\n<li class=\"\">fix(ci): restore cached spicepod-validator binary instead of lookup-only by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9007\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9007</a></li>\n<li class=\"\">Update version by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/9010\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#9010</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.11.0-rc.2",
            "title": "Spice v1.11.0-rc.2 (Jan 22, 2026)",
            "summary": "Announcing the release of Spice v1.11.0-rc.2!",
            "date_modified": "2026-01-22T00:00:00.000Z",
            "author": {
                "name": "Viktor Yershov",
                "url": "https://github.com/krinart"
            },
            "tags": [
                "release",
                "cayenne",
                "acceleration",
                "datafusion",
                "iceberg",
                "snapshots",
                "scylladb",
                "data-connector",
                "distributed-query",
                "caching",
                "dynamodb"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.11.0-rc.1",
            "content_html": "<p>Announcing the release of Spice v1.11.0-rc.1! <!-- -->⭐</p>\n<p>v1.11.0-rc.1 is the first release candidate for early testing of v1.11 features including <strong>Distributed Query with mTLS</strong> for enterprise-grade secure cluster communication, new <strong>SMB and NFS Data Connectors</strong> for direct network-attached storage access, <strong>Prepared Statements</strong> for improved query performance and security, <strong>Cayenne Accelerator Enhancements</strong> with Key-based deletion vectors and Amazon S3 Express One Zone support, <strong>Google LLM Support</strong> for expanded AI inference capabilities, and <strong>Spice Java SDK v0.5.0</strong> with parameterized query support.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1110-rc1\">What's New in v1.11.0-rc.1<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#whats-new-in-v1110-rc1\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.11.0-rc.1\" title=\"Direct link to What's New in v1.11.0-rc.1\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distributed-query-with-mtls\">Distributed Query with mTLS<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#distributed-query-with-mtls\" class=\"hash-link\" aria-label=\"Direct link to Distributed Query with mTLS\" title=\"Direct link to Distributed Query with mTLS\" translate=\"no\">​</a></h3>\n<p><strong>Enterprise-Grade Secure Cluster Communication</strong>: <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed query</a> cluster mode now enables mutual TLS (mTLS) by default for secure communication between schedulers and executors. Internal cluster communication includes highly privileged RPC calls like fetching Spicepod configuration and expanding secrets. mTLS ensures only authenticated nodes can join the cluster and access sensitive data.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Mutual TLS Authentication</strong>: All executor-to-scheduler and executor-to-executor gRPC connections on the internal cluster port (50052) are secured with mTLS, securing communication, and preventing unauthorized nodes from joining the cluster</li>\n<li class=\"\"><strong>Certificate Management CLI</strong>: New developer <code>spice cluster tls init</code> and <code>spice cluster tls add</code> commands for generating CA certificates and node certificates with proper SANs (Subject Alternative Names)</li>\n<li class=\"\"><strong>Simplified CLI Arguments</strong>: Renamed cluster arguments for clarity (<code>--role</code>, <code>--scheduler-address</code>, <code>--node-mtls-*</code>) with <code>--scheduler-address</code> implying <code>--role executor</code></li>\n<li class=\"\"><strong>Port Separation</strong>: Public services (Flight queries, HTTP API, Prometheus metrics) remain on ports 50051, 8090, and 9090 respectively, while internal cluster services (<code>SchedulerGrpcServer</code>, <code>ClusterService</code>) are isolated on port 50052 with mTLS enforced</li>\n<li class=\"\"><strong>Development Mode</strong>: Use <code>--allow-insecure-connections</code> flag to disable mTLS requirement for local development and testing</li>\n</ul>\n<p><strong>Quick Start</strong>:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Generate certificates for development</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice cluster tls init</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice cluster tls </span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">add</span><span class=\"token plain\"> scheduler1</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice cluster tls </span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">add</span><span class=\"token plain\"> executor1</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start scheduler</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced </span><span class=\"token parameter variable\" style=\"color:hsl(221, 87%, 60%)\">--role</span><span class=\"token plain\"> scheduler </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --node-mtls-ca-certificate-file ca.crt </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --node-mtls-certificate-file scheduler1.crt </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --node-mtls-key-file scheduler1.key</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start executor</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced </span><span class=\"token parameter variable\" style=\"color:hsl(221, 87%, 60%)\">--role</span><span class=\"token plain\"> executor </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --scheduler-address https://scheduler1:50052 </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --node-mtls-ca-certificate-file ca.crt </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --node-mtls-certificate-file executor1.crt </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">\\</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  --node-mtls-key-file executor1.key</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"smb-and-nfs-data-connectors\">SMB and NFS Data Connectors<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#smb-and-nfs-data-connectors\" class=\"hash-link\" aria-label=\"Direct link to SMB and NFS Data Connectors\" title=\"Direct link to SMB and NFS Data Connectors\" translate=\"no\">​</a></h3>\n<p><strong>Network-Attached Storage Connectors</strong>: New <a href=\"https://spiceai.org/docs/components/data-connectors\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">data connectors</a> for SMB (Server Message Block) and NFS (Network File System) protocols enable direct federated queries against network-attached storage without requiring data movement to cloud object stores.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SMB Protocol Support</strong>: Connect to Windows file shares and Samba servers with authentication support</li>\n<li class=\"\"><strong>NFS Protocol Support</strong>: Connect to Unix/Linux NFS exports for direct data access</li>\n<li class=\"\"><strong>Federated Queries</strong>: Query Parquet, CSV, JSON, and other file formats directly from network storage with full SQL support</li>\n<li class=\"\"><strong>Acceleration Support</strong>: Accelerate data from SMB/NFS sources using DuckDB, Spice Cayenne, or other accelerators</li>\n</ul>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># SMB share</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> smb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//fileserver/share/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> smb_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">smb_username</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">SMB_USER</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">smb_password</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">SMB_PASS</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># NFS export</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> nfs</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//nfsserver/export/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> nfs_data</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Connectors Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"prepared-statements\">Prepared Statements<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#prepared-statements\" class=\"hash-link\" aria-label=\"Direct link to Prepared Statements\" title=\"Direct link to Prepared Statements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Query Performance and Security</strong>: Spice now supports prepared statements, enabling parameterized queries that improve both performance through query plan caching and security by preventing SQL injection attacks.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Query Plan Caching</strong>: Prepared statements cache query plans, reducing planning overhead for repeated queries</li>\n<li class=\"\"><strong>SQL Injection Prevention</strong>: Parameters are safely bound, preventing SQL injection vulnerabilities</li>\n<li class=\"\"><strong>Arrow Flight SQL Support</strong>: Full prepared statement support via <a href=\"https://arrow.apache.org/docs/format/FlightSql.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Arrow Flight SQL</a> protocol</li>\n</ul>\n<p><strong>SDK Support</strong>:</p>\n<table><thead><tr><th>SDK</th><th>Support</th><th>Min Version</th><th>Method</th></tr></thead><tbody><tr><td><a href=\"https://github.com/spiceai/gospice\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">gospice</a> (Go)</td><td>✅ Full</td><td>v8.0.0+</td><td><code>SqlWithParams()</code> with typed constructors (<code>Int32Param</code>, <code>StringParam</code>, <code>TimestampParam</code>, etc.)</td></tr><tr><td><a href=\"https://github.com/spiceai/spice-rs\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-rs</a> (Rust)</td><td>✅ Full</td><td>v3.0.0+</td><td><code>query_with_params()</code> with <code>RecordBatch</code> parameters</td></tr><tr><td><a href=\"https://github.com/spiceai/spice-dotnet\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-dotnet</a> (.NET)</td><td>❌ Not yet</td><td>-</td><td>Coming soon</td></tr><tr><td><a href=\"https://github.com/spiceai/spice-java\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-java</a> (Java)</td><td>✅ Full</td><td>v0.5.0+</td><td><code>queryWithParams()</code> with typed <code>Param</code> constructors (<code>Param.int64()</code>, <code>Param.string()</code>, etc.)</td></tr><tr><td><a href=\"https://github.com/spiceai/spice.js\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice.js</a> (JavaScript)</td><td>❌ Not yet</td><td>-</td><td>Coming soon</td></tr><tr><td><a href=\"https://github.com/spiceai/spicepy\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spicepy</a> (Python)</td><td>❌ Not yet</td><td>-</td><td>Coming soon</td></tr></tbody></table>\n<p><strong>Example (Go)</strong>:</p>\n<div class=\"language-go codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-go codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">import</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"github.com/spiceai/gospice/v8\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">client</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">_</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">NewClient</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">defer</span><span class=\"token plain\"> client</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">Close</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">// Parameterized query with typed parameters</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">_</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> client</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">SqlWithParams</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">ctx</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"SELECT * FROM products WHERE price &gt; $1 AND category = $2\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">Float64Param</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10.0</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">StringParam</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"electronics\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><br></span></code></pre></div></div>\n<p><strong>Example (Java)</strong>:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.SpiceClient;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.Param;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import org.apache.arrow.adbc.core.ArrowReader;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">try (SpiceClient client = new SpiceClient()) {</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With automatic type inference</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM products WHERE price &gt; $1 AND category = $2\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        10.0, \"electronics\");</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With explicit typed parameters</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM products WHERE price &gt; $1 AND category = $2\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.float64(10.0),</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.string(\"electronics\"));</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">}</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/query-federation/parameterized-queries\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Parameterized Queries Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-cayenne-accelerator-enhancements\">Spice Cayenne Accelerator Enhancements<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#spice-cayenne-accelerator-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Spice Cayenne Accelerator Enhancements\" title=\"Direct link to Spice Cayenne Accelerator Enhancements\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cayenne data accelerator</a> has been improved with several key enhancements:</p>\n<ul>\n<li class=\"\"><strong>KeyBased Deletion Vectors</strong>: Improved deletion vector support using key-based lookups for more efficient data management and faster delete operations. KeyBased deletion vectors are more memory-efficient than positional vectors for sparse deletions.</li>\n<li class=\"\"><strong>S3 Express One Zone Support</strong>: Store Cayenne data files in <a href=\"https://aws.amazon.com/s3/storage-classes/express-one-zone/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Express One Zone</a> for single-digit millisecond latency, ideal for latency-sensitive query workloads that require persistence.</li>\n</ul>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> fast_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Use S3 Express One Zone for data files</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">cayenne_s3express_bucket</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">express</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">usw2</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">az1</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">x</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">s3</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"google-llm-support\">Google LLM Support<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#google-llm-support\" class=\"hash-link\" aria-label=\"Direct link to Google LLM Support\" title=\"Direct link to Google LLM Support\" translate=\"no\">​</a></h3>\n<p><strong>Expanded AI Provider Support</strong>: Spice now supports Google embedding and chat models via the Google AI provider, expanding the available LLM options for AI inference workloads alongside existing providers like OpenAI, Anthropic, and AWS Bedrock.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Google Chat Models</strong>: Access Google's Gemini models for chat completions</li>\n<li class=\"\"><strong>Google Embeddings</strong>: Generate embeddings using Google's text embedding models</li>\n<li class=\"\"><strong>Unified API</strong>: Use the same OpenAI-compatible API endpoints for all LLM providers</li>\n</ul>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">models</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> google</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">gemini</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">2.0</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">flash</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> gemini</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">google_api_key</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">GOOGLE_API_KEY</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> google</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">text</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">embedding</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">004</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> google_embeddings</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">google_api_key</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> $</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\">secrets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">GOOGLE_API_KEY</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://docs.spiceai.org/components/models/google\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Google LLM Documentation</a> (see <a href=\"https://github.com/spiceai/docs/pull/1286\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">docs PR #1286</a>).</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-java-sdk-v050\">Spice Java SDK v0.5.0<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#spice-java-sdk-v050\" class=\"hash-link\" aria-label=\"Direct link to Spice Java SDK v0.5.0\" title=\"Direct link to Spice Java SDK v0.5.0\" translate=\"no\">​</a></h3>\n<p><strong>Parameterized Query Support for Java</strong>: The <a href=\"https://github.com/spiceai/spice-java\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Java SDK</a> v0.5.0 introduces parameterized queries using ADBC (Arrow Database Connectivity), providing a safer and more efficient way to execute queries with dynamic parameters.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQL Injection Prevention</strong>: Parameters are safely bound, preventing SQL injection vulnerabilities</li>\n<li class=\"\"><strong>Automatic Type Inference</strong>: Java types are automatically mapped to Arrow types (e.g., <code>double</code> → <code>Float64</code>, <code>String</code> → <code>Utf8</code>)</li>\n<li class=\"\"><strong>Explicit Type Control</strong>: Use the new <code>Param</code> class with typed factory methods (<code>Param.int64()</code>, <code>Param.string()</code>, <code>Param.decimal128()</code>, etc.) for precise control over Arrow types</li>\n<li class=\"\"><strong>Updated Dependencies</strong>: Apache Arrow Flight SQL upgraded to 18.3.0, plus new ADBC driver support</li>\n</ul>\n<p><strong>Example</strong>:</p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.SpiceClient;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">import ai.spice.Param;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">try (SpiceClient client = new SpiceClient()) {</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With automatic type inference</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM taxi_trips WHERE trip_distance &gt; $1 LIMIT 10\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        5.0);</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    // With explicit typed parameters for precise control</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ArrowReader reader = client.queryWithParams(</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        \"SELECT * FROM orders WHERE order_id = $1 AND amount &gt;= $2\",</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.int64(12345),</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        Param.decimal128(new BigDecimal(\"99.99\"), 10, 2));</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">}</span><br></span></code></pre></div></div>\n<p><strong>Maven</strong>:</p>\n<div class=\"language-xml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-xml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">dependency</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">groupId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\">ai.spice</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">groupId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">artifactId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\">spiceai</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">artifactId</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">version</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\">0.5.0</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">version</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&lt;/</span><span class=\"token tag\" style=\"color:hsl(5, 74%, 59%)\">dependency</span><span class=\"token tag punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://github.com/spiceai/spice-java\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Java SDK Repository</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"opentelemetry-improvements\">OpenTelemetry Improvements<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#opentelemetry-improvements\" class=\"hash-link\" aria-label=\"Direct link to OpenTelemetry Improvements\" title=\"Direct link to OpenTelemetry Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Unified Telemetry Endpoint</strong>: OTel metrics ingestion has been consolidated to the Flight port (50051), simplifying deployment by removing the separate OTel port (50052). The push-based metrics exporter continues to support integration with OpenTelemetry collectors.</p>\n<blockquote>\n<p><strong>Note</strong>: This is a breaking change. Update your configurations if you were using the dedicated OTel port 50052. Internal cluster communication now uses port 50052 exclusively.</p>\n</blockquote>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"developer-experience-improvements\">Developer Experience Improvements<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#developer-experience-improvements\" class=\"hash-link\" aria-label=\"Direct link to Developer Experience Improvements\" title=\"Direct link to Developer Experience Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Turso v0.3.2 Upgrade</strong>: Upgraded Turso accelerator for improved performance and reliability</li>\n<li class=\"\"><strong>Rust 1.91 Upgrade</strong>: Updated to Rust 1.91 for latest language features and performance improvements</li>\n<li class=\"\"><strong>Spice Cloud CLI</strong>: Added <code>spice cloud</code> CLI commands for cloud deployment management</li>\n<li class=\"\"><strong>Improved Spicepod Schema</strong>: Enhanced JSON schema generation for better IDE support and validation</li>\n<li class=\"\"><strong>Acceleration Snapshots</strong>: Added configurable <code>snapshots_create_interval</code> for periodic acceleration snapshots independent of refresh cycles</li>\n<li class=\"\"><strong>Tiered Caching with Localpod</strong>: The <a href=\"https://spiceai.org/docs/components/data-connectors/localpod\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Localpod connector</a> now supports <code>caching</code> refresh mode, enabling multi-layer acceleration where a persistent cache feeds a fast in-memory cache</li>\n<li class=\"\"><strong>GitHub Data Connector</strong>: Added workflows and workflow runs support for GitHub repositories</li>\n<li class=\"\"><strong>NDJSON/LDJSON Support</strong>: Added support for Newline Delimited JSON and Line Delimited JSON file formats</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed DynamoDB IAM role authentication with new <code>dynamodb_auth: iam_role</code> parameter</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed cluster executors to use scheduler's <code>temp_directory</code> parameter for shuffle files</li>\n<li class=\"\"><strong>Reliability</strong>: Initialize secrets before object stores in cluster executor mode</li>\n<li class=\"\"><strong>Reliability</strong>: Added page-level retry with backoff for transient GitHub GraphQL errors</li>\n<li class=\"\"><strong>Performance</strong>: Improved statistics for rewritten <code>DistributeFileScanOptimizer</code> plans</li>\n<li class=\"\"><strong>Developer Experience</strong>: Added <code>max_message_size</code> configuration for Flight service</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"otel-ingestion-port-change\">OTel Ingestion Port Change<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#otel-ingestion-port-change\" class=\"hash-link\" aria-label=\"Direct link to OTel Ingestion Port Change\" title=\"Direct link to OTel Ingestion Port Change\" translate=\"no\">​</a></h3>\n<p>OTel ingestion has been moved to the Flight port (50051), removing the separate OTel port 50052. Port 50052 is now used exclusively for internal cluster communication. Update your configurations if you were using the dedicated OTel port.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"distributed-query-cluster-mode-requires-mtls\">Distributed Query Cluster Mode Requires mTLS<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#distributed-query-cluster-mode-requires-mtls\" class=\"hash-link\" aria-label=\"Direct link to Distributed Query Cluster Mode Requires mTLS\" title=\"Direct link to Distributed Query Cluster Mode Requires mTLS\" translate=\"no\">​</a></h3>\n<p>Distributed query cluster mode now requires mTLS for secure communication between cluster nodes. This is a security enhancement to prevent unauthorized nodes from joining the cluster and accessing secrets.</p>\n<p><strong>Migration Steps</strong>:</p>\n<ol>\n<li class=\"\">Generate certificates using <code>spice cluster tls init</code> and <code>spice cluster tls add</code></li>\n<li class=\"\">Update scheduler and executor startup commands with <code>--node-mtls-*</code> arguments</li>\n<li class=\"\">For development/testing, use <code>--allow-insecure-connections</code> to opt out of mTLS</li>\n</ol>\n<p><strong>Renamed CLI Arguments</strong>:</p>\n<table><thead><tr><th>Old Name</th><th>New Name</th></tr></thead><tbody><tr><td><code>--cluster-mode</code></td><td><code>--role</code></td></tr><tr><td><code>--cluster-ca-certificate-file</code></td><td><code>--node-mtls-ca-certificate-file</code></td></tr><tr><td><code>--cluster-certificate-file</code></td><td><code>--node-mtls-certificate-file</code></td></tr><tr><td><code>--cluster-key-file</code></td><td><code>--node-mtls-key-file</code></td></tr><tr><td><code>--cluster-address</code></td><td><code>--node-bind-address</code></td></tr><tr><td><code>--cluster-advertise-address</code></td><td><code>--node-advertise-address</code></td></tr><tr><td><code>--cluster-scheduler-url</code></td><td><code>--scheduler-address</code></td></tr></tbody></table>\n<p><strong>Removed CLI Arguments</strong>:</p>\n<ul>\n<li class=\"\"><code>--cluster-api-key</code>: Replaced by mTLS authentication</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 84 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To try v1.11.0-rc.1, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade --version 1.11.0-rc.1</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.11.0-rc.1</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.11.0-rc.1</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.11.0-rc.1</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.11.0-rc.1#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">OTel exporter for push metrics by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8442\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8442</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8448\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8448</a></li>\n<li class=\"\">Add TPCH append tests to scheduled dispatch workflow by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8451\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8451</a></li>\n<li class=\"\">Add snapshot creation logging by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8469\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8469</a></li>\n<li class=\"\">Fix PeriodicReader panic by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8471\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8471</a></li>\n<li class=\"\">Benchmarks: increase readiness timeout for turso acceleration (TPC-H) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8470\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8470</a></li>\n<li class=\"\">fix: Pin CUDA build actions to commits by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8477\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8477</a></li>\n<li class=\"\">Add Criterion benchmarking to <code>chunking</code> crate. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8431\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8431</a></li>\n<li class=\"\">DuckDB agg pushdown: gate behind accelerator parameter by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8474</a></li>\n<li class=\"\">Rename <code>aggregate_pushdown_optimization</code> -&gt; <code>optimizer_duckdb_aggregate_pushdown</code> by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8485\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8485</a></li>\n<li class=\"\">Handle throttling exception for DynamoDB streams by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8492\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8492</a></li>\n<li class=\"\">docs: Add release notes by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8478\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8478</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8496\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8496</a></li>\n<li class=\"\">Move 'test_projection_pushdown' to <code>runtime-datafusion</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8490\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8490</a></li>\n<li class=\"\">Fix OTEL metrics HTTP exporter client setup by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8489\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8489</a></li>\n<li class=\"\">Update endgame to include new caching accelerator cookbook by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8487\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8487</a></li>\n<li class=\"\">DynamoDB tests and fixes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8491\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8491</a></li>\n<li class=\"\">Align <code>make lint-rust-fix</code> with <code>make lint-rust</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8499\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8499</a></li>\n<li class=\"\">fix: Remove unused Cayenne parameters by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8500\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8500</a></li>\n<li class=\"\">Force task history <code>captured_plan</code> outputs to be captured even if they would be filtered out otherwise by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8501\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8501</a></li>\n<li class=\"\">release: post-release updates by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8503\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8503</a></li>\n<li class=\"\">CI: Fix E2E models dispatch by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8505\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8505</a></li>\n<li class=\"\">Use an isolated Tokio runtime for refresh tasks that is separate from the main query API by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8504\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8504</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8512\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8512</a></li>\n<li class=\"\">Update dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8513\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8513</a></li>\n<li class=\"\">fix: Avoid double hashing cache key by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8511\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8511</a></li>\n<li class=\"\">fix: Eagerly drop cached records for results larger than max by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8516\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8516</a></li>\n<li class=\"\">Revert \"fix: Move enforce-pulls to hosted runner (#8686)\" by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8709\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8709</a></li>\n<li class=\"\">Initial 'testoperator run text-to-sql' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8618\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8618</a></li>\n<li class=\"\">Add support for abfss by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8706\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8706</a></li>\n<li class=\"\">Add testoperator TPCH dispatch for ABFS with hierarchical namespace disabled + versioning enabled by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8711\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8711</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8692\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8692</a></li>\n<li class=\"\">cluster: validate --role argument by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8717\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8717</a></li>\n<li class=\"\">Upgrade to Turso v0.3.2 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8716\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8716</a></li>\n<li class=\"\">Rename --insecure to --allow-insecure-connections to be consistent with existing naming by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8720\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8720</a></li>\n<li class=\"\">Remove 'testoperator run http-consistency/http-overhead' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8708\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8708</a></li>\n<li class=\"\">refactor: Remove cluster feature flag by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8718\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8718</a></li>\n<li class=\"\">Docs: Distributed query ADR by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8608\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8608</a></li>\n<li class=\"\">Use <code>model.datasets</code> to allowlist on tools by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8714\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8714</a></li>\n<li class=\"\">cluster: quality of life improvements to starting cluster mode locally by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8719\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8719</a></li>\n<li class=\"\">Docs: Ballista extension ADR by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8616\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8616</a></li>\n<li class=\"\">Improve deprecation messages when going from prefixed -&gt; non-prefixed. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8724\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8724</a></li>\n<li class=\"\">Remove <code>tools</code> from auto-defaults by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8725\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8725</a></li>\n<li class=\"\">Make distinct providers for vector spilling, vector partitioning. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8546\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8546</a></li>\n<li class=\"\">cluster: default scheduler address port by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8728\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8728</a></li>\n<li class=\"\">Add Makefile targets for testoperator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8729\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8729</a></li>\n<li class=\"\"><code>text-to-sql</code> dispatch in testoperator by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8705\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8705</a></li>\n<li class=\"\">DR-006: High Availability Distributed Query with Stateless Schedulers by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8721\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8721</a></li>\n<li class=\"\">DR-007: mTLS for Distributed Query Cluster Communication by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8722\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8722</a></li>\n<li class=\"\">SMB and NFS improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8710\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8710</a></li>\n<li class=\"\">fix: Cluster executors use scheduler's temp_directory for shuffle files by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8733\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8733</a></li>\n<li class=\"\">use 'max_message_size' in flight service too by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8730\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8730</a></li>\n<li class=\"\">Add page-level retry for transient GraphQL errors with backoff and increase GitHub rate limit buffer up to 100 by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8726\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8726</a></li>\n<li class=\"\">Make testoperator Dockerfile; CI to build docker image to <code>ghcr.io</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8732\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8732</a></li>\n<li class=\"\">cluster: UnionProjectionPushdownOptimizer: Add projection pushdown diagnostics for union children by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8734\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8734</a></li>\n<li class=\"\">Fix column projection order mismatch with location metadata columns by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8738\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8738</a></li>\n<li class=\"\">Fixes for testoperator. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8737\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8737</a></li>\n<li class=\"\">Improve Cayenne Deletion Vectors with KeyBased support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8713\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8713</a></li>\n<li class=\"\">Fix <code>testoperator_dispatch.yaml</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8740\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8740</a></li>\n<li class=\"\">Add spice cloud CLI commands by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8528\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8528</a></li>\n<li class=\"\">Add FTP, NFS, &amp; SMB TPCH SF1 spicepods by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8739\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8739</a></li>\n<li class=\"\">Prepared Statements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7588\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7588</a></li>\n<li class=\"\">Schedule dispatch of <code>testoperator run text-to-sql</code>.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8745\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8745</a></li>\n<li class=\"\">Fix minio for ai benchmark CI by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8743\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8743</a></li>\n<li class=\"\">Upgrade to Rust 1.91 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8749\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8749</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8763\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8763</a></li>\n<li class=\"\">Benchmarks: make row count validation skip logic configurable by scale factor, query set, and overrides by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8756\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8756</a></li>\n<li class=\"\">Make benchmark tests more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8766\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8766</a></li>\n<li class=\"\">Add parameter to force using iam_role for DynamoDB by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8767\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8767</a></li>\n<li class=\"\">fix: Update Search integration test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8735\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8735</a></li>\n<li class=\"\">v1.10.4 release notes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8790\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8790</a></li>\n<li class=\"\">Trace metrics export errors by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8791\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8791</a></li>\n<li class=\"\">fix: correctly identify deprecated openai_* parameters by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8809\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8809</a></li>\n<li class=\"\">Don't CAST strings which breaks push down optimizer by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8810\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8810</a></li>\n<li class=\"\">Add timezone database to Docker image to fix Cayenne acceleration panic by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8799\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8799</a></li>\n<li class=\"\">Update async-openai to latest revision 4dcd633aad6f - brings fix for openai compatible model providers by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8816\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8816</a></li>\n<li class=\"\">Add <code>auth</code>/<code>iam_role_source</code> to DynamoDB connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8808\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8808</a></li>\n<li class=\"\">DynamoDB fixes: JSON nesting for Streams, proper batch deletions by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8821\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8821</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.11.0-rc.1",
            "title": "Spice v1.11.0-rc.1 (Jan 6, 2026)",
            "summary": "Announcing the release of Spice v1.11.0-rc.1!",
            "date_modified": "2026-01-07T00:00:00.000Z",
            "author": {
                "name": "Evgenii Khramkov",
                "url": "https://github.com/ewgenius"
            },
            "tags": [
                "release",
                "distributed-query",
                "cayenne",
                "acceleration",
                "data-connector",
                "LLM Tool"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.10.4",
            "content_html": "<p>Announcing the release of Spice v1.10.4! 🛠️</p>\n<p>v1.10.4 is a patch release with fixes for <strong>Kafka/Debezium batch commits</strong>, <strong>ABFSS URL support</strong> for Azure Data Lake Storage Gen2, and improved <strong>column projection handling</strong> for location metadata columns.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1104\">What's New in v1.10.4<a href=\"https://spiceai.org/releases/v1.10.4#whats-new-in-v1104\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.10.4\" title=\"Direct link to What's New in v1.10.4\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.10.4#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed Kafka and Debezium batch commit handling to properly commit offsets across all partitions. Previously, only the last message's offset was committed, which could cause message loss when batches contained messages from multiple partitions.</li>\n<li class=\"\"><strong>Reliability</strong>: Added support for <code>abfss://</code> URL prefix for Azure Data Lake Storage Gen2, in addition to the existing <code>abfs://</code> prefix. The <code>abfss</code> scheme indicates secure (TLS) connections to ADLS Gen2.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed column projection order mismatch when querying datasets with location metadata columns (e.g., <code>SELECT location, day, size FROM dataset</code>). Queries that specified columns in a different order than the schema would fail with \"column types must match schema types\" errors.</li>\n<li class=\"\"><strong>Developer Experience</strong>: Added detailed diagnostic logging for union projection pushdown optimization failures in cluster mode. When projection pushdown cannot be applied, debug-level logs now provide additional context to help identify the root cause.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.10.4#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.10.4#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.10.4#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 84 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.10.4#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.10.4, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.10.4</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.10.4</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.10.4#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.10.4#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Update acknowledgements by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8695\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8695</a></li>\n<li class=\"\">Proper batch commit for kafka/debezium by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8671\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8671</a></li>\n<li class=\"\">Add support for abfss by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8706\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8706</a></li>\n<li class=\"\">cluster: UnionProjectionPushdownOptimizer: Add projection pushdown diagnostics for union children by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8734\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8734</a></li>\n<li class=\"\">Fix column projection order mismatch with location metadata columns by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8738\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8738</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.10.4",
            "title": "Spice v1.10.4 (Jan 5, 2026)",
            "summary": "Announcing the release of Spice v1.10.4! 🛠️",
            "date_modified": "2026-01-05T00:00:00.000Z",
            "author": {
                "name": "Phillip LeBlanc",
                "url": "https://x.com/leblancphill"
            },
            "tags": [
                "release",
                "kafka",
                "azure",
                "monitoring"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.10.3",
            "content_html": "<p>Announcing the release of Spice v1.10.3! 🚀</p>\n<p>v1.10.3 is a patch release with improved startup reliability, fixes for Azure BlobFS versioned containers, S3 custom endpoint query resolution, and a fix for the OpenAI Responses API.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1103\">What's New in v1.10.3<a href=\"https://spiceai.org/releases/v1.10.3#whats-new-in-v1103\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.10.3\" title=\"Direct link to What's New in v1.10.3\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.10.3#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Telemetry exporter initialization now runs asynchronously, preventing blocked startup in environments with network restrictions (e.g., Kubernetes with restrictive network policies).</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed an issue where queries on Azure Blob containers with versioning enabled would fail with \"Azure does not support suffix range requests\" error in distributed query mode.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed S3 location-based queries against custom S3 endpoints (e.g., MinIO, LocalStack). Queries with <code>location</code> predicates on datasets using <code>s3_endpoint</code> and <code>s3_region</code> parameters now correctly route to the configured endpoint instead of defaulting to AWS S3.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed \"project index out of bounds\" errors in the query optimizer when union children have mismatched schemas. The optimizer now validates schema compatibility before applying projection pushdown.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed an issue where the OpenAI Responses API (<code>/v1/responses</code>) was not working correctly.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.10.3#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.10.3#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.10.3#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 84 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.10.3#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.10.3, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.10.3</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.10.3</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.10.3#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.10.3#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Upgrade to openai-async v0.32 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8635\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8635</a></li>\n<li class=\"\">Fix issue with location predicate for custom S3 endpoints + regression integration test by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8668\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8668</a></li>\n<li class=\"\">fix: Validate schema match before projection pushdown in UnionProjectionPushdownOptimizer by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8669\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8669</a></li>\n<li class=\"\">Start the anonymous telemetry exporter asynchronously by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8679\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8679</a></li>\n<li class=\"\">fix: Azure does not support suffix range requests by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8685\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8685</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.10.3",
            "title": "Spice v1.10.3 (Dec 29, 2025)",
            "summary": "Announcing the release of Spice v1.10.3! 🚀",
            "date_modified": "2025-12-29T00:00:00.000Z",
            "author": {
                "name": "Phillip LeBlanc",
                "url": "https://x.com/leblancphill"
            },
            "tags": [
                "release",
                "s3",
                "openai",
                "azure",
                "monitoring"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.10.2",
            "content_html": "<p>Announcing the release of Spice v1.10.2! 🔥</p>\n<p>v1.10.2 introduces <strong>Tiered Caching Acceleration with Localpod</strong> for multi-layer acceleration architectures, <strong>Periodic Acceleration Snapshots</strong> with configurable intervals, <strong>DynamoDB JSON Nesting</strong> for column consolidation, and <strong>Kafka/Debezium Batching</strong> for faster data ingestion. This release also includes fixes for SQLite accelerator decimal/date handling and real-time status reporting for the <code>/v1/datasets</code> and <code>/v1/models</code> API endpoints.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1102\">What's New in v1.10.2<a href=\"https://spiceai.org/releases/v1.10.2#whats-new-in-v1102\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.10.2\" title=\"Direct link to What's New in v1.10.2\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"tiered-caching-with-localpod\">Tiered Caching with Localpod<a href=\"https://spiceai.org/releases/v1.10.2#tiered-caching-with-localpod\" class=\"hash-link\" aria-label=\"Direct link to Tiered Caching with Localpod\" title=\"Direct link to Tiered Caching with Localpod\" translate=\"no\">​</a></h3>\n<p><strong>Multi-Layer Acceleration Architecture</strong>: The <a href=\"https://spiceai.org/docs/components/data-connectors/localpod\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Localpod connector</a> now supports <code>caching</code> refresh mode, enabling tiered acceleration where a persistent cache (e.g., file-mode DuckDB) feeds a fast in-memory cache (e.g., Arrow, memory-mode DuckDB).</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Automatic Cache Propagation</strong>: New cache entries automatically propagate from parent to child accelerators</li>\n<li class=\"\"><strong>Warm Startup</strong>: Child accelerators initialize from existing parent data on startup, eliminating cold-start latency</li>\n<li class=\"\"><strong>Flexible Tiering</strong>: Combine any accelerator engines (DuckDB, SQLite, Cayenne) across tiers</li>\n</ul>\n<p>Example <code>spicepod.yaml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Parent: persistent file-mode cache</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.example.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> api_cache</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> caching</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Child: fast in-memory cache fed by parent</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> localpod</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">api_cache</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> api_cache_memory</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> caching</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> arrow</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> memory</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/localpod\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Localpod Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"periodic-acceleration-snapshots\">Periodic Acceleration Snapshots<a href=\"https://spiceai.org/releases/v1.10.2#periodic-acceleration-snapshots\" class=\"hash-link\" aria-label=\"Direct link to Periodic Acceleration Snapshots\" title=\"Direct link to Periodic Acceleration Snapshots\" translate=\"no\">​</a></h3>\n<p><strong>Configurable Snapshot Intervals</strong>: A new <code>snapshots_create_interval</code> parameter enables periodic snapshot creation for accelerated datasets across all refresh modes. This provides better control over snapshot frequency and ensures consistent recovery points for accelerated data.</p>\n<p>Example <code>spicepod.yaml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> caching</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">snapshots_create_interval</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 60s </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Write a snapshot every 60 seconds</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Acceleration Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-json-nesting\">DynamoDB JSON Nesting<a href=\"https://spiceai.org/releases/v1.10.2#dynamodb-json-nesting\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB JSON Nesting\" title=\"Direct link to DynamoDB JSON Nesting\" translate=\"no\">​</a></h3>\n<p><strong>Consolidate Columns into JSON</strong>: The <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB Data Connector</a> now supports consolidating columns into a single JSON column using the <code>json_object: \"*\"</code> metadata option. This is useful when only a few columns are needed as discrete fields while the rest can be accessed as nested JSON.</p>\n<p>Example <code>spicepod.yaml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">columns</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> PK</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> SK</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> data_json</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">metadata</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">json_object</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'*'</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Captures all other columns as JSON</span><br></span></code></pre></div></div>\n<p><strong>Example Output</strong>: Given a DynamoDB table with columns <code>PK</code>, <code>SK</code>, <code>name</code>, <code>email</code>, and <code>status</code>, the resulting table schema consolidates all non-specified columns into the <code>data_json</code> column:</p>\n<table><thead><tr><th>PK</th><th>SK</th><th>data_json</th></tr></thead><tbody><tr><td>pk_1</td><td>sort_1</td><td><code>{\"name\": \"Alice\", \"email\": \"alice@example.com\", \"status\": \"active\"}</code></td></tr><tr><td>pk_2</td><td>sort_2</td><td><code>{\"name\": \"Bob\", \"email\": \"bob@example.com\", \"status\": \"inactive\"}</code></td></tr></tbody></table>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb#json-nesting\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB JSON Nesting Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"kafkadebezium-batching\">Kafka/Debezium Batching<a href=\"https://spiceai.org/releases/v1.10.2#kafkadebezium-batching\" class=\"hash-link\" aria-label=\"Direct link to Kafka/Debezium Batching\" title=\"Direct link to Kafka/Debezium Batching\" translate=\"no\">​</a></h3>\n<p><strong>Faster Data Ingestion</strong>: Configure message batching for <a href=\"https://spiceai.org/docs/components/data-connectors/kafka\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Kafka</a> and <a href=\"https://spiceai.org/docs/components/data-connectors/debezium\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Debezium</a> connectors to improve data ingestion throughput. Batching reduces processing overhead by grouping multiple messages together before insertion.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Configurable Batch Size</strong>: Control the maximum number of records per batch (default: 10,000)</li>\n<li class=\"\"><strong>Configurable Batch Duration</strong>: Set the maximum wait time before flushing a partial batch (default: 1s)</li>\n</ul>\n<p>Example <code>spicepod.yaml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> debezium</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">kafka</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">server.public.my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">batch_max_size</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10000</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Max records per batch (default: 10000)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">batch_max_duration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1s </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Max wait time per batch (default: 1s)</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/kafka\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Kafka Data Connector Documentation</a> and <a href=\"https://spiceai.org/docs/components/data-connectors/debezium\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Debezium Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.10.2#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed SQLite accelerator decimal and date type handling for improved data type accuracy.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed real-time status reporting for <code>/v1/datasets</code> and <code>/v1/models</code> API endpoints.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed Kafka warning when <code>security.protocol</code> is set to <code>PLAINTEXT</code>.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.10.2#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.10.2#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.10.2#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p><strong>New Cayenne Data Accelerator Recipe</strong>: New recipe demonstrating how to accelerate a local copy of the taxi trips dataset using Cayenne as the data accelerator engine. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Data Accelerator Recipe</a> for details.</p>\n<p><strong>New Dataset Partitioning Recipe</strong>: New recipe demonstrating how to partition accelerated datasets to improve query performance. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/acceleration/partitioning\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Dataset Partitioning</a> for details.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 84 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.10.2#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.10.2, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.10.2</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.10.2</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.10.2#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.10.2#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Fix kafka warning when <code>security.protocol</code> is set to <code>PLAINTEXT</code> by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8587\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8587</a></li>\n<li class=\"\">fix: SQLite accelerator decimal/date handling by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8606\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8606</a></li>\n<li class=\"\">feat: Enable localpod with caching mode accelerator for tiered caching by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8621\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8621</a></li>\n<li class=\"\">Remove the <code>clippy::too_many_lines</code> lint by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8549\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8549</a></li>\n<li class=\"\">Add snapshot interval for acceleration snapshots by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8627\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8627</a></li>\n<li class=\"\">Json Nesting for DynamoDB by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8623\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8623</a></li>\n<li class=\"\">Implement batching for Kafka/Debezium + null Decimal handling by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8622\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8622</a></li>\n<li class=\"\">fix: Status field in /v1/datasets &amp; /v1/models by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8633\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8633</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.10.2",
            "title": "Spice v1.10.2 (Dec 22, 2025)",
            "summary": "Announcing the release of Spice v1.10.2! 🔥",
            "date_modified": "2025-12-23T00:00:00.000Z",
            "author": {
                "name": "Sergei Grebnov",
                "url": "https://github.com/sgrebnov"
            },
            "tags": [
                "release",
                "caching",
                "snapshots",
                "dynamodb",
                "kafka",
                "sqlite"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.10.1",
            "content_html": "<p>Announcing the release of Spice v1.10.1! 🚀</p>\n<p>v1.10.1 is a patch release with <strong>Cayenne accelerator improvements</strong> including configurable compression strategies and improved partition ID handling, <strong>isolated refresh runtime</strong> for better query API responsiveness, and <strong>security hardening</strong>. In addition, the GO SDK, gospice v8 has been released.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1101\">What's New in v1.10.1<a href=\"https://spiceai.org/releases/v1.10.1#whats-new-in-v1101\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.10.1\" title=\"Direct link to What's New in v1.10.1\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cayenne-accelerator-improvements\">Cayenne Accelerator Improvements<a href=\"https://spiceai.org/releases/v1.10.1#cayenne-accelerator-improvements\" class=\"hash-link\" aria-label=\"Direct link to Cayenne Accelerator Improvements\" title=\"Direct link to Cayenne Accelerator Improvements\" translate=\"no\">​</a></h3>\n<p>Several improvements and bug fixes for the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne data accelerator</a>:</p>\n<ul>\n<li class=\"\"><strong>Compression Strategies</strong>: The new <code>cayenne_compression_strategy</code> parameter enables choosing between <code>zstd</code> for compact storage or <code>btrblocks</code> for encoding-efficient compression.</li>\n<li class=\"\"><strong>Improved Vortex Defaults</strong>: Aligned Cayenne to Vortex footer configuration for better compatibility.</li>\n<li class=\"\"><strong>Partition ID Handling</strong>: Improved partition ID generation to avoid potential locking race conditions.</li>\n</ul>\n<p>Example <code>spicepod.yaml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> my_dataset</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">cayenne_compression_strategy</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> zstd </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># or btrblocks (default)</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Data Accelerator Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"isolated-refresh-runtime\">Isolated Refresh Runtime<a href=\"https://spiceai.org/releases/v1.10.1#isolated-refresh-runtime\" class=\"hash-link\" aria-label=\"Direct link to Isolated Refresh Runtime\" title=\"Direct link to Isolated Refresh Runtime\" translate=\"no\">​</a></h3>\n<p>Refresh tasks now run on a separate Tokio runtime isolated from the main query API. This prevents long-running or resource-intensive refresh operations from impacting query latency and ensures the <code>/health</code> endpoint remains responsive during heavy refresh workloads.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"security-hardening\">Security Hardening<a href=\"https://spiceai.org/releases/v1.10.1#security-hardening\" class=\"hash-link\" aria-label=\"Direct link to Security Hardening\" title=\"Direct link to Security Hardening\" translate=\"no\">​</a></h3>\n<p>Multiple security improvements have been implemented:</p>\n<ul>\n<li class=\"\"><strong>Recursion Depth Limits</strong>: Added limits to DynamoDB and S3 Vectors integrations to prevent stack overflow from deeply nested structures, mitigating potential DoS attacks.</li>\n<li class=\"\"><strong>Spicepod Summary API</strong>: The GET <code>/v1/spicepods</code> endpoint now returns summarized information instead of full <code>spicepod.yaml</code> representations, preventing potential sensitive information leakage.</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.10.1#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Performance</strong>: Fixed double hashing of user supplied cache keys, improving cache lookup efficiency.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed idle DynamoDB Stream handling for more stable CDC operations.</li>\n<li class=\"\"><strong>Reliability</strong>: Added warnings when multiple partitions are defined for the same table.</li>\n<li class=\"\"><strong>Performance</strong>: Eagerly drop cached records for results larger than max cache size.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-go-sdk-v8\">Spice Go SDK v8<a href=\"https://spiceai.org/releases/v1.10.1#spice-go-sdk-v8\" class=\"hash-link\" aria-label=\"Direct link to Spice Go SDK v8\" title=\"Direct link to Spice Go SDK v8\" translate=\"no\">​</a></h2>\n<p>The Spice Go SDK has been upgraded to v8 with a cleaner API, parameterized queries, and health check methods: <a href=\"https://github.com/spiceai/gospice/releases/tag/v8.0.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">gospice v8.0.0</a>.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Cleaner API</strong>: New <code>Sql()</code> and <code>SqlWithParams()</code> methods with more intuitive naming.</li>\n<li class=\"\"><strong>Parameterized Queries</strong>: Safe, SQL-injection-resistant queries with automatic Go-to-Arrow type inference.</li>\n<li class=\"\"><strong>Typed Parameters</strong>: Explicit type control with constructors like <code>Decimal128Param</code>, <code>TimestampParam</code>, and more.</li>\n<li class=\"\"><strong>Health Check Methods</strong>: New <code>IsSpiceHealthy()</code> and <code>IsSpiceReady()</code> methods for instance monitoring.</li>\n<li class=\"\"><strong>Upgraded Dependencies</strong>: Apache Arrow v18 and ADBC Go driver v1.3.0.</li>\n</ul>\n<p>Example usage with a local Spice runtime:</p>\n<div class=\"language-go codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-go codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">import</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"github.com/spiceai/gospice/v8\"</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">// Initialize client for local runtime</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> gospice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">NewSpiceClient</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">defer</span><span class=\"token plain\"> spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">Close</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">if</span><span class=\"token plain\"> err </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">Init</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    gospice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">WithFlightAddress</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"grpc://localhost:50051\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"> err </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">!=</span><span class=\"token plain\"> </span><span class=\"token boolean\" style=\"color:hsl(35, 99%, 36%)\">nil</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">panic</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">err</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">// Parameterized query (safe from SQL injection)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">reader</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> err </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">:=</span><span class=\"token plain\"> spice</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">.</span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">SqlWithParams</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    ctx</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">\"SELECT * FROM users WHERE id = $1 AND created_at &gt; $2\"</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    userId</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    startTime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><br></span></code></pre></div></div>\n<p><strong>Upgrade</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">go get github.com/spiceai/gospice/v8@v8.0.0</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://docs.spice.ai/sdks/go\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Go SDK Documentation</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.10.1#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.10.1#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">GET <code>/v1/spicepods</code> no longer returns the full <code>spicepod.yaml</code> JSON representation. A summary is returned instead. See <a href=\"https://github.com/spiceai/spiceai/pull/8404\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8404</a>.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.10.1#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 82+ recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.10.1#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.10.1, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.10.1</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.10.1</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.10.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.10.1#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Return summarized spicepods from /v1/spicepods by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8404\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8404</a></li>\n<li class=\"\">DynamoDB tests and fixes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8491\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8491</a></li>\n<li class=\"\">Use an isolated Tokio runtime for refresh tasks that is separate from the main query API by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8504\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8504</a></li>\n<li class=\"\">fix: Avoid double hashing cache key by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8511\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8511</a></li>\n<li class=\"\">fix: Remove unused Cayenne parameters by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8500\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8500</a></li>\n<li class=\"\">feat: Support vortex zstd compressor by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8515\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8515</a></li>\n<li class=\"\">Fix for idle DynamoDB Stream by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8506\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8506</a></li>\n<li class=\"\">fix: Improve Cayenne errors, ID selection for table/partition creation by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8523\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8523</a></li>\n<li class=\"\">Update dependencies by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8513\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8513</a></li>\n<li class=\"\">Upgrade to gospice v8 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8524\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8524</a></li>\n<li class=\"\">fix: Add recursion depth limits to prevent DoS via deeply nested data (DynamoDB + S3 Vectors) by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8544\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8544</a></li>\n<li class=\"\">fix: Add warning when multiple partitions are defined for the same table by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8540\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8540</a></li>\n<li class=\"\">fix: Eagerly drop cached records for results larger than max by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8516\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8516</a></li>\n<li class=\"\">DDB Streams Integration Test + Memory Acceleration + Improved Warning by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8520\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8520</a></li>\n<li class=\"\">fix(cluster): initialize secrets before object stores in executor by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8532\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8532</a></li>\n<li class=\"\">Show user-friendly error on empty DDB table by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8586\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8586</a></li>\n<li class=\"\">Move 'test_projection_pushdown' to <code>runtime-datafusion</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8490\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8490</a></li>\n<li class=\"\">Fix stats for rewritten <code>DistributeFileScanOptimizer</code> plans by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8581\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8581</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.10.1",
            "title": "Spice v1.10.1 (Dec 15, 2025)",
            "summary": "Announcing the release of Spice v1.10.1! 🚀",
            "date_modified": "2025-12-16T00:00:00.000Z",
            "author": {
                "name": "Jack Eadie",
                "url": "https://github.com/Jeadie"
            },
            "tags": [
                "release",
                "cayenne",
                "acceleration",
                "sdk",
                "security"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.10.0",
            "content_html": "<p>Announcing the release of Spice v1.10.0! ⚡</p>\n<p>Spice v1.10.0 introduces a new <strong>Caching Acceleration Mode</strong> with stale-while-revalidate (SWR) semantics for disk-persisted, low-latency queries with background refresh. This release also adds the <strong>TinyLFU eviction policy</strong> for the SQL results cache, a preview of the <strong>DynamoDB Streams connector</strong> for real-time CDC, <strong>S3 location predicate pruning</strong> for faster partitioned queries, improved <strong>distributed query execution</strong>, and multiple security hardening improvements.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1100\">What's New in v1.10.0<a href=\"https://spiceai.org/releases/v1.10.0#whats-new-in-v1100\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.10.0\" title=\"Direct link to What's New in v1.10.0\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"caching-acceleration-mode\">Caching Acceleration Mode<a href=\"https://spiceai.org/releases/v1.10.0#caching-acceleration-mode\" class=\"hash-link\" aria-label=\"Direct link to Caching Acceleration Mode\" title=\"Direct link to Caching Acceleration Mode\" translate=\"no\">​</a></h3>\n<p><strong>Low-Latency Queries with Background Refresh</strong>: This release introduces a new <code>caching</code> <a href=\"https://spiceai.org/docs/components/data-accelerators\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">acceleration mode</a> that implements the stale-while-revalidate (SWR) pattern. Queries return cached results immediately while data refreshes asynchronously in the background, eliminating query latency spikes during refresh cycles. Cached data persists to disk using DuckDB, SQLite, or Cayenne file modes.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Stale-While-Revalidate (SWR)</strong>: Returns cached data immediately while refreshing in the background, reducing query latency</li>\n<li class=\"\"><strong>Disk Persistence</strong>: Cached results persist across restarts using DuckDB, SQLite, or Cayenne file modes</li>\n<li class=\"\"><strong>Configurable Refresh</strong>: Control refresh intervals with <code>refresh_check_interval</code> to balance freshness and source load</li>\n</ul>\n<blockquote>\n<p><strong>Recommendation</strong>: Use <a href=\"https://spiceai.org/docs/reference/spicepod/datasets#accelerationretention_check_enabled\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">retention configuration</a> with caching acceleration to ensure stale data is cleaned up over time.</p>\n</blockquote>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> http</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//localhost</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">7400</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cached_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">time_column</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> fetched_at</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Persist cache to disk</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> caching</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_check_interval</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 10m</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention_check_enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention_period</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 24h</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention_check_interval</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1h</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Acceleration Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"tinylfu-cache-eviction-policy\">TinyLFU Cache Eviction Policy<a href=\"https://spiceai.org/releases/v1.10.0#tinylfu-cache-eviction-policy\" class=\"hash-link\" aria-label=\"Direct link to TinyLFU Cache Eviction Policy\" title=\"Direct link to TinyLFU Cache Eviction Policy\" translate=\"no\">​</a></h3>\n<p><strong>Higher Cache Hit Rates for SQL Results Cache</strong>: A new TinyLFU <a href=\"https://spiceai.org/docs/features/caching#cache-eviction-policies\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">cache eviction policy</a> is now available for the SQL results cache. TinyLFU is a probabilistic cache admission policy that maintains higher hit rates than LRU while keeping memory usage predictable, making it ideal for workloads with varying query frequency patterns.</p>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">caching</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">eviction_policy</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tiny_lfu </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># default: lru</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Caching Documentation</a> and the <a href=\"https://docs.rs/moka/latest/moka/#tinylfu\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Moka TinyLFU Documentation</a> for details of the algorithm.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-streams-data-connector-preview\">DynamoDB Streams Data Connector (Preview)<a href=\"https://spiceai.org/releases/v1.10.0#dynamodb-streams-data-connector-preview\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Streams Data Connector (Preview)\" title=\"Direct link to DynamoDB Streams Data Connector (Preview)\" translate=\"no\">​</a></h3>\n<p><strong>Real-Time Change Data Capture for DynamoDB</strong>: The DynamoDB connector now integrates with DynamoDB Streams for real-time change data capture (CDC). This enables continuous synchronization of DynamoDB table changes into Spice for real-time query, search, and LLM-inference.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Real-Time CDC</strong>: Automatically captures inserts, updates, and deletes from DynamoDB tables as they occur</li>\n<li class=\"\"><strong>Table Bootstrapping</strong>: Performs an initial full table scan before streaming changes, ensuring complete data consistency</li>\n<li class=\"\"><strong>Acceleration Integration</strong>: Works with <code>refresh_mode: changes</code> to incrementally update accelerated datasets</li>\n</ul>\n<blockquote>\n<p><strong>Note</strong>: DynamoDB Streams must be enabled on your DynamoDB table. This feature is in preview.</p>\n</blockquote>\n<p>Example spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> orders_stream</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> changes </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Enable Streams capture</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb#streams\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"opentelemetry-metrics-exporter\">OpenTelemetry Metrics Exporter<a href=\"https://spiceai.org/releases/v1.10.0#opentelemetry-metrics-exporter\" class=\"hash-link\" aria-label=\"Direct link to OpenTelemetry Metrics Exporter\" title=\"Direct link to OpenTelemetry Metrics Exporter\" translate=\"no\">​</a></h3>\n<p>Spice can now push metrics to an <a href=\"https://opentelemetry.io/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">OpenTelemetry</a> collector, enabling integration with platforms such as <a href=\"https://www.jaegertracing.io/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Jaeger</a>, <a href=\"https://newrelic.com/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">New Relic</a>, <a href=\"https://www.honeycomb.io/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Honeycomb</a>, and other OpenTelemetry-compatible backends.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Protocol Support</strong>: Supports the gRPC (default port 4317) protocol</li>\n<li class=\"\"><strong>Configurable Push Interval</strong>: Control how frequently metrics are pushed to the collector</li>\n</ul>\n<p>Example spicepod.yaml configuration for gRPC:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">telemetry</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">otel_exporter</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">endpoint</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'localhost:4317'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">push_interval</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'30s'</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/observability\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Observability &amp; Monitoring Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-connector-improvements\">S3 Connector Improvements<a href=\"https://spiceai.org/releases/v1.10.0#s3-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to S3 Connector Improvements\" title=\"Direct link to S3 Connector Improvements\" translate=\"no\">​</a></h3>\n<p><strong>S3 Location Predicate Pruning</strong>: The <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 data connector</a> now supports location-based predicate pruning, dramatically reducing data scanned by pushing down location filter predicates to S3 listing operations. For partitioned datasets (e.g., <code>year=2025/month=12/</code>), Spice now skips listing irrelevant partitions entirely, significantly reducing query latency and S3 API costs.</p>\n<p><strong>AWS S3 Tables Write Support</strong>: Full read/write capability for <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS S3 Tables</a>, enabling direct integration with AWS's managed table format for S3. Use standard SQL <code>INSERT INTO</code> to write data.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Data Connector Documentation</a> and <a href=\"https://spiceai.org/docs/components/data-connectors/glue\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Glue Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"faster-distributed-query-execution\">Faster Distributed Query Execution<a href=\"https://spiceai.org/releases/v1.10.0#faster-distributed-query-execution\" class=\"hash-link\" aria-label=\"Direct link to Faster Distributed Query Execution\" title=\"Direct link to Faster Distributed Query Execution\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed query</a> planning and execution have been significantly improved:</p>\n<ul>\n<li class=\"\"><strong>Fixed executor registration</strong> in cluster mode for more reliable distributed deployments</li>\n<li class=\"\"><strong>Improved hostname resolution</strong> for Flight server binding, enabling better executor discovery</li>\n<li class=\"\"><strong>Distributed accelerator registration</strong>: Data accelerators now properly register in distributed mode</li>\n<li class=\"\"><strong>Optimized query planning</strong>: <code>DistributeFileScanOptimizer</code> improvements for faster planning with large datasets</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"search-improvements\">Search Improvements<a href=\"https://spiceai.org/releases/v1.10.0#search-improvements\" class=\"hash-link\" aria-label=\"Direct link to Search Improvements\" title=\"Direct link to Search Improvements\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/features/search\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Search</a> capabilities have been improved with several performance and reliability enhancements:</p>\n<ul>\n<li class=\"\"><strong>Fixed FTS query blocking</strong>: Full-text search queries no longer block unnecessarily, improving query responsiveness</li>\n<li class=\"\"><strong>Optimized vector index operations</strong>: Eliminated unnecessary <code>list_vectors</code> calls for better performance</li>\n<li class=\"\"><strong>Improved limit pushdown</strong>: <code>IndexerExec</code> now properly handles limit pushdown for more efficient searches</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/search\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Search Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"security-hardening\">Security Hardening<a href=\"https://spiceai.org/releases/v1.10.0#security-hardening\" class=\"hash-link\" aria-label=\"Direct link to Security Hardening\" title=\"Direct link to Security Hardening\" translate=\"no\">​</a></h3>\n<p>Multiple security improvements have been implemented:</p>\n<ul>\n<li class=\"\"><strong>SQL Identifier Quoting</strong>: Hardened SQL identifier quoting across all database connectors (PostgreSQL, MySQL, DuckDB, etc.) to prevent SQL injection attacks through table or column names</li>\n<li class=\"\"><strong>Token Redaction</strong>: Sensitive authentication tokens are now fully redacted in debug and error output, preventing accidental credential exposure in logs</li>\n<li class=\"\"><strong>Path Traversal Prevention</strong>: Fixed tar extraction operations to prevent directory traversal vulnerabilities when processing archived files</li>\n<li class=\"\"><strong>Input Sanitization</strong>: Added strict validation for <code>top_n_sample</code> order_by clause parsing to prevent injection attacks</li>\n<li class=\"\"><strong>Glue Credential Handling</strong>: Prevented automatic loading of AWS credentials from environment in Glue connector, ensuring explicit credential configuration</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"developer-experience-improvements\">Developer Experience Improvements<a href=\"https://spiceai.org/releases/v1.10.0#developer-experience-improvements\" class=\"hash-link\" aria-label=\"Direct link to Developer Experience Improvements\" title=\"Direct link to Developer Experience Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Health probe metrics</strong>: Added health probe latency metrics for better observability</li>\n<li class=\"\"><strong>CLI improvements</strong>: Fixed <code>.clear history</code> command in the REPL to fully clear persisted history</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.10.0#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.10.0#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.10.0#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.10.0#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.10.0, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.10.0</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.10.0</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.10.0#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.10.0#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Test-operator: Add tpcds_q8 to the default row-count validation skip list by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8185\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8185</a></li>\n<li class=\"\">fix: Remove unwrap_used from test by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8212\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8212</a></li>\n<li class=\"\">Run glue_iceberg_integration_test_catalog as part of main integration tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8222\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8222</a></li>\n<li class=\"\">Add TPCH sf100 testoperator spicepods with dispatch by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8192\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8192</a></li>\n<li class=\"\">Build with CPU native flags by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8224\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8224</a></li>\n<li class=\"\">fix: Apply assertion clippy in CI/Makefile only by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8229\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8229</a></li>\n<li class=\"\">feat: Support running queries only in testoperator by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8211\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8211</a></li>\n<li class=\"\">DuckDB query planning: aggregate pushdown by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8174\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8174</a></li>\n<li class=\"\">install.sh improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8252\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8252</a></li>\n<li class=\"\">Fix <code>.clear history</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8254\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8254</a></li>\n<li class=\"\">Improve the output of dataset loading by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8256\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8256</a></li>\n<li class=\"\">Refactor view validation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8258\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8258</a></li>\n<li class=\"\">Upgrade AWS crates by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8259\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8259</a></li>\n<li class=\"\">fix: Pushdown dynamic filters to partition scans by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8240\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8240</a></li>\n<li class=\"\">Harden SQL identifier quoting in connectors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8276\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8276</a></li>\n<li class=\"\">Cayenne <code>sort_columns</code> on insert by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8091\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8091</a></li>\n<li class=\"\">Redact token debug output by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8280\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8280</a></li>\n<li class=\"\">fix: Cayenne configuration options by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8281\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8281</a></li>\n<li class=\"\">Prevent path traversal in untar by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8284\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8284</a></li>\n<li class=\"\">Fix cluster mode executor registration by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8292\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8292</a></li>\n<li class=\"\">Unignore s3_vectors_kafka_stream test by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8289\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8289</a></li>\n<li class=\"\">Post-release house keeping by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8293\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8293</a></li>\n<li class=\"\">Improve generate_changelog script by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8273\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8273</a></li>\n<li class=\"\">Acceleration mode <code>caching</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8237\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8237</a></li>\n<li class=\"\">Sanitization and security checks by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7854\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7854</a></li>\n<li class=\"\">Add health probe latency metric by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8300\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8300</a></li>\n<li class=\"\">Add distributed registration for data accelerators by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8299\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8299</a></li>\n<li class=\"\">Pass IndexedTableProvider down in 'changes_stream' and 'append_stream' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8295\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8295</a></li>\n<li class=\"\">Add <code>dynamodb-streams</code> crate by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8283\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8283</a></li>\n<li class=\"\">Distributed query: resolve executor hostname when determining Flight server binding by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8304\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8304</a></li>\n<li class=\"\">Return computed embeddings from index for partitioned S3Vectors by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8306\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8306</a></li>\n<li class=\"\">[DDB Streams] Skeleton for DynamoDB Streams by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8296\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8296</a></li>\n<li class=\"\">DistributeFileScanOptimizer: Improve planning performance by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8305\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8305</a></li>\n<li class=\"\">feat: Add an ExactLeftAccumulator implementation by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8302\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8302</a></li>\n<li class=\"\">deps: Upgrade Vortex to 0.56 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8311\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8311</a></li>\n<li class=\"\">DynamoDB table bootstrapping + streaming by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8312\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8312</a></li>\n<li class=\"\">Avoid calling S3Vector <code>list_vectors</code> (or equivalent) when indexing into <code>VectorIndex</code>s by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8282\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8282</a></li>\n<li class=\"\">Add on_conflict testing support to append benchmark by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8314\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8314</a></li>\n<li class=\"\">docker: Add valid home directory to fix duckdb extension loading issue by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8318\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8318</a></li>\n<li class=\"\">Add GH Workflow to run Append benchmark test by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8321\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8321</a></li>\n<li class=\"\">Exclude MySQL SF100 from test-operator dispatch by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8320\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8320</a></li>\n<li class=\"\">feat: Update clippy lints by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8317\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8317</a></li>\n<li class=\"\">Add S3 location predicate pruning to listing connector by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8319\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8319</a></li>\n<li class=\"\">Review feedback for caching mode accelerator by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8326\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8326</a></li>\n<li class=\"\">Also include Dockerfile home changes for release build by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8327\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8327</a></li>\n<li class=\"\">Change communication channel from Discord to Slack by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8330\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8330</a></li>\n<li class=\"\">Replace Discord link with Slack link in README by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8331\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8331</a></li>\n<li class=\"\">fix(glue): Prevent OpenDAL from automatic loading of AWS credentials from environment by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8337\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8337</a></li>\n<li class=\"\">Block on index read for FTS queries by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8339\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8339</a></li>\n<li class=\"\">Fix search query provider by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8343\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8343</a></li>\n<li class=\"\">Support for writing into AWS S3 Tables by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8344\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8344</a></li>\n<li class=\"\">Acceleration file_create mode by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8347\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8347</a></li>\n<li class=\"\">Don't block on lock in FTS query path by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8348\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8348</a></li>\n<li class=\"\">feat: Add an optimizer rule to replace join accumulator for Cayenne by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8316\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8316</a></li>\n<li class=\"\">S3 Vectors limit updates by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8352\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8352</a></li>\n<li class=\"\">Sanitize top_n_sample order_by parsing by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8356\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8356</a></li>\n<li class=\"\">Add distributed registration for data connectors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8354\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8354</a></li>\n<li class=\"\">Improve <code>IndexerExec</code> to properly handle limit pushdown by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8366\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8366</a></li>\n<li class=\"\">Fix Cayenne partition_by metadata flaky integration test by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8367\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8367</a></li>\n<li class=\"\">Rework caching accelerator to use the <code>stale-while-revalidate</code> pattern. by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8365\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8365</a></li>\n<li class=\"\">Add TinyLFU caching policy by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8370\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8370</a></li>\n<li class=\"\">Make Arrow acceleration <code>on_conflict</code> verification more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8375\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8375</a></li>\n<li class=\"\">Add additional test for verify_on_conflict_matches_primary_key (Arrow acceleration) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8376\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8376</a></li>\n<li class=\"\">Add v1.10.0-rc1 release notes by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8373\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8373</a></li>\n<li class=\"\">docs: Remove DuckDB agg pushdown from release notes by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8383\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8383</a></li>\n<li class=\"\">Testoperator dispatch: add Append support and test configurations by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8360\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8360</a></li>\n<li class=\"\">fix: Increase TPCDS DuckDB connection pool size by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8386\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8386</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8385\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8385</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8389\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8389</a></li>\n<li class=\"\">Fix Windows build by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8391\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8391</a></li>\n<li class=\"\">DuckDB aggregate pushdown: fix partitioning and schema rewrite bugs by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8397\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8397</a></li>\n<li class=\"\">Delta table: Store current snapshot ref with table instance  by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8358\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8358</a></li>\n<li class=\"\">GetAppDefinition: Check if executor is part of cluster by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8396\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8396</a></li>\n<li class=\"\">1.10.0-rc1 housekeeping by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8394\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8394</a></li>\n<li class=\"\">Change debug log to warning for vector engine config by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8378\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8378</a></li>\n<li class=\"\">Clarify /v1/nsql datasets sampling hint by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8395\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8395</a></li>\n<li class=\"\">Use bmi1 target feature for x86_64 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8401\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8401</a></li>\n<li class=\"\">benchmarks: Default to update snapshots when run on a non-release branch by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8402\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8402</a></li>\n<li class=\"\">Update threat model for v1.9.2 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8400\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8400</a></li>\n<li class=\"\">Fix iceberg tables metadata - assign ids to all fields, including nested by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8351\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8351</a></li>\n<li class=\"\">Fix databricks_spark_connect_m2m_integration_test_catalog snapshot by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8403\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8403</a></li>\n<li class=\"\">Move all GitHub Actions workflows to use exact commit sha by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8409\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8409</a></li>\n<li class=\"\">Upgrade datafusion-tableproviders (df v50) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8261\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8261</a></li>\n<li class=\"\">Batching for CDC by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8359\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8359</a></li>\n<li class=\"\">fix: make DuckDB attachments logic more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8411\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8411</a></li>\n<li class=\"\">Persistent checkpoints for DynamoDB Streams by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8345\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8345</a></li>\n<li class=\"\">Distributed query: Support AsyncFuncExec and Spice UDFs in Ballista by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8414\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8414</a></li>\n<li class=\"\">Pin GitHub Actions to fix Testoperator build action by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8416\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8416</a></li>\n<li class=\"\">Watermarks support for DynamoDB by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8417\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8417</a></li>\n<li class=\"\">Fix typo in <code>.vscode/launch.json</code> by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8415\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8415</a></li>\n<li class=\"\">DuckSqlExec: Update equivalence properties when rewriting schema by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8420\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8420</a></li>\n<li class=\"\">Validate that the commit for datafusion-table-providers exists on the spiceai branch by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8421\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8421</a></li>\n<li class=\"\">Append Tests: add support for retention testing by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8419\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8419</a></li>\n<li class=\"\">New crate <code>google-genai</code>  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8390\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8390</a></li>\n<li class=\"\">federation: Improve error message and add debug logging for cast failures by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8422\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8422</a></li>\n<li class=\"\">DynamoDB Streams Error Handling by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8418\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8418</a></li>\n<li class=\"\">Append tests: add support for <code>with_retention_data</code> to dispatch by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8430\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8430</a></li>\n<li class=\"\">Append tests: add support for test metrics reporting by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8432\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8432</a></li>\n<li class=\"\">test-operator: fix metrics reporting by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8435\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8435</a></li>\n<li class=\"\">Follow-up improvements and bug fixes by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8433\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8433</a></li>\n<li class=\"\">Periodic snapshots for append/changes streams by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8407\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8407</a></li>\n<li class=\"\">Add support for <code>caching_stale_if_error</code> to caching accelerator; fix multiple upstream requests during SWR; fix Arrow accelerator by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8425\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8425</a></li>\n<li class=\"\">Disable dataset health monitor for dynamic HTTP connector by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8441\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8441</a></li>\n<li class=\"\">Metrics + <code>snapshots_trigger_threshold </code> for DynamoDB Streams by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8437\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8437</a></li>\n<li class=\"\">Clear the in-flight revalidations cache after a revalidation has completed. by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8443\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8443</a></li>\n<li class=\"\">dont build 'spicepod-validator' on 'make install' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8426\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8426</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8436\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8436</a></li>\n<li class=\"\">fix: Disable Cayenne HashJoin rewriter optimizer by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8439\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8439</a></li>\n<li class=\"\">Testoperator: add <code>duckdb-partitioned</code> query override by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8446\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8446</a></li>\n<li class=\"\">Add a check to validate that results cache SWR and caching accelerator SWR are not both set. by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8445\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8445</a></li>\n<li class=\"\">OTel exporter for push metrics by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8442\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8442</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8448\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8448</a></li>\n<li class=\"\">Add snapshot creation logging by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8469\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8469</a></li>\n<li class=\"\">Fix PeriodicReader panic by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8471\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8471</a></li>\n<li class=\"\">fix: Pin CUDA build actions to commits by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8477\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8477</a></li>\n<li class=\"\">DuckDB agg pushdown: gate behind accelerator parameter by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8474</a></li>\n<li class=\"\">Rename <code>aggregate_pushdown_optimization</code> -&gt; <code>optimizer_duckdb_aggregate_pushdown</code> by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8485\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8485</a></li>\n<li class=\"\">Handle throttling exception for DynamoDB streams by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8492\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8492</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.10.0",
            "title": "Spice v1.10.0 (Dec 9, 2025)",
            "summary": "Announcing the release of Spice v1.10.0! ⚡",
            "date_modified": "2025-12-09T00:00:00.000Z",
            "author": {
                "name": "William Croxson",
                "url": "https://github.com/peasee"
            },
            "tags": [
                "release",
                "caching",
                "acceleration",
                "dynamodb",
                "cayenne",
                "opentelemetry",
                "data-connector",
                "distributed-query",
                "performance"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.10-rc.1",
            "content_html": "<p>Announcing the release of Spice v1.10.0-rc.1! ⚡</p>\n<p>v1.10.0-rc1 is a release candidate for early testing of v1.10 features including an all new <code>caching</code> acceleration mode, <code>tiny_lfu</code> caching policy, a new DynamoDB Streams connector (Preview), improvements to the DynamoDB connector, faster distributed query execution, S3 connector improvements, and security hardening for v1.10.0-stable.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v1100-rc1\">What's New in v1.10.0-rc1<a href=\"https://spiceai.org/releases/v1.10-rc.1#whats-new-in-v1100-rc1\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.10.0-rc1\" title=\"Direct link to What's New in v1.10.0-rc1\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"caching-acceleration-mode-with-swr-and-tinylfu\">Caching Acceleration Mode with SWR and TinyLFU<a href=\"https://spiceai.org/releases/v1.10-rc.1#caching-acceleration-mode-with-swr-and-tinylfu\" class=\"hash-link\" aria-label=\"Direct link to Caching Acceleration Mode with SWR and TinyLFU\" title=\"Direct link to Caching Acceleration Mode with SWR and TinyLFU\" translate=\"no\">​</a></h3>\n<p>This release introduces a new <code>caching</code> <a href=\"https://spiceai.org/docs/components/data-accelerators\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">acceleration mode</a> that implements the stale-while-revalidate (SWR) pattern using Data Accelerators such as DuckDB or Cayenne, enabling queries to return file-persisted cached results immediately while asynchronously refreshing data in the background. Combined with the new TinyLFU <a href=\"https://spiceai.org/docs/features/caching#cache-eviction-policies\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">cache eviction policy</a>, Spice can now maintain higher cache hit rates while keeping memory usage predictable.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Stale-While-Revalidate (SWR)</strong>: Returns cached data immediately while refreshing in the background</li>\n<li class=\"\"><strong>Data Accelerator Support</strong>: Cached accelerators can persist data to disk using DuckDB, SQLite, or Cayenne file modes.</li>\n<li class=\"\"><strong>TinyLFU Cache Policy</strong>: Probabilistic cache admission policy that maintains high hit rates with minimal overhead</li>\n<li class=\"\"><strong>Predictable Memory Usage</strong>: Configurable memory limits with automatic eviction of less frequently used entries</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">caching</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">eviction_policy</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tiny_lfu </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># default lru</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cached_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Persist cache to disk</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> caching</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_check_interval</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 10m</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/data-acceleration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Acceleration Documentation</a> and <a href=\"https://spiceai.org/docs/features/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Caching Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-streams-data-connector-in-preview\">DynamoDB Streams Data Connector in Preview<a href=\"https://spiceai.org/releases/v1.10-rc.1#dynamodb-streams-data-connector-in-preview\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Streams Data Connector in Preview\" title=\"Direct link to DynamoDB Streams Data Connector in Preview\" translate=\"no\">​</a></h3>\n<p>DynamoDB Connector now integrates with DynamoDB Streams which enables real-time streaming with support for both table bootstrapping and continuous change data capture (CDC). This connector automatically detects changes in DynamoDB tables and streams them into Spice for real-time query, search, and LLM-inference.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Real-Time CDC</strong>: Automatically captures inserts, updates, and deletes from DynamoDB tables</li>\n<li class=\"\"><strong>Table Bootstrapping</strong>: Initial full table load before streaming changes</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> orders_stream</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> changes</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb#streams\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cayenne-accelerator-enhancements\">Cayenne Accelerator Enhancements<a href=\"https://spiceai.org/releases/v1.10-rc.1#cayenne-accelerator-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Cayenne Accelerator Enhancements\" title=\"Direct link to Cayenne Accelerator Enhancements\" translate=\"no\">​</a></h3>\n<p>The <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne data accelerator</a> now supports:</p>\n<ul>\n<li class=\"\"><strong>Sort Columns Configuration</strong>: Optimize inserts by pre-sorting data on specified columns for improved query performance</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sorted_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file_create</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sort_columns</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> timestamp</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\">region</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-connector-improvements\">S3 Connector Improvements<a href=\"https://spiceai.org/releases/v1.10-rc.1#s3-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to S3 Connector Improvements\" title=\"Direct link to S3 Connector Improvements\" translate=\"no\">​</a></h3>\n<p><strong>S3 Location Predicate Pruning</strong>: The S3 <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">data connector</a> now supports location-based predicate pruning, dramatically reducing data scanned by pushing down predicates to S3 listing operations. This optimization is especially effective for partitioned datasets stored in S3.</p>\n<p><strong>AWS S3 Tables Write Support</strong>: Full read/write capability for <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS S3 Tables</a>, enabling fast integration with AWS's table format for S3.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Tables Data Connector Documentation</a> and <a href=\"https://spiceai.org/docs/components/data-connectors/glue\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Glue Data Connection Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"faster-distributed-query-execution\">Faster Distributed Query Execution<a href=\"https://spiceai.org/releases/v1.10-rc.1#faster-distributed-query-execution\" class=\"hash-link\" aria-label=\"Direct link to Faster Distributed Query Execution\" title=\"Direct link to Faster Distributed Query Execution\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed query</a> planning and execution have been significantly improved:</p>\n<ul>\n<li class=\"\"><strong>Fixed executor registration</strong> in cluster mode for more reliable distributed deployments</li>\n<li class=\"\"><strong>Improved hostname resolution</strong> for Flight server binding, enabling better executor discovery</li>\n<li class=\"\"><strong>Distributed accelerator registration</strong>: Data accelerators now properly register in distributed mode</li>\n<li class=\"\"><strong>Optimized query planning</strong>: <code>DistributeFileScanOptimizer</code> improvements for faster planning with large datasets</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"search-improvements\">Search Improvements<a href=\"https://spiceai.org/releases/v1.10-rc.1#search-improvements\" class=\"hash-link\" aria-label=\"Direct link to Search Improvements\" title=\"Direct link to Search Improvements\" translate=\"no\">​</a></h3>\n<p><a href=\"https://spiceai.org/docs/features/search\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Search</a> capabilities have been improved with several performance and reliability enhancements:</p>\n<ul>\n<li class=\"\"><strong>Fixed FTS query blocking</strong>: Full-text search queries no longer block unnecessarily, improving query responsiveness</li>\n<li class=\"\"><strong>Optimized vector index operations</strong>: Eliminated unnecessary <code>list_vectors</code> calls for better performance</li>\n<li class=\"\"><strong>Improved limit pushdown</strong>: <code>IndexerExec</code> now properly handles limit pushdown for more efficient searches</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/search\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Search Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"security-hardening\">Security Hardening<a href=\"https://spiceai.org/releases/v1.10-rc.1#security-hardening\" class=\"hash-link\" aria-label=\"Direct link to Security Hardening\" title=\"Direct link to Security Hardening\" translate=\"no\">​</a></h3>\n<p>Multiple security improvements have been implemented:</p>\n<ul>\n<li class=\"\"><strong>SQL identifier quoting</strong>: Hardened SQL identifier quoting across all connectors to prevent injection attacks</li>\n<li class=\"\"><strong>Token redaction</strong>: Sensitive tokens are now fully redacted in debug output to prevent credential leakage</li>\n<li class=\"\"><strong>Path traversal prevention</strong>: Fixed tar extraction to prevent path traversal vulnerabilities</li>\n<li class=\"\"><strong>Input sanitization</strong>: Added validation for <code>top_n_sample</code> order_by parsing</li>\n<li class=\"\"><strong>Improved credential handling</strong>: Improved credential management in Glue connector</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"developer-experience-improvements\">Developer Experience Improvements<a href=\"https://spiceai.org/releases/v1.10-rc.1#developer-experience-improvements\" class=\"hash-link\" aria-label=\"Direct link to Developer Experience Improvements\" title=\"Direct link to Developer Experience Improvements\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Health probe metrics</strong>: Added health probe latency metrics for better observability</li>\n<li class=\"\"><strong>CLI improvements</strong>: Fixed <code>.clear history</code> command in the REPL to fully clear persisted history</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.10-rc.1#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.10-rc.1#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.10-rc.1#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates. The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> still offers 82+ recipes to help you prototype quickly.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.10-rc.1#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To try v1.10.0-rc1, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade --version 1.10.0-rc1</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.10.0-rc1</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.10.0-rc1</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai --version 1.10.0-rc1</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.10-rc.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.10-rc.1#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Test-operator: Add tpcds_q8 to the default row-count validation skip list by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8185\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8185</a></li>\n<li class=\"\">fix: Remove unwrap_used from test by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8212\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8212</a></li>\n<li class=\"\">Run glue_iceberg_integration_test_catalog as part of main integration tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8222\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8222</a></li>\n<li class=\"\">Add TPCH sf100 testoperator spicepods with dispatch by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8192\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8192</a></li>\n<li class=\"\">Build with CPU native flags by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8224\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8224</a></li>\n<li class=\"\">Make copilot check for empty copyright header by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8245\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8245</a></li>\n<li class=\"\">fix: Apply assertion clippy in CI/Makefile only by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8229\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8229</a></li>\n<li class=\"\">feat: Support running queries only in testoperator by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8211\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8211</a></li>\n<li class=\"\">DuckDB query planning: aggregate pushdown by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8174\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8174</a></li>\n<li class=\"\">install.sh improvements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8252\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8252</a></li>\n<li class=\"\">Fix <code>.clear history</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8254\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8254</a></li>\n<li class=\"\">fix: Pushdown dynamic filters to partition scans by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8240\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8240</a></li>\n<li class=\"\">Harden SQL identifier quoting in connectors by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8276\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8276</a></li>\n<li class=\"\">Cayenne <code>sort_columns</code> on insert by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8091\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8091</a></li>\n<li class=\"\">Redact token debug output by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8280\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8280</a></li>\n<li class=\"\">fix: Cayenne configuration options by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8281\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8281</a></li>\n<li class=\"\">Prevent path traversal in untar by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8284\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8284</a></li>\n<li class=\"\">Fix cluster mode executor registration by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8292\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8292</a></li>\n<li class=\"\">Unignore s3_vectors_kafka_stream test by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8289\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8289</a></li>\n<li class=\"\">Post-release house keeping by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8293\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8293</a></li>\n<li class=\"\">Improve generate_changelog script by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8273\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8273</a></li>\n<li class=\"\">Acceleration mode <code>caching</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8237\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8237</a></li>\n<li class=\"\">Sanitization and security checks by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7854\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7854</a></li>\n<li class=\"\">Add health probe latency metric by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8300\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8300</a></li>\n<li class=\"\">Add distributed registration for data accelerators by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8299\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8299</a></li>\n<li class=\"\">Pass IndexedTableProvider down in 'changes_stream' and 'append_stream' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8295\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8295</a></li>\n<li class=\"\">Add <code>dynamodb-streams</code> crate by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8283\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8283</a></li>\n<li class=\"\">Distributed query: resolve executor hostname when determining Flight server binding by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8304\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8304</a></li>\n<li class=\"\">Return computed embeddings from index for partitioned S3Vectors by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8306\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8306</a></li>\n<li class=\"\">[DDB Streams] Skeleton for DynamoDB Streams by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8296\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8296</a></li>\n<li class=\"\">DistributeFileScanOptimizer: Improve planning performance by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8305\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8305</a></li>\n<li class=\"\">feat: Add an ExactLeftAccumulator implementation by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8302\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8302</a></li>\n<li class=\"\">deps: Upgrade Vortex to 0.56 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8311\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8311</a></li>\n<li class=\"\">DynamoDB table bootstrapping + streaming by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8312\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8312</a></li>\n<li class=\"\">Avoid calling S3Vector <code>list_vectors</code> (or equivalent) when indexing into <code>VectorIndex</code>s by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8282\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8282</a></li>\n<li class=\"\">Add on_conflict testing support to append benchmark by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8314\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8314</a></li>\n<li class=\"\">docker: Add valid home directory to fix duckdb extension loading issue by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8318\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8318</a></li>\n<li class=\"\">Add GH Workflow to run Append benchmark test by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8321\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8321</a></li>\n<li class=\"\">Exclude MySQL SF100 from test-operator dispatch by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8320\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8320</a></li>\n<li class=\"\">feat: Update clippy lints by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8317\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8317</a></li>\n<li class=\"\">Add S3 location predicate pruning to listing connector by <a href=\"https://github.com/spiceai/spiceai/pull/8319\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\">Review feedback for caching mode accelerator by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8326\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8326</a></li>\n<li class=\"\">Also include Dockerfile home changes for release build by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8327\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8327</a></li>\n<li class=\"\">Change communication channel from Discord to Slack by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8330\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8330</a></li>\n<li class=\"\">Replace Discord link with Slack link in README by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8331\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8331</a></li>\n<li class=\"\">fix(glue): Prevent OpenDAL from automatic loading of AWS credentials from environment by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8337\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8337</a></li>\n<li class=\"\">Block on index read for FTS queries by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8339\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8339</a></li>\n<li class=\"\">Fix search query provider by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8343\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8343</a></li>\n<li class=\"\">Support for writing into AWS S3 Tables by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8344\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8344</a></li>\n<li class=\"\">Acceleration file_create mode by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8347\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8347</a></li>\n<li class=\"\">Don't block on lock in FTS query path by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8348\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8348</a></li>\n<li class=\"\">feat: Add an optimizer rule to replace join accumulator for Cayenne by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8316\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8316</a></li>\n<li class=\"\">S3 Vectors limit updates by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8352\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8352</a></li>\n<li class=\"\">Sanitize top_n_sample order_by parsing by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8356\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8356</a></li>\n<li class=\"\">Update version to v1.10.0-rc.1 by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8362\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8362</a></li>\n<li class=\"\">Improve <code>IndexerExec</code> to properly handle limit pushdown by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8366\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8366</a></li>\n<li class=\"\">Fix Cayenne partition_by metadata flaky integration test by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8367\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8367</a></li>\n<li class=\"\">Rework caching accelerator to use the <code>stale-while-revalidate</code> pattern. by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8365\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8365</a></li>\n<li class=\"\">Add TinyLFU caching policy by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8370\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8370</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.10-rc.1",
            "title": "Spice v1.10.0-rc.1 (Dec 2, 2025)",
            "summary": "Announcing the release of Spice v1.10.0-rc.1! ⚡",
            "date_modified": "2025-12-03T00:00:00.000Z",
            "author": {
                "name": "David Stancu",
                "url": "https://github.com/mach-kernel"
            },
            "tags": [
                "release",
                "caching",
                "acceleration",
                "dynamodb",
                "cayenne",
                "data-connector",
                "distributed-query",
                "performance"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.9.1",
            "content_html": "<p>Announcing the release of Spice v1.9.1!🔥</p>\n<p>v1.9.1 introduces <strong>Amazon Bedrock Nova 2 Multimodal embeddings support</strong> with high-dimensional vectors up to 3,072 dimensions and purpose-optimized embeddings for semantic search and retrieval operations, <strong>DynamoDB timestamp filter pushdown</strong> for more efficient append-mode acceleration with configurable time formatting, <strong>HTTP Data Connector health probe configuration</strong> for improved endpoint validation reliability, and <strong>Spice .NET SDK v0.2</strong> with expanded .NET version support and updated gRPC libraries. This release focuses on bug fixes, stability, and performance improvements.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"amazon-bedrock-nova-2-multimodal-embeddings\">Amazon Bedrock Nova 2 Multimodal embeddings<a href=\"https://spiceai.org/releases/v1.9.1#amazon-bedrock-nova-2-multimodal-embeddings\" class=\"hash-link\" aria-label=\"Direct link to Amazon Bedrock Nova 2 Multimodal embeddings\" title=\"Direct link to Amazon Bedrock Nova 2 Multimodal embeddings\" translate=\"no\">​</a></h2>\n<p>Spice now supports the Amazon Nova 2 Multimodal embeddings models via the Bedrock models provider, enabling high-quality text embeddings for semantic search and vector similarity operations. The Nova embeddings model offers configurable dimensions and advanced features like truncation modes and embedding purpose optimization.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>High-Dimensional Embeddings</strong>: Support for up to 3,072 dimensions for rich semantic representations</li>\n<li class=\"\"><strong>Configurable Truncation</strong>: Control how input text is truncated when exceeding token limits (<code>START</code>, <code>END</code>, or <code>NONE</code>)</li>\n<li class=\"\"><strong>Purpose Optimization</strong>: Optimize embeddings for specific use cases (<code>GENERIC_INDEX</code>, <code>GENERIC_RETRIEVAL</code>, or <code>CLASSIFICATION</code>)</li>\n<li class=\"\"><strong>Multimodal Model</strong>: Leverages Amazon's Nova 2 multimodal architecture for consistent embeddings across different content types</li>\n</ul>\n<p>Example <code>spicepod.yml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> bedrock</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">amazon.nova</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">2</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">multimodal</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">v1</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> nova_embeddings</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">dimensions</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'3072'</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Required: Output dimensions</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">truncation_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> START </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Optional: START, END, or NONE (default: NONE)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embedding_purpose</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> GENERIC_RETRIEVAL </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Optional. GENERIC_INDEX is default</span><br></span></code></pre></div></div>\n<p>For more details on the embedding parameters and configuration options, refer to the <a href=\"https://docs.aws.amazon.com/nova/latest/userguide/embeddings-schema.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Amazon Nova Embeddings Documentation</a> and the <a href=\"https://spiceai.org/docs/features/embeddings\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Embeddings Documentation</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-timestamp-filter-pushdown\">DynamoDB Timestamp Filter Pushdown<a href=\"https://spiceai.org/releases/v1.9.1#dynamodb-timestamp-filter-pushdown\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Timestamp Filter Pushdown\" title=\"Direct link to DynamoDB Timestamp Filter Pushdown\" translate=\"no\">​</a></h2>\n<p>The DynamoDB Data Connector now supports timestamp filter pushdown, enabling more efficient append-mode acceleration refreshes by pushing timestamp filters directly to DynamoDB queries. Since DynamoDB stores timestamps as strings rather than native datetime types, this feature includes configurable timestamp formatting to ensure correct parsing and filtering.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\">Filters on timestamp columns are now pushed down to DynamoDB, reducing data transfer and improving query performance</li>\n<li class=\"\">Support for Go-style datetime formatting patterns to handle various timestamp string formats</li>\n<li class=\"\">Uses ISO 8601 format by default when no custom format is specified</li>\n</ul>\n<p>Example <code>spicepod.yml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">time_column</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> created_at</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">time_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> timestamptz</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">time_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 2006</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">01</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">02T15</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">04</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">05.000Z07</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">00</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> append</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB Data Connector Documentation</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"http-data-connector-health-probe-configuration\">HTTP Data Connector Health Probe Configuration<a href=\"https://spiceai.org/releases/v1.9.1#http-data-connector-health-probe-configuration\" class=\"hash-link\" aria-label=\"Direct link to HTTP Data Connector Health Probe Configuration\" title=\"Direct link to HTTP Data Connector Health Probe Configuration\" translate=\"no\">​</a></h2>\n<p>The HTTP Data Connector now supports configurable health probe paths for endpoint validation. Instead of using a random non-existent path, the system can now validate endpoints using a user-specified path, improving flexibility and reliability for health checks.</p>\n<p>Example <code>spicepod.yml</code> configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> json</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">health_probe</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> /health</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">check</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/https\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP Data Connector Documentation</a>.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-net-sdk-v02\">Spice .NET SDK v0.2<a href=\"https://spiceai.org/releases/v1.9.1#spice-net-sdk-v02\" class=\"hash-link\" aria-label=\"Direct link to Spice .NET SDK v0.2\" title=\"Direct link to Spice .NET SDK v0.2\" translate=\"no\">​</a></h2>\n<p>The Spice .NET SDK has been upgraded with expanded .NET version support, custom User-Agent configuration, and updated gRPC libraries: <a href=\"https://github.com/spiceai/spice-dotnet/releases/tag/v0.2.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-dotnet v0.2.0</a>. The SDK is available on <a href=\"https://www.nuget.org/packages/SpiceAI\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">NuGet</a>.</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Expanded .NET Support</strong>: Now supports .NET Standard 2.0, .NET Core 8.0, 9.0, and 10.0.</li>\n<li class=\"\"><strong>Custom User-Agent</strong>: Configure custom User-Agent headers for client identification and telemetry.</li>\n<li class=\"\"><strong>Updated gRPC Libraries</strong>: Upgraded gRPC dependencies and <code>netstandard</code> for improved performance and reliability</li>\n</ul>\n<p><strong>Upgrade Example</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">dotnet add package SpiceAI --version 0.2.0</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://github.com/spiceai/spice-dotnet/blob/trunk/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">.NET SDK Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.9.1#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed view loading to respect topological order, preventing dependency resolution errors.</li>\n<li class=\"\"><strong>Reliability</strong>: Migrated from deprecated <code>trust_dns_resolver</code> to <code>hickory_resolver</code> for improved DNS resolution reliability.</li>\n<li class=\"\"><strong>Security</strong>: Fixed arbitrary file access vulnerability during archive extraction (\"Zip Slip\") to prevent potential security exploits.</li>\n<li class=\"\"><strong>Distributed Query</strong>: Fixed object store initialization across scheduler/executor gap, improving reliability for distributed query execution.</li>\n<li class=\"\"><strong>Distributed Query</strong>: Optimized query routing by preventing <code>runtime.*</code> schema queries from being sent to the scheduler, improving performance for metadata queries.</li>\n<li class=\"\"><strong>Performance</strong>: Added Blake3 and xxHash support with xxh3_64 as the default caching hashing algorithm for improved cache and query performance.</li>\n<li class=\"\"><strong>Performance</strong>: Optimized default Zstd compression level to 6 for better balance between compression ratio and speed.</li>\n<li class=\"\"><strong>UX</strong>: Improved dataset loading output with clearer progress indicators and status messages.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.9.1#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.9.1#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.9.1#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p>No major cookbook updates.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.9.1#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.9.1, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.9.1</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.9.1</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.9.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.9.1#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">fix integration tests: order by the query to make snapshots deterministic by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8198\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8198</a></li>\n<li class=\"\">Add health probe override by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8236\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8236</a></li>\n<li class=\"\">Use Moka optionally_get_with for SWR single-in-flight semantics by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8231\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8231</a></li>\n<li class=\"\">fix: Arbitrary file access during archive extraction (\"Zip Slip\") by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8242\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8242</a></li>\n<li class=\"\">Migrate trust_dns_resolver to hickory_resolver by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8243\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8243</a></li>\n<li class=\"\">fix: Deny assert macros in non-test code by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8223\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8223</a></li>\n<li class=\"\">Distributed query: Object store initialization across scheduler/executor gap, misc bugfixes &amp; improvements by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8009\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8009</a></li>\n<li class=\"\">Add Blake3, enable xxHash, set xxh3_64 as default, add bench by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8157\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8157</a></li>\n<li class=\"\">Make cache zstd default compression level 6 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8234\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8234</a></li>\n<li class=\"\">Use seed for xxh3 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8232\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8232</a></li>\n<li class=\"\">DynamoDB Timestamp Filter Pushdown by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8235\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8235</a></li>\n<li class=\"\">Add ready_wait for mongo-arrow benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8246\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8246</a></li>\n<li class=\"\">Add support for <code>amazon.nova-2-multimodal-embeddings-v1:0</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8225\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8225</a></li>\n<li class=\"\">Improve the output of dataset loading by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8256\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8256</a></li>\n<li class=\"\">Load views in topological order by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8255\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8255</a></li>\n<li class=\"\">Distributed query: Do not send <code>runtime.*</code> schema queries to scheduler by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8271\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8271</a></li>\n<li class=\"\">Remove input length check for Nova model. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8270\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8270</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.9.1",
            "title": "Spice v1.9.1 (Nov 24, 2025)",
            "summary": "Announcing the release of Spice v1.9.1!🔥",
            "date_modified": "2025-11-24T00:00:00.000Z",
            "author": {
                "name": "Viktor Yershov",
                "url": "https://github.com/krinart"
            },
            "tags": [
                "release",
                "bedrock",
                "embeddings",
                "dynamodb",
                "data-connector",
                "sdk",
                "performance"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.9.0",
            "content_html": "<p>Announcing the release of Spice v1.9.0-stable! <!-- -->🌶</p>\n<p>v1.9.0-stable introduces <strong>Spice Cayenne</strong>, a new high-performance data accelerator built on the <strong>Vortex</strong> columnar format that delivers better than DuckDB performance without single-file scaling limitations, and a preview of <strong>Multi-Node Distributed Query</strong> based on Apache Ballista. v1.9.0 also upgrades to DataFusion v50, DuckDB v1.4.2, and Delta-Kernel v0.16 for even higher query performance, expands search capabilities with full-text search on views and multi-column embeddings, and delivers many additional features and improvements.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v190\">What's New in v1.9.0<a href=\"https://spiceai.org/releases/v1.9.0#whats-new-in-v190\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.9.0\" title=\"Direct link to What's New in v1.9.0\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cayenne-data-accelerator-beta\">Cayenne Data Accelerator (Beta)<a href=\"https://spiceai.org/releases/v1.9.0#cayenne-data-accelerator-beta\" class=\"hash-link\" aria-label=\"Direct link to Cayenne Data Accelerator (Beta)\" title=\"Direct link to Cayenne Data Accelerator (Beta)\" translate=\"no\">​</a></h3>\n<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href=\"https://spiceai.org/docs/features/data-acceleration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href=\"https://github.com/vortex-data/vortex\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vortex columnar format</a>, a Linux Foundation project. Cayenne delivers query and ingestion performance better than DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>\n<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing data in Vortex's compressed columnar format. This architecture provides:</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>\n<li class=\"\"><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>\n<li class=\"\"><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>\n<li class=\"\"><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>\n<li class=\"\"><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>\n<li class=\"\"><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> accelerated_data_30d</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> append</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> INTERVAL '30 days'</span><br></span></code></pre></div></div>\n<p>Note, the Cayenne Data Accelerator is in <a href=\"https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/beta.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Beta</a> with limitations.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Documentation</a>, the <a href=\"https://github.com/vortex-data/vortex\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vortex project</a>, and the <a href=\"https://duckdb.org/2025/05/27/ducklake\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DuckLake announcement</a> that partly inspired this design.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"multi-node-distributed-query-preview\">Multi-Node Distributed Query (Preview)<a href=\"https://spiceai.org/releases/v1.9.0#multi-node-distributed-query-preview\" class=\"hash-link\" aria-label=\"Direct link to Multi-Node Distributed Query (Preview)\" title=\"Direct link to Multi-Node Distributed Query (Preview)\" translate=\"no\">​</a></h3>\n<p><strong>Apache Ballista Integration</strong>: Spice now supports distributed query execution based on <a href=\"https://github.com/apache/datafusion-ballista\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache Ballista</a>, enabling distributed queries across multiple executor nodes for improved performance on large datasets. This feature is in <strong>preview</strong> in v1.9.0.</p>\n<p><strong>Architecture</strong>:</p>\n<p>A distributed Spice cluster consists of:</p>\n<ul>\n<li class=\"\"><strong>Scheduler</strong>: Responsible for distributed query planning and work queue management for the executor fleet</li>\n<li class=\"\"><strong>Executors</strong>: One or more nodes responsible for running physical query plans</li>\n</ul>\n<p><strong>Getting Started</strong>:</p>\n<p>Start a scheduler instance using an existing Spicepod. The scheduler is the only spiced instance that needs to be configured:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start scheduler (note the flight bind address override if you want it reachable outside localhost)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced --cluster-mode scheduler </span><span class=\"token parameter variable\" style=\"color:hsl(221, 87%, 60%)\">--flight</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">0.0</span><span class=\"token plain\">.0.0:50051</span><br></span></code></pre></div></div>\n<p>Start one or more executors configured with the scheduler's flight URI:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start executor (automatically selects a free port if 50051 is taken)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced --cluster-mode executor --scheduler-url spiced://localhost:50051</span><br></span></code></pre></div></div>\n<p><strong>Query Execution</strong>:</p>\n<p>Queries run through the scheduler will now show a <code>distributed_plan</code> in <code>EXPLAIN</code> output, demonstrating how the query is distributed across executor nodes:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">EXPLAIN</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">count</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">id</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> my_dataset</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Current Limitations</strong>:</p>\n<ul>\n<li class=\"\">Accelerated datasets are currently <strong>not supported</strong>. This feature is designed for querying partitioned data lake formats (Parquet, Delta Lake, Iceberg, etc.)</li>\n<li class=\"\">The feature is in <strong>preview</strong> and may have stability or performance limitations</li>\n<li class=\"\">Specific acceleration support is planned for future releases</li>\n</ul>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/distributed-query\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Distributed Query Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v50-upgrade\">DataFusion v50 Upgrade<a href=\"https://spiceai.org/releases/v1.9.0#datafusion-v50-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v50 Upgrade\" title=\"Direct link to DataFusion v50 Upgrade\" translate=\"no\">​</a></h3>\n<p>Spice.ai is built on the <a href=\"https://datafusion.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion</a> query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>\n<p><strong>Performance Improvements 🚀</strong>:</p>\n<ul>\n<li class=\"\">\n<p><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</p>\n</li>\n<li class=\"\">\n<p><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</p>\n</li>\n</ul>\n<p><strong>Apache Spark Compatible Functions</strong>: Added support for Spark-compatible functions including <code>array</code>, <code>bit_get/bit_count</code>, <code>bitmap_count</code>, <code>crc32/sha1</code>, <code>date_add/date_sub</code>, <code>if</code>, <code>last_day</code>, <code>like/ilike</code>, <code>luhn_check</code>, <code>mod/pmod</code>, <code>next_day</code>, <code>parse_url</code>, <code>rint</code>, and <code>width_bucket</code>.</p>\n<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>\n<p>See the <a href=\"https://github.com/apache/datafusion/releases\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion 50.0.3 Release</a> for more details.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"duckdb-v142-upgrade-and-accelerator-improvements\">DuckDB v1.4.2 Upgrade and Accelerator Improvements<a href=\"https://spiceai.org/releases/v1.9.0#duckdb-v142-upgrade-and-accelerator-improvements\" class=\"hash-link\" aria-label=\"Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements\" title=\"Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements\" translate=\"no\">​</a></h3>\n<p><strong>DuckDB v1.4.2</strong>: DuckDB has been upgraded to v1.4.2, which includes several <a href=\"https://duckdb.org/2024/09/16/announcing-duckdb-140#performance-and-optimizations\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">performance optimizations</a>.</p>\n<p><strong>Composite ART Index Support</strong>: DuckDB in Spice now supports composite (multi-column) Adaptive Radix Tree (ART) indexes for accelerated table scans. When queries filter on multiple columns fully covered by a composite index, the optimizer automatically uses index scans instead of full table scans, delivering significant performance improvements for selective queries.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(region, product_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Performance example with composite index on 7.5M rows:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Without index: 0.282s</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- With composite index (region, product_id): 0.037s</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Performance improvement: 7.6x faster with composite index</span><br></span></code></pre></div></div>\n<p><strong>DuckDB Intermediate Materialization</strong>: Queries with indexes now use intermediate materialization (<code>WITH ... AS MATERIALIZED</code>) to leverage faster index scans. Currently supported for non-federated queries (<code>query_federation: disabled</code>) against a single table with indexes only. When predicates cover more columns than the index, the optimizer rewrites queries to first materialize index-filtered results, then apply remaining predicates. This optimization can deliver significant performance improvements for selective queries.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//sales_data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">query_federation</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> disabled </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Required currently for intermediate materialization</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(region, product_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Performance example:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Query with indexed columns (region, product_id) plus additional filter (amount)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> amount </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Optimized execution time: 0.031s (with intermediate materialization)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Standard execution time: 0.108s (without optimization)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Performance improvement: ~3.5x faster</span><br></span></code></pre></div></div>\n<p>The optimizer automatically rewrites the query to:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WITH</span><span class=\"token plain\"> _intermediate_materialize </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">AS</span><span class=\"token plain\"> MATERIALIZED </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> _intermediate_materialize </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> amount </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>\n<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>\n<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my_bucket/large_table/</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> partitioned_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> INTERVAL '7 days'</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/duckdb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DuckDB Data Accelerator Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"http-data-connector\">HTTP Data Connector<a href=\"https://spiceai.org/releases/v1.9.0#http-data-connector\" class=\"hash-link\" aria-label=\"Direct link to HTTP Data Connector\" title=\"Direct link to HTTP Data Connector\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">\n<p><strong>Querying endpoints as tables</strong>: The HTTP/HTTPS Data Connectors now supports querying HTTP endpoints directly as tables in SQL queries with dynamic filters. This feature transforms REST APIs into queryable data sources, making it easy to integrate external service data.</p>\n</li>\n<li class=\"\">\n<p>Query HTTP endpoint that returns structured data (JSON, CSV, etc.) as if it were a database table</p>\n</li>\n<li class=\"\">\n<p>Configurable retry logic, timeouts, and POST request support for more complex API interactions</p>\n</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> json</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">max_retries</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">3</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">client_timeout</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 10s</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">allowed_request_paths</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> /search/people</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">request_query_filters</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">request_body_filters</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Example SQL query:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> request_path</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> request_query</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> content</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> request_path </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'/search/people'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_query </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'q=michael'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p>If a <code>request_body</code> is supplied it will be posted to the endpoint:</p>\n<p>Example SQL query:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> request_path</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> request_query</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> content</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> request_path </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'/search/people'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_query </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'q=michael'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_body </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'{\"name\": \"michael\"}'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p>HTTP endpoints can be accelerated using <code>refresh_sql</code>:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> json</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">allowed_request_paths</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> /search/people</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">request_query_filters</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">request_body_filters</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> full</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">|</span><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        SELECT request_path, request_query, content </span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        FROM tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        WHERE request_path = '/search/people'</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">          AND request_query IN ('q=michael', 'q=luke')</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/https\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-data-connector-improvements\">DynamoDB Data Connector Improvements<a href=\"https://spiceai.org/releases/v1.9.0#dynamodb-data-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Data Connector Improvements\" title=\"Direct link to DynamoDB Data Connector Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> ddb_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">scan_segments</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/dynamodb\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DynamoDB Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-data-connector-improvements\">S3 Data Connector Improvements<a href=\"https://spiceai.org/releases/v1.9.0#s3-data-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to S3 Data Connector Improvements\" title=\"Direct link to S3 Data Connector Improvements\" translate=\"no\">​</a></h3>\n<p><strong>S3 Versioning Support</strong>: Spice now supports <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Versioning</a> for all connectors using object-store (S3, Delta Lake, etc.), ensuring range reads over versioned files are atomically correct. When S3 versioning is enabled, Spice automatically tracks version IDs during file discovery and uses them for all subsequent range reads, preventing inconsistencies from concurrent file modifications.</p>\n<p><strong>Current limitations</strong>:</p>\n<ul>\n<li class=\"\">Multi-file connections (e.g., partitioned datasets) do not yet support version tracking across all files</li>\n<li class=\"\">Version tracking is automatic when S3 versioning is enabled on the bucket</li>\n</ul>\n<p><strong>S3 Single-File Refresh Skipping</strong>: Spice now optimizes S3 single-file dataset refreshes by caching file metadata (ETag, Version ID, size, timestamp) and skipping unnecessary data fetches when the underlying file hasn't changed. This optimization dramatically reduces bandwidth usage and improves refresh performance for scenarios where data doesn't change frequently. The feature is enabled by default for accelerated S3 single-file datasets and includes metrics tracking for skipped refreshes.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">bucket/data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_check_interval</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 10s</span><br></span></code></pre></div></div>\n<p>When the file's metadata hasn't changed between refresh checks, Spice will skip the data fetch entirely, logging:</p>\n<div class=\"language-text codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Skipping refresh for dataset 's3_data': file metadata unchanged</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/s3\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"search--embeddings-enhancements\">Search &amp; Embeddings Enhancements<a href=\"https://spiceai.org/releases/v1.9.0#search--embeddings-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Search &amp; Embeddings Enhancements\" title=\"Direct link to Search &amp; Embeddings Enhancements\" translate=\"no\">​</a></h3>\n<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>\n<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>\n<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">views</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> aggregated_reviews</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> SELECT review_id</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> review_text FROM reviews WHERE rating </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"> 4</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">column</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> review_text</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">model</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> openai</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">text</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">embedding</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">small</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/search\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Search Documentation</a> and <a href=\"https://spiceai.org/docs/features/embeddings\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Embeddings Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dedicated-query-thread-pool-now-enabled-by-default\">Dedicated Query Thread Pool (Now Enabled by Default)<a href=\"https://spiceai.org/releases/v1.9.0#dedicated-query-thread-pool-now-enabled-by-default\" class=\"hash-link\" aria-label=\"Direct link to Dedicated Query Thread Pool (Now Enabled by Default)\" title=\"Direct link to Dedicated Query Thread Pool (Now Enabled by Default)\" translate=\"no\">​</a></h3>\n<p><strong>Dedicated Query Thread Pool</strong>: Query execution and accelerated refreshes now run on their own dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health checks fast and avoiding unnecessary Kubernetes pod restarts under load.</p>\n<p>This feature was opt-in in previous releases and is now <strong>enabled by default</strong>. To disable it and revert to the previous behavior, add the following spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">dedicated_thread_pool</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> none</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/reference/spicepod/runtime\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Runtime Configuration Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"query-performance-optimizations\">Query Performance Optimizations<a href=\"https://spiceai.org/releases/v1.9.0#query-performance-optimizations\" class=\"hash-link\" aria-label=\"Direct link to Query Performance Optimizations\" title=\"Direct link to Query Performance Optimizations\" translate=\"no\">​</a></h3>\n<p><strong>Stale-While-Revalidate Cache Control</strong>: Query results now support \"stale-while-revalidate\" cache control, allowing stale cached data to be served immediately while asynchronously refreshing the cache entry in the background. This improves response times for frequently-accessed queries while maintaining data freshness. Requires cache key type to be set to \"sql (raw)\" for proper operation.</p>\n<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>\n<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"query-result-caching-compressed-encoding-stale-while-revalidate-cache-control\">Query Result Caching: Compressed Encoding, Stale-While-Revalidate Cache Control<a href=\"https://spiceai.org/releases/v1.9.0#query-result-caching-compressed-encoding-stale-while-revalidate-cache-control\" class=\"hash-link\" aria-label=\"Direct link to Query Result Caching: Compressed Encoding, Stale-While-Revalidate Cache Control\" title=\"Direct link to Query Result Caching: Compressed Encoding, Stale-While-Revalidate Cache Control\" translate=\"no\">​</a></h3>\n<p><strong>Zstd Compression Encoding</strong>: Query result caching now supports optional <a href=\"https://facebook.github.io/zstd/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Zstandard (zstd)</a> compression encoding to reduce memory usage for cached query results. This is particularly beneficial for large result sets, reducing cache memory footprint while maintaining fast decompression times. Encoding can be configured via the <code>encoding</code> parameter with options <code>none</code> (default) or <code>zstd</code>.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">caching</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">max_size</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 128MiB</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">item_ttl</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1m</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">encoding</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> zstd </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Enable zstd compression</span><br></span></code></pre></div></div>\n<p><strong>HTTP Cache-Control Support</strong>: The query result cache now supports the <code>stale-while-revalidate</code> <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-while-revalidate\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cache-Control directive</a>, enabling faster response times by serving stale cached results immediately while asynchronously refreshing the cache in the background. This feature is particularly useful for applications that can tolerate slightly stale data in exchange for improved performance.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">caching</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql_results</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">max_size</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 128MiB</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">item_ttl</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1m</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">stale_while_revalidate_ttl</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 1m </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># serve stale items for up to 1 minute after `item_ttl` expires</span><br></span></code></pre></div></div>\n<p><strong>How it works</strong>:</p>\n<p>When a cache entry is stale but within the <code>stale-while-revalidate</code> window, Spice will:</p>\n<ol>\n<li class=\"\">Immediately return the stale cached result to the client</li>\n<li class=\"\">Asynchronously re-execute the query in the background to refresh the cache</li>\n<li class=\"\">Future requests will use the refreshed data</li>\n</ol>\n<p><strong>Configuration</strong>:</p>\n<p>Use the <code>Cache-Control</code> HTTP header with the <code>stale-while-revalidate</code> directive:</p>\n<div class=\"language-http codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-http codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Cache-Control: max-age=300, stale-while-revalidate=60</span><br></span></code></pre></div></div>\n<p>This configuration caches results for 5 minutes (300 seconds), and allows serving stale results for an additional 60 seconds while refreshing in the background.</p>\n<p><strong>Requirements</strong>:</p>\n<ul>\n<li class=\"\">Must use plan or raw SQL cache keys (set <code>cache_key_type</code> to <code>sql</code> or <code>plan</code> in results_caching configuration)</li>\n<li class=\"\">Background revalidation re-executes queries through the normal query path</li>\n<li class=\"\">Timestamp tracking automatically determines cache entry age for staleness checks</li>\n</ul>\n<p>Example configuration via HTTP header:</p>\n<div class=\"language-http codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-http codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">GET /v1/sql</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Cache-Control: max-age=600, stale-while-revalidate=120</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">X-Cache-Key-Type: sql</span><br></span></code></pre></div></div>\n<p>This feature improves application responsiveness while ensuring data freshness through background updates.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/features/caching\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Results Caching Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"security--reliability-improvements\">Security &amp; Reliability Improvements<a href=\"https://spiceai.org/releases/v1.9.0#security--reliability-improvements\" class=\"hash-link\" aria-label=\"Direct link to Security &amp; Reliability Improvements\" title=\"Direct link to Security &amp; Reliability Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>\n<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>\n<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>\n<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"aws-authentication-improvements\">AWS Authentication Improvements<a href=\"https://spiceai.org/releases/v1.9.0#aws-authentication-improvements\" class=\"hash-link\" aria-label=\"Direct link to AWS Authentication Improvements\" title=\"Direct link to AWS Authentication Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Credential Retry Logic</strong>: AWS SDK credential initialization has been significantly improved with more robust retry logic and better error handling. The system now automatically retries transient credential resolution failures using Fibonacci backoff, allowing Spice to tolerate extended AWS outages (up to ~48 hours) without manual intervention.</p>\n<p><strong>Key features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Automatic retry with backoff</strong>: Implements Fibonacci backoff for transient credential failures (network issues, temporary AWS service disruptions)</li>\n<li class=\"\"><strong>Better error handling</strong>: Distinguishes between retryable errors (connector errors) and non-retryable errors (misconfiguration)</li>\n<li class=\"\"><strong>Unauthenticated access support</strong>: Properly supports unauthenticated access to public S3 buckets without requiring credentials</li>\n<li class=\"\"><strong>Improved error messages</strong>: Provides detailed logging with attempt numbers, retry intervals, and error context for better troubleshooting</li>\n</ul>\n<p>The improvements ensure more reliable AWS service integration, particularly in environments with intermittent network connectivity or during AWS service degradations.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"observability--tracing\">Observability &amp; Tracing<a href=\"https://spiceai.org/releases/v1.9.0#observability--tracing\" class=\"hash-link\" aria-label=\"Direct link to Observability &amp; Tracing\" title=\"Direct link to Observability &amp; Tracing\" translate=\"no\">​</a></h3>\n<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>\n<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"git-data-connector-alpha\">Git Data Connector (Alpha)<a href=\"https://spiceai.org/releases/v1.9.0#git-data-connector-alpha\" class=\"hash-link\" aria-label=\"Direct link to Git Data Connector (Alpha)\" title=\"Direct link to Git Data Connector (Alpha)\" translate=\"no\">​</a></h3>\n<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> git</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//github.com/myorg/myrepo</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> git_metrics</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> csv</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/git\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Git Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-java-sdk-040\">Spice Java SDK 0.4.0<a href=\"https://spiceai.org/releases/v1.9.0#spice-java-sdk-040\" class=\"hash-link\" aria-label=\"Direct link to Spice Java SDK 0.4.0\" title=\"Direct link to Spice Java SDK 0.4.0\" translate=\"no\">​</a></h3>\n<p>The Spice Java SDK has been upgraded with support for configurable Arrow memory limit: <a href=\"https://github.com/spiceai/spice-java/releases/tag/v0.4.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-java v0.4.0</a></p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">SpiceClient client = SpiceClient.builder()</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    .withArrowMemoryLimitMB(1024) // 1GB limit</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    .build();</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://github.com/spiceai/spice-java/blob/trunk/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Java SDK Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cli-improvements\">CLI Improvements<a href=\"https://spiceai.org/releases/v1.9.0#cli-improvements\" class=\"hash-link\" aria-label=\"Direct link to CLI Improvements\" title=\"Direct link to CLI Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Install Specific Versions</strong>: The <code>spice install</code> command now supports installing specific versions of the Spice runtime and CLI. This enables easy version management, downgrading, or installation of specific releases for testing or compatibility requirements.</p>\n<p>Usage:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install a specific version</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install v1.8.3</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install a specific version with AI flavor</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install v1.8.3 ai</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install latest version (existing behavior)</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install ai</span><br></span></code></pre></div></div>\n<p>Note: Homebrew installations require manual version management via <code>brew install spiceai/spiceai/spice@&lt;version&gt;</code>.</p>\n<p><strong>Persistent Query History</strong>: The Spice CLI REPL (SQL, search, and chat interfaces) now persists command history to <code>~/.spice/query_history.txt</code>, making your query history available across sessions. The history file is automatically created if it doesn't exist, with graceful fallback if the home directory cannot be determined.</p>\n<p><strong>New REPL Commands</strong>:</p>\n<ul>\n<li class=\"\"><code>.clear</code> - Clear the screen using ANSI escape codes for a clean workspace</li>\n<li class=\"\"><code>.clear history</code> - Clear and persist the query history, removing all stored commands</li>\n</ul>\n<p><strong>Tab Completion</strong>: Tab completion now includes suggestions based on your command history, making it faster to re-run or modify previous queries.</p>\n<p>Example usage:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; SELECT * FROM my_table;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; .clear          # Clears the screen</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; .clear history  # Clears command history</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; # Use arrow keys or tab to access previous commands</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://docs.spiceai.org/cli\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">CLI Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.9.0#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>\n<li class=\"\"><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>\n<li class=\"\"><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>\n<li class=\"\"><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>\n<li class=\"\"><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>\n<li class=\"\"><strong>Validation</strong>: Added timestamp support for partition expressions.</li>\n<li class=\"\"><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>\n<li class=\"\"><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.9.0#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.9.0#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.9.0#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p><strong>New HTTP Data Connector Recipe</strong>: New recipe demonstrating how to query REST APIs and HTTP(s) endpoints. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/http\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP Connector Recipe</a> for details.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.9.0#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.9.0, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.9.0</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.9.0</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.9.0#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dependencies\">Dependencies<a href=\"https://spiceai.org/releases/v1.9.0#dependencies\" class=\"hash-link\" aria-label=\"Direct link to Dependencies\" title=\"Direct link to Dependencies\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>DataFusion</strong>: <a href=\"https://datafusion.apache.org/blog/2025/09/29/datafusion-50.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v50</a></li>\n<li class=\"\"><strong>Apache Arrow</strong>: <a href=\"https://github.com/apache/arrow-rs/releases/tag/56.0.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v56</a></li>\n<li class=\"\"><strong>DuckDB</strong>: <a href=\"https://github.com/duckdb/duckdb/releases/tag/v1.4.2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v1.4.2</a></li>\n<li class=\"\"><strong>Delta Kernel</strong>: <a href=\"https://github.com/delta-io/delta-kernel-rs/blob/main/CHANGELOG.md#v0160-2025-09-19\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v0.16.0</a></li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.9.0#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Fix for search field as metadata for chunked search indexes by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7429\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7429</a></li>\n<li class=\"\">Bump object_store from 0.12.3 to 0.12.4 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7433\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7433</a></li>\n<li class=\"\">Properly respect disabling snapshots by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7431\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7431</a></li>\n<li class=\"\">Revert \"Properly respect disabling snapshots\" by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7439\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7439</a></li>\n<li class=\"\">Revert \"Disable snapshots by default\" by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7438\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7438</a></li>\n<li class=\"\">Add preview warning for write access mode by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7440\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7440</a></li>\n<li class=\"\">fix: regexp_match for DuckDB datasets by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7443\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7443</a></li>\n<li class=\"\">Add feature is currently in preview warning for snapshots by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7442\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7442</a></li>\n<li class=\"\">[Logger] Also emit Datafusion logs by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7441\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7441</a></li>\n<li class=\"\">add missing snapshot by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7446\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7446</a></li>\n<li class=\"\">Fix tracing so that ai_completions are parented under sql_query by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7415\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7415</a></li>\n<li class=\"\">Enable snapshot acceleration by default by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7451\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7451</a></li>\n<li class=\"\">Disable acceleration refresh metrics by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7450\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7450</a></li>\n<li class=\"\">Add v1.8 release notes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7430\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7430</a></li>\n<li class=\"\">fix: partition name validation by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7452\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7452</a></li>\n<li class=\"\">Fix lint error due to ignore without reasons by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7454\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7454</a></li>\n<li class=\"\">Add models and CUDA support to spiced install script by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7457\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7457</a></li>\n<li class=\"\">Post-release 1.8 updates by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7455\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7455</a></li>\n<li class=\"\">Remove println in datafusion by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7461\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7461</a></li>\n<li class=\"\">Update end_game.md to notify once release is done by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7460\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7460</a></li>\n<li class=\"\">Remove italics from snapshot logging by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7463\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7463</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7466\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7466</a></li>\n<li class=\"\">Fix generate spicepod schema by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7464\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7464</a></li>\n<li class=\"\">Fix generate acknowledements by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7465\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7465</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7469\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7469</a></li>\n<li class=\"\">fix: Ensure ListingTable partitions are pruned when filters are not used by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7471\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7471</a></li>\n<li class=\"\">Create <code>runtime-secrets</code> crate by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7474</a></li>\n<li class=\"\">Create <code>runtime-parameters</code> crate by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7475\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7475</a></li>\n<li class=\"\">Don't download the snapshot if the acceleration is present by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7477\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7477</a></li>\n<li class=\"\">Bump hyper-util from 0.1.16 to 0.1.17 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7434\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7434</a></li>\n<li class=\"\">Add missing remote CLI feature by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7478\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7478</a></li>\n<li class=\"\">Add 1.8.0 release analytics by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7481\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7481</a></li>\n<li class=\"\">CLI multi-line input support for <code>spice sql</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7479\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7479</a></li>\n<li class=\"\">fix: duckdb partitioning cannot reload config by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7482\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7482</a></li>\n<li class=\"\">fix: Make search cache test use a slower uncached search by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7473\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7473</a></li>\n<li class=\"\">Add support for S3 dataset params by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7476\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7476</a></li>\n<li class=\"\">Add DuckDB TPC-H memory limit variations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7484\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7484</a></li>\n<li class=\"\">Add better snapshot validation for incorrectly configured spicepods by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7487\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7487</a></li>\n<li class=\"\">Move blocking/sync I/O to spawn blocking by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7462\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7462</a></li>\n<li class=\"\">Add DuckDB file accelerator 2G and 4G dispatches by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7491\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7491</a></li>\n<li class=\"\">Validate spicepod file exists before running tests by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7492\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7492</a></li>\n<li class=\"\">Make snapshot reading/writing more robust with Iceberg-like metadata.json by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7486\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7486</a></li>\n<li class=\"\">Re-use build-testoperator and ensure it's cached by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7494\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7494</a></li>\n<li class=\"\">Fix duckdb test operator limit casing by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7498\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7498</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7499\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7499</a></li>\n<li class=\"\">Create <code>runtime-request-context</code> crate by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7459\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7459</a></li>\n<li class=\"\">Add integration tests for Acceleration DB snapshotting by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7489\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7489</a></li>\n<li class=\"\">Two minor fixes for AI udf tests by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7503\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7503</a></li>\n<li class=\"\">Add model response timeout for ai udf tests by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7504\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7504</a></li>\n<li class=\"\">Show error if FTS is misconfigured for datasets/views by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7458\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7458</a></li>\n<li class=\"\">Add test for chunked search index with search field as metadata by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7513\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7513</a></li>\n<li class=\"\">Add sccache for build test operator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7515\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7515</a></li>\n<li class=\"\">Enhancement: Add <code>spill_compression</code> to runtime config by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7505\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7505</a></li>\n<li class=\"\">Improve GitHub Data Connector by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7510\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7510</a></li>\n<li class=\"\">Add <code>RequestTimeoutException</code> to S3 client by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7514\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7514</a></li>\n<li class=\"\">Add <code>sha=&lt;&gt;</code> to snapshot logging by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7521\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7521</a></li>\n<li class=\"\">Add Type to GitHub Data Connector issues and fix double aliasing for project author by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7519\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7519</a></li>\n<li class=\"\">DuckDB acceleration: fix memory leak in duckdb_arrow_scan by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7524\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7524</a></li>\n<li class=\"\">Fix partition_by accelerations when a projection is applied on empty partition sets by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7526\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7526</a></li>\n<li class=\"\">Nullable fields for index columns by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7523\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7523</a></li>\n<li class=\"\">Fix missing winver dependency for Windows by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7538\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7538</a></li>\n<li class=\"\">Update mongo config for benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7546\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7546</a></li>\n<li class=\"\">Add acceleration snapshots cookbook to template by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7527\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7527</a></li>\n<li class=\"\">Bump github/codeql-action from 3 to 4 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7535\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7535</a></li>\n<li class=\"\">Bump golang.org/x/sys from 0.36.0 to 0.37.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7529\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7529</a></li>\n<li class=\"\">Make <code>spice chat</code> play nice with Unix pipes by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7525\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7525</a></li>\n<li class=\"\">Configurable DuckDB duckdb_index_scan_percentage &amp; duckdb_index_scan_max_count by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7551\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7551</a></li>\n<li class=\"\">[cherry-pick] Release notes for release 1.8.1 by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7556\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7556</a></li>\n<li class=\"\">Fix 1.8.1 release notes by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7558\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7558</a></li>\n<li class=\"\">FTS index with nonfilterable metadata; search field not metadata by default. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7548\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7548</a></li>\n<li class=\"\">Properly set auth headers in github_release.py by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7560\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7560</a></li>\n<li class=\"\">project_schema when using EmptyExec by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7543\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7543</a></li>\n<li class=\"\">Add 1.8.1 release analytics by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7561\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7561</a></li>\n<li class=\"\">Bump golang.org/x/mod from 0.28.0 to 0.29.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7530\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7530</a></li>\n<li class=\"\">Hive-style partitioning for DuckDB file mode by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7563\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7563</a></li>\n<li class=\"\">Vortex Data Accelerator (Dev grade) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7566\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7566</a></li>\n<li class=\"\">Only load eval scorers when eval defined by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7549\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7549</a></li>\n<li class=\"\">Bump octocrab from 0.45.0 to 0.47.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7531\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7531</a></li>\n<li class=\"\">Bump regex from 1.11.3 to 1.12.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7532\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7532</a></li>\n<li class=\"\">Fix custom file path for Vortex Data Accelerator by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7570\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7570</a></li>\n<li class=\"\">Add List type support to Vortex Data Accelerator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7569\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7569</a></li>\n<li class=\"\">Bump parking_lot from 0.12.4 to 0.12.5 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7534\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7534</a></li>\n<li class=\"\">Bump tokio-postgres from 0.7.14 to 0.7.15 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7533\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7533</a></li>\n<li class=\"\">Remove duplicate line from 1.8.1 release notes by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7580\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7580</a></li>\n<li class=\"\">Upgrade Go from v1.24.2 to v1.25.3 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7582\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7582</a></li>\n<li class=\"\">Fix race condition in S3 Vectors index and bucket creation by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7577\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7577</a></li>\n<li class=\"\">Add <code>runtime-async</code> crate with managed Tokio runtime by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7575\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7575</a></li>\n<li class=\"\">Optimize GitHub Actions workflows by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7584\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7584</a></li>\n<li class=\"\">Use 'location' as primary key for document tables by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7567\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7567</a></li>\n<li class=\"\">Extend query-related metrics by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7571\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7571</a></li>\n<li class=\"\">Enabling acceleration refresh metrics by using <code>runtime.metrics</code> config by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7583\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7583</a></li>\n<li class=\"\">S3Vector service metrics in client by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7502\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7502</a></li>\n<li class=\"\">Fix score order for one test case by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7595\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7595</a></li>\n<li class=\"\"><code>ObjectMeta</code> filter pushdown for <code>ObjectStoreTextTable</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7572\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7572</a></li>\n<li class=\"\">Return <code>TableProvider</code> from <code>CandidateGeneration::search</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7559\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7559</a></li>\n<li class=\"\">EmptyHashJoinExecPhysicalOptimization, and use in VectorScanTableProvider by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7587\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7587</a></li>\n<li class=\"\">Update official Docker builds to use release binaries by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7597\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7597</a></li>\n<li class=\"\">New Generate Changelog workflow by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7562\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7562</a></li>\n<li class=\"\">BytesProcessedExec to allow optimizer to do limit pushdown by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7539\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7539</a></li>\n<li class=\"\">GitHub Data Connector add Projects, improve rate-limiting and error handling by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7547\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7547</a></li>\n<li class=\"\">Add copilot-instructions to help improve Copilot reviews by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7606\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7606</a></li>\n<li class=\"\">Add support for DuckDB table-based partitioning by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7581\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7581</a></li>\n<li class=\"\">fix: Use nextest for integration models tests by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7617\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7617</a></li>\n<li class=\"\">Fix license issue in table-providers by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7620\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7620</a></li>\n<li class=\"\">Remove <code>Build Docker Image</code> from PR checks by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7621\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7621</a></li>\n<li class=\"\">Combine PR Lint + Build checks by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7623\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7623</a></li>\n<li class=\"\">Remove Cache Rust builds step by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7625\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7625</a></li>\n<li class=\"\">Rename <code>duckdb_partition_mode</code> to <code>partition_mode</code> param by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7622\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7622</a></li>\n<li class=\"\">DuckDB table partitioning: delete partitions that no longer exist after full refresh by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7614\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7614</a></li>\n<li class=\"\">Build integration test binaries in single job by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7624\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7624</a></li>\n<li class=\"\">Make DuckDB table partition data write threshold configurable by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7626\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7626</a></li>\n<li class=\"\">Handle table relations in HTTP v1/search by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7615\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7615</a></li>\n<li class=\"\">Fix E2E Test sporadic failures on the macOS runners by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7627\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7627</a></li>\n<li class=\"\">Emit <code>query_active_count</code> metric by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7589\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7589</a></li>\n<li class=\"\">fix: Disable go cache in actions by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7631\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7631</a></li>\n<li class=\"\">fix: Don't nullify DuckDB release callbacks for schemas by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7628\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7628</a></li>\n<li class=\"\">Fix integration tests by reverting the use of batch inserts w/ prepared statements by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7630\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7630</a></li>\n<li class=\"\">Split integration tests into 3 partitions by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7635\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7635</a></li>\n<li class=\"\">Initial Pepper data accelerator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7592\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7592</a></li>\n<li class=\"\">Only build the E2E Test CI binaries once by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7633\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7633</a></li>\n<li class=\"\">Update BytesProcessedExec snapshots by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7637\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7637</a></li>\n<li class=\"\">Properly set RequestContext for stream execution in Flight by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7591\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7591</a></li>\n<li class=\"\">Add task for creating release branch in docs by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7642\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7642</a></li>\n<li class=\"\">Add missing mongodb params by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7647\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7647</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7649\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7649</a></li>\n<li class=\"\">Release notes for v1.8.2 by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7645\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7645</a></li>\n<li class=\"\">docs: Update error handling in copilot instructions by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7652\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7652</a></li>\n<li class=\"\">Pepper accelerator INSERT OVERWRITE support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7643\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7643</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7650\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7650</a></li>\n<li class=\"\">Run Datafusion queries on a separate Tokio runtime by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7586\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7586</a></li>\n<li class=\"\">Add explicit steps for docs DRI in end game by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7658\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7658</a></li>\n<li class=\"\">Add Release 1.8.2 QA Analytics by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7661\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7661</a></li>\n<li class=\"\">Pepper full / append refresh support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7662\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7662</a></li>\n<li class=\"\">Add 'client_timeout' for s3 vector by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7501\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7501</a></li>\n<li class=\"\">Improvements to Endgame template by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7660\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7660</a></li>\n<li class=\"\">Fix OSS docker release trigger when release marked as latest by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7668\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7668</a></li>\n<li class=\"\">Use '#[serde(deny_unknown_fields)]' for base spicepod components by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7669\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7669</a></li>\n<li class=\"\">DataFusion upgrade template to include Ballista by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7679\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7679</a></li>\n<li class=\"\">S3 Vector index spilling by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7613\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7613</a></li>\n<li class=\"\">Refresh request context bindings / fix trunk integration tests by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7680\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7680</a></li>\n<li class=\"\">Fix integration tests for refresh append by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7681\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7681</a></li>\n<li class=\"\">Distributed query support by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7585\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7585</a></li>\n<li class=\"\">Run acceleration refreshes on separate Tokio runtime by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7671\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7671</a></li>\n<li class=\"\">Support DESCRIBE in clustered mode by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7686\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7686</a></li>\n<li class=\"\">use hyphen instead of period for index name spill separator by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7697\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7697</a></li>\n<li class=\"\">Add streaming option to /nsql endpoint by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7695\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7695</a></li>\n<li class=\"\">Task History <code>min_sql_duration</code> filter support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7698\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7698</a></li>\n<li class=\"\">Spawn <code>object_store</code> IO tasks on the original Tokio runtime by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7689\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7689</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7700\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7700</a></li>\n<li class=\"\">Adjust DataFusion runtime worker threads by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7704\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7704</a></li>\n<li class=\"\">Gate dedicated SQL engine CPU runtime behind opt-in param <code>dedicated_thread_pool</code> by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7705\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7705</a></li>\n<li class=\"\">Add TPCH S3 refresh spicepod by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7706\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7706</a></li>\n<li class=\"\">DuckDB: include ANALYZE after write to update query optimizer statistics by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7714\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7714</a></li>\n<li class=\"\">Display execution time in Spice REPL for no results by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7713\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7713</a></li>\n<li class=\"\">Task History capture and store SQL query plans by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7701\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7701</a></li>\n<li class=\"\">Pepper TPC-H SF-1 benchmark by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7717\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7717</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7720\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7720</a></li>\n<li class=\"\">Optimize prepared statements (parameterized queries) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7703\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7703</a></li>\n<li class=\"\">Pepper accelerator tests (Clickbench, TPC-H SF-5, SF-100) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7721\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7721</a></li>\n<li class=\"\">Add support for DuckDB <code>connection_pool_size</code> param by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7716\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7716</a></li>\n<li class=\"\">Add health probing to testoperator runs by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7709\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7709</a></li>\n<li class=\"\">Simplify <code>AcceleratedTable</code> by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7724\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7724</a></li>\n<li class=\"\">Add some basic indexing tests for 'FullTextDatabaseIndex' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7688\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7688</a></li>\n<li class=\"\">DuckDB: <code>on_refresh_recompute_statistics</code> param + ANALYZE for table-based partitioning by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7719\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7719</a></li>\n<li class=\"\">Fix Windows builds by excluding pepper/vortex by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7729\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7729</a></li>\n<li class=\"\">Enable separate CPU runtime thread pool for DataFusion by default by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7732\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7732</a></li>\n<li class=\"\">'runtime-datafusion' crate for runtime related DataFusion components by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7666\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7666</a></li>\n<li class=\"\">Pepper expanded append refresh support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7670\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7670</a></li>\n<li class=\"\">Pepper basic partitioning by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7731\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7731</a></li>\n<li class=\"\">Stable pepper benchmark snapshots by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7739\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7739</a></li>\n<li class=\"\">Delta Lake Connector: Support <code>AWS_SESSION_TOKEN</code> parameter by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7752\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7752</a></li>\n<li class=\"\">Pepper use SQLite WAL by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7757\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7757</a></li>\n<li class=\"\">v1.8.3 release notes by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7745\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7745</a></li>\n<li class=\"\">Increase testoperator health check threshold to 50ms by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7767\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7767</a></li>\n<li class=\"\">Data Accelerator Graceful Shutdown by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7756\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7756</a></li>\n<li class=\"\">Remove Windows CUDA builds by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7768\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7768</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7771\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7771</a></li>\n<li class=\"\">Bump actions/download-artifact from 5 to 6 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7746\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7746</a></li>\n<li class=\"\">Bump serde from 1.0.226 to 1.0.228 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7743\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7743</a></li>\n<li class=\"\">Fix casing for keywords and additional columns by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7770\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7770</a></li>\n<li class=\"\">Bump actions/upload-artifact from 4 to 5 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7750\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7750</a></li>\n<li class=\"\">Bump criterion from 0.5.1 to 0.7.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7740\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7740</a></li>\n<li class=\"\">Bump rustls-native-certs from 0.8.1 to 0.8.2 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7744\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7744</a></li>\n<li class=\"\">Git Data Connector (Alpha) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7772\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7772</a></li>\n<li class=\"\">Pepper accelerator delete support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7616\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7616</a></li>\n<li class=\"\">Update Helm chart instructions for Helm in end_game.md by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7776\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7776</a></li>\n<li class=\"\">Turso data accelerator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7472\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7472</a></li>\n<li class=\"\">Apply retention SQL filter to refresh fetch by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7778\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7778</a></li>\n<li class=\"\">Add Parquet buffering option for DuckDB partitioned writes (tables mode) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7735\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7735</a></li>\n<li class=\"\">fix: EmptyExec when list indexes is empty by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7784\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7784</a></li>\n<li class=\"\">1.8.3 post-release housekeeping by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7783\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7783</a></li>\n<li class=\"\">feat: Upgrade to Datafusion v50 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7777\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7777</a></li>\n<li class=\"\">fix: Replace vortex datafusion with public crate by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7791\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7791</a></li>\n<li class=\"\">Full-text search on views by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7733\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7733</a></li>\n<li class=\"\">Revert \"Apply retention SQL filter to refresh fetch (#7778)\" by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7796\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7796</a></li>\n<li class=\"\">fix: Add ingest duration and acceleration size metrics to testoperator by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7792\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7792</a></li>\n<li class=\"\">Set local timezone to UTC for DuckDB by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7797\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7797</a></li>\n<li class=\"\">add Timestamp support for partition expressions by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7803\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7803</a></li>\n<li class=\"\">Fix trunk lint by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7804\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7804</a></li>\n<li class=\"\">Add missing mongodb params by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7807\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7807</a></li>\n<li class=\"\">Embedding columns on view components by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7795\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7795</a></li>\n<li class=\"\">Add Turso as a Pepper Catalog metastore by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7793\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7793</a></li>\n<li class=\"\">Run retention_sql on refresh commit for DuckDB by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7785\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7785</a></li>\n<li class=\"\">docs: Update datafusion upgrade checklist by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7812\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7812</a></li>\n<li class=\"\">Vector engines on views by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7808\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7808</a></li>\n<li class=\"\">Handle refresh worker panics and add recovery test by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7815\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7815</a></li>\n<li class=\"\">chunk large record batches to control memory usage by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7802\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7802</a></li>\n<li class=\"\">fix: cannot determine vector dimension for partitioned indexes by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7818\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7818</a></li>\n<li class=\"\">Upgrade to Turso v0.3 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7821\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7821</a></li>\n<li class=\"\">fix: Ensure custom *Exec ExecutionPlans push down dynamic filters by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7811\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7811</a></li>\n<li class=\"\">handle casing in RRF by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7825\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7825</a></li>\n<li class=\"\">Enable 'turso' for pepper acceleration by default by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7826\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7826</a></li>\n<li class=\"\">Improved DynamoDB Data Connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7715\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7715</a></li>\n<li class=\"\">Initial support for llama.cpp as LLM inference backend by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7794\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7794</a></li>\n<li class=\"\">Pepper: Implement retention SQL on refresh commit by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7814\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7814</a></li>\n<li class=\"\">Fix Dockerfiles for arm64 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7834\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7834</a></li>\n<li class=\"\">[DynamoDB] Handle filter edge-cases by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7830\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7830</a></li>\n<li class=\"\">[DynamoDB] Support parallelization for <code>Scan</code> request by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7829\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7829</a></li>\n<li class=\"\">Don't feature gate Pepper by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7832\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7832</a></li>\n<li class=\"\">Fix llama.cpp static link by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7835\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7835</a></li>\n<li class=\"\">fix: docker nightly builds by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7837\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7837</a></li>\n<li class=\"\">Use GitHub-hosted macOS runner only for tag releases by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7836\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7836</a></li>\n<li class=\"\">Fix Bug: DuckDB INTERNAL Error: Failed to load metadata pointer by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7839\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7839</a></li>\n<li class=\"\">Fix docker arm64 build to use aegis in pure-rust mode by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7840\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7840</a></li>\n<li class=\"\">Revert \"Use GitHub-hosted macOS runner only for tag releases\" by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7843\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7843</a></li>\n<li class=\"\">Rename Pepper to Cayenne by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7844\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7844</a></li>\n<li class=\"\">Tighten CLI permissions and install script by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7845\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7845</a></li>\n<li class=\"\">Set mvcc for Cayenne Turso metastore by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7850\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7850</a></li>\n<li class=\"\">Optimize Prepared Statements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7859\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7859</a></li>\n<li class=\"\">Remove unwrap from ODBC connector, fix secrets, and kuberenetes secre… by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7846\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7846</a></li>\n<li class=\"\">Improve and secure HTTP client usage by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7847\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7847</a></li>\n<li class=\"\">Pin Oracle Instant Client download to a SHA by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7851\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7851</a></li>\n<li class=\"\">Improve experience for missing or invalid Spicepod.yaml by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7849\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7849</a></li>\n<li class=\"\">chore: Fix PR linting by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7865\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7865</a></li>\n<li class=\"\">Revert FlightIPC issues by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7870\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7870</a></li>\n<li class=\"\">Bump Jimver/cuda-toolkit from 0.2.28 to 0.2.29 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7878\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7878</a></li>\n<li class=\"\">Optimize macOS and Windows builds by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7863\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7863</a></li>\n<li class=\"\">Improve error message by adding 'cayenne' to the list of valid accelerator engines by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7882\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7882</a></li>\n<li class=\"\">fix: Kafka message delivery failed by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7883\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7883</a></li>\n<li class=\"\">fix: allow parameter index without dollar signs by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7887\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7887</a></li>\n<li class=\"\">docs: Update component criteria by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7891\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7891</a></li>\n<li class=\"\">Temporary disable <code>supports_limit_pushdown</code> for <code>SchemaCastScanExec</code> by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7893\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7893</a></li>\n<li class=\"\">fix: Make integration run with no relevant changes, disable makefile targets on PR by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7896\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7896</a></li>\n<li class=\"\">Add Cayenne benchmark and concurrency tests and remove indexes for Turso MVCC by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7879\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7879</a></li>\n<li class=\"\">Remove '.embeddings[].metadata' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7897\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7897</a></li>\n<li class=\"\">Revert llama.cpp engine by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7898\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7898</a></li>\n<li class=\"\">Make Cayenne snapshotting more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7899\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7899</a></li>\n<li class=\"\">Release notes v1.9.0-rc1 by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7902\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7902</a></li>\n<li class=\"\">Fix <code>dataset_acceleration_last_refresh_time_ms</code> unit to milliseconds in description by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7901\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7901</a></li>\n<li class=\"\">Fix lint error in record_explain_plan functionality by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7906\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7906</a></li>\n<li class=\"\">Cleanup old snapshots after full refresh by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7908\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7908</a></li>\n<li class=\"\">Cayenne deletion vector caching support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7903\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7903</a></li>\n<li class=\"\">Split filters into partition filters (for pruning) and data filters by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7889\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7889</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7911\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7911</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7912\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7912</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7913\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7913</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7916\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7916</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7917\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7917</a></li>\n<li class=\"\">Add Cayenne &amp; Turso accelerators to E2E CI test matrix by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7922\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7922</a></li>\n<li class=\"\">Make preview warnings consistent by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7921\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7921</a></li>\n<li class=\"\">Filter and write optimizations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7918\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7918</a></li>\n<li class=\"\">fix: Set sccache region explicitly by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7928\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7928</a></li>\n<li class=\"\">fix: Enable integration test merge group checks by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7927</a></li>\n<li class=\"\">Update testoperator release branch from 1.8 to 1.9 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7926\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7926</a></li>\n<li class=\"\">Update DuckDB to 1.4.1 with composite ART scans by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7884\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7884</a></li>\n<li class=\"\">Don't build Windows on trunk pushes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7931\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7931</a></li>\n<li class=\"\">fix: Use correct minio secret in build binary push by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7934\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7934</a></li>\n<li class=\"\">Update test-framework workers to use dedicated Flight client by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7938\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7938</a></li>\n<li class=\"\">Fix financebench, configure s3vectors for appropriate snapshotting by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7935\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7935</a></li>\n<li class=\"\">Don't try to initialize accelerator if it is disabled by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7932</a></li>\n<li class=\"\">Add spark UDFs to Spice by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7936\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7936</a></li>\n<li class=\"\">Fix extra async_trait in cayenne metadata catalog by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7942\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7942</a></li>\n<li class=\"\">deps: Upgrade to Rust 1.90 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7941\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7941</a></li>\n<li class=\"\">Add cayenne accelerator to README.md by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7905\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7905</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7948\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7948</a></li>\n<li class=\"\">Run integration tests with <code>AWS_EC2_METADATA_DISABLED</code> flag by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7952\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7952</a></li>\n<li class=\"\">Only retry credentials on ConnectorError by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7944\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7944</a></li>\n<li class=\"\">fix: Improve join reordering by ensuring <code>JoinSelection</code> is applied by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7828\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7828</a></li>\n<li class=\"\">fix: Remove unused deps, consolidate workspace deps by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7953\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7953</a></li>\n<li class=\"\">bump async-openai commit by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7929\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7929</a></li>\n<li class=\"\">deps: Use vortex fork by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7954\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7954</a></li>\n<li class=\"\">Enable tracing in delta lake integration tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7951\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7951</a></li>\n<li class=\"\">Update datasets in S3 vectors test case by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7956\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7956</a></li>\n<li class=\"\">Add spiced metrics scraping to test operator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7937\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7937</a></li>\n<li class=\"\">Memoize S3 vectors ListIndex API call with configurable TTL by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7910\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7910</a></li>\n<li class=\"\">Cayenne performance optimizations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7907\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7907</a></li>\n<li class=\"\">Setup HotFix issue template by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7957\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7957</a></li>\n<li class=\"\">Fix AWS SDK credential cache retry handling by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7943\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7943</a></li>\n<li class=\"\">Infer RRF <code>join_key</code> from <code>TableProvider::constraints</code> and implement <code>SearchQueryProvider::constraints</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7959\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7959</a></li>\n<li class=\"\">[Optimizer]: DuckDB intermediate materialization (non-federated) by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7964\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7964</a></li>\n<li class=\"\">1.7.3 post-release housekeeping by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7962\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7962</a></li>\n<li class=\"\">Fix <code>digest_many</code> UDF for <code>ColumnarValue::Array</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7960\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7960</a></li>\n<li class=\"\">Fix spiced metrics reporting as part of benchmark tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7967\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7967</a></li>\n<li class=\"\">Avoid pushing down Spice specific UDFs to accelerators during federation by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7909\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7909</a></li>\n<li class=\"\">CLI file persisted history with <code>.clear</code> and <code>.clear history</code> commands by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7970\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7970</a></li>\n<li class=\"\">ResultsCache Cache-Control <code>stale-while-revalidate</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7963\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7963</a></li>\n<li class=\"\">Use GetVectors API instead of returnData by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7083\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7083</a></li>\n<li class=\"\">Make DuckDB intermediate materialization logic more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7971\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7971</a></li>\n<li class=\"\">[Cayenne] Configurable target Vortex file size by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7972\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7972</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7974\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7974</a></li>\n<li class=\"\">Bump github.com/klauspost/compress from 1.17.11 to 1.18.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7872\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7872</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7978\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7978</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7982\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7982</a></li>\n<li class=\"\">Run Integration tests on spiceai-dev-runners by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7985\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7985</a></li>\n<li class=\"\">[CLI] Fix cursor issue due to flush by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7981\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7981</a></li>\n<li class=\"\">fix: Support S3 versioning, Vortex dynamic filter pushdown by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7984\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7984</a></li>\n<li class=\"\">Make <code>cluster</code> a default feature by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7994\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7994</a></li>\n<li class=\"\">Optimize DuckDB Intermediate Index Materialization for No-Index Case by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7998\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7998</a></li>\n<li class=\"\">HTTP connector with dynamic filter support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7969\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7969</a></li>\n<li class=\"\">Revert federation 'can_execute_plan' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7999\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7999</a></li>\n<li class=\"\">Fix stale caching by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7995\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7995</a></li>\n<li class=\"\">Fix count(*) for http connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8001\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8001</a></li>\n<li class=\"\">[CLI] Install specific version by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8006\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8006</a></li>\n<li class=\"\">Fix stale with revalidate request/response by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8005\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8005</a></li>\n<li class=\"\">Fallback <code>RequestContext</code> for cluster queries by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8007\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8007</a></li>\n<li class=\"\">Use use_rustls_tls for Spice Cloud /connect by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8008\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8008</a></li>\n<li class=\"\">Use delta-kernel-rs 0.16x + Parquet reader with object meta API changes by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8011\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8011</a></li>\n<li class=\"\">fix: Update datafusion &amp; arrow-rs with S3 versioning fix by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8012\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8012</a></li>\n<li class=\"\">Add 1.9.0-rc.2 release notes by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7993\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7993</a></li>\n<li class=\"\">Update Datafusion version by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8014\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8014</a></li>\n<li class=\"\">[Acceleration] DuckDB tables mode partitioner + CTE rewrite optimizer by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8013\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8013</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8015\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8015</a></li>\n<li class=\"\">Update acknowledgements by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8016\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8016</a></li>\n<li class=\"\">Upgrade shutdown signal Ordering by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8017\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8017</a></li>\n<li class=\"\">Set max-age: 0 during stale by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8018\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8018</a></li>\n<li class=\"\">Add E2E test release for Helm by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8023\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8023</a></li>\n<li class=\"\">Bump github.com/olekukonko/tablewriter from 0.0.5 to 1.1.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7989\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7989</a></li>\n<li class=\"\">Bump schemars from 0.9.0 to 1.0.4 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7877\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7877</a></li>\n<li class=\"\">Update <code>generate_changelog</code> script by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8028\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8028</a></li>\n<li class=\"\">Update QA analytics Release 1.9.0-rc.2 by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8027\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8027</a></li>\n<li class=\"\">[CLI] Improve auto-complete by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8022\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8022</a></li>\n<li class=\"\">Improve verify helm workflow by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8024\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8024</a></li>\n<li class=\"\">Bump azure_core from 0.28.0 to 0.30.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7986\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7986</a></li>\n<li class=\"\">Test operator load test row count validation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8036\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8036</a></li>\n<li class=\"\">fix: Revert HTTP response offloading by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8041\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8041</a></li>\n<li class=\"\">Disable advanced filters pruning for partitioned tables by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8037\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8037</a></li>\n<li class=\"\">fix: Ensure Vortex UncompressedSizeInBytes is calculated by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8044\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8044</a></li>\n<li class=\"\">Add 1.9.0-rc.3 release notes by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8048\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8048</a></li>\n<li class=\"\">fix: Update test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8046\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8046</a></li>\n<li class=\"\">add benchmark spicepods by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8047\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8047</a></li>\n<li class=\"\">DynamoDB TPC-H SF1 Benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8043\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8043</a></li>\n<li class=\"\">Bump github.com/AzureAD/microsoft-authentication-library-for-go from 1.5.0 to 1.6.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7988\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7988</a></li>\n<li class=\"\">Bump golang.org/x/sys from 0.37.0 to 0.38.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7987\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7987</a></li>\n<li class=\"\">v1.9.0-rc.2 README updates by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8035\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8035</a></li>\n<li class=\"\">Bump suppaftp from 5.4.0 to 6.3.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7875\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7875</a></li>\n<li class=\"\">Bump ctor from 0.5.0 to 0.6.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7873\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7873</a></li>\n<li class=\"\">WW README Update by <a href=\"https://github.com/wyattwenzel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@wyattwenzel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8058\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8058</a></li>\n<li class=\"\">Reenable dynamic federation support by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8026\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8026</a></li>\n<li class=\"\">fix: Prevent SortExec from ordering below SchemaCastScanExec by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8061\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8061</a></li>\n<li class=\"\">Skip logging and return OK() on error during shutdown by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8057\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8057</a></li>\n<li class=\"\">Partition pruning with complex expressions by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8040\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8040</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8064\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8064</a></li>\n<li class=\"\">Make DynamoDB snapshots consistent by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8069\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8069</a></li>\n<li class=\"\">Add check for error log by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8070\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8070</a></li>\n<li class=\"\">Fix tracing of 's3_vector_query_and_get' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8065\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8065</a></li>\n<li class=\"\">DuckDB v1.4.2 by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8073\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8073</a></li>\n<li class=\"\">Fix failing OpenAI test by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8076\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8076</a></li>\n<li class=\"\">Enable 'test_recency_scoring' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8068\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8068</a></li>\n<li class=\"\">Test operator: avoid duplicate Flight requests when using --http-clients by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8071\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8071</a></li>\n<li class=\"\">Update load tests to use truth percentile values by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8079\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8079</a></li>\n<li class=\"\">Update DynamoDB to RC by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8060\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8060</a></li>\n<li class=\"\"><code>CachedQueryVector</code> to avoid recomputing embedding vector for spilling/partitioned vector indexes. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8059\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8059</a></li>\n<li class=\"\">Fix DuckDB on_commit sink race by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8081\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8081</a></li>\n<li class=\"\">Add partitioned duckdb by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8083\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8083</a></li>\n<li class=\"\">[CLI] Security and santization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8082\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8082</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8084\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8084</a></li>\n<li class=\"\">Fix partition_by expression by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8087\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8087</a></li>\n<li class=\"\">Data Components security fixes and sanitization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8086\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8086</a></li>\n<li class=\"\">Runtime security and sanitization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8088\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8088</a></li>\n<li class=\"\">Add spicepod-validator tool and fix spicepods by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8089\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8089</a></li>\n<li class=\"\">Skip data fetches for S3 single file refreshes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8072\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8072</a></li>\n<li class=\"\">MCP security and sanitization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8090\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8090</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8099\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8099</a></li>\n<li class=\"\">Update acknowledgements by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8098\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8098</a></li>\n<li class=\"\">Add install-dev target back to Makefile by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8100\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8100</a></li>\n<li class=\"\">fix 'testoperator run search' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8101\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8101</a></li>\n<li class=\"\">Update datafusion-table-providers - fix nullability inferences for MySQL and PostgreSQL, and fix full text search for PostgreSQL by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8092\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8092</a></li>\n<li class=\"\">Remove duplicate install-with-models by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8107\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8107</a></li>\n<li class=\"\">Improve Cayenne partitioning by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8097\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8097</a></li>\n<li class=\"\">Testoperator dispatch: respect <code>verify_results</code> dispatch configuration by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8106\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8106</a></li>\n<li class=\"\">Include 'match' column only if chunk offsets found in seach query 'LogicalPlan' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8102\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8102</a></li>\n<li class=\"\">Fix validation path by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8109\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8109</a></li>\n<li class=\"\">Fix dispatch paths by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8110\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8110</a></li>\n<li class=\"\">Fix dispatch spicepod paths by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8112\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8112</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8113\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8113</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8114\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8114</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8116\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8116</a></li>\n<li class=\"\">Update test Spicepods by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8131\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8131</a></li>\n<li class=\"\">Add validation to reference schema by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8111\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8111</a></li>\n<li class=\"\">Include root error when failing to find latest timestamp in accelerated table by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8132\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8132</a></li>\n<li class=\"\">fix: HTTP Connector validation, query and body by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8115\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8115</a></li>\n<li class=\"\">Update nsql model list by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8141\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8141</a></li>\n<li class=\"\">Update DynamoDB Benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8135\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8135</a></li>\n<li class=\"\">Fix Dremio E2E test by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8139\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8139</a></li>\n<li class=\"\">fix: Update MongoDB benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8143\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8143</a></li>\n<li class=\"\">fix: Update DynamoDB benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8142\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8142</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8145\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8145</a></li>\n<li class=\"\">fix: Update iceberg[catalog] benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8144\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8144</a></li>\n<li class=\"\">Improve HTTP Connector UX by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8146\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8146</a></li>\n<li class=\"\">QueryOverrides for DynamoDB benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8151\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8151</a></li>\n<li class=\"\">test-framework: add row count validation skipping with TPC-DS defaults by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8149\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8149</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8148\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8148</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8154\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8154</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8155\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8155</a></li>\n<li class=\"\">fix: Update test snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8160\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8160</a></li>\n<li class=\"\">Suppress <code>delta_kernel::listed_log_files</code> warnings by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8158\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8158</a></li>\n<li class=\"\">Update table providers to fix warning by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8156\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8156</a></li>\n<li class=\"\">Suppress MCP limit log by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8159\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8159</a></li>\n<li class=\"\">Remove incorrect tool name validation by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8161\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8161</a></li>\n<li class=\"\">Disable results validation for federated/glue[csv].yaml by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8163\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8163</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8164\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8164</a></li>\n<li class=\"\">Fix dynamodb overrides by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8165\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8165</a></li>\n<li class=\"\">Fix dynamo db overrides again by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8166\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8166</a></li>\n<li class=\"\">few more dynamodb overrides by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8167\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8167</a></li>\n<li class=\"\">Add stub release notes for v1.9.0-rc.4 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8168\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8168</a></li>\n<li class=\"\">Add v1.9.0-rc.4 release notes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8169\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8169</a></li>\n<li class=\"\">fix: Cayenne concurrent table creation by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8176\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8176</a></li>\n<li class=\"\">fix: Avoid pruning bucket partitions for != and NOT IN operators by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8177\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8177</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.9.0",
            "title": "Spice v1.9.0 (Nov 19, 2025)",
            "summary": "Announcing the release of Spice v1.9.0-stable!",
            "date_modified": "2025-11-19T00:00:00.000Z",
            "author": {
                "name": "Phillip LeBlanc",
                "url": "https://x.com/leblancphill"
            },
            "tags": [
                "release",
                "cayenne",
                "acceleration",
                "distributed-query",
                "ballista",
                "datafusion",
                "dynamodb",
                "duckdb",
                "Full-Text Search",
                "vector-search",
                "hybrid-search",
                "data-connector",
                "performance",
                "sql",
                "vortex"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.9.0-rc.4",
            "content_html": "<p>Announcing the release of Spice v1.9.0-rc.4! <!-- -->🌶</p>\n<p>This release candidate brings <strong>DuckDB v1.4.2</strong>, <strong>Cayenne partitioning improvements</strong>, and comprehensive <strong>security hardening</strong> across the CLI, data connectors, runtime, and MCP. v1.9.0-rc.4 also includes <strong>MySQL and PostgreSQL</strong> connector improvements with fixed nullability inferences and full-text search support, <strong>DynamoDB consistency</strong> improvements, <strong>HTTP connector</strong> validation and UX enhancements, and numerous reliability and performance optimizations. Significant improvements were also made to test and automation infrastructure to ensure high quality releases.</p>\n<p>v1.9.0 introduces <strong>Spice Cayenne</strong>, a new high-performance data accelerator built on the <strong>Vortex</strong> columnar format that delivers better than DuckDB performance without single-file scaling limitations, and a preview of <strong>Multi-Node Distributed Query</strong> based on Apache Ballista. v1.9.0 also upgrades to DataFusion v50 for even higher query performance, expands search capabilities with full-text search on views and multi-column embeddings, and delivers many additional features and improvements.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v190\">What's New in v1.9.0<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#whats-new-in-v190\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.9.0\" title=\"Direct link to What's New in v1.9.0\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cayenne-data-accelerator-beta\">Cayenne Data Accelerator (Beta)<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#cayenne-data-accelerator-beta\" class=\"hash-link\" aria-label=\"Direct link to Cayenne Data Accelerator (Beta)\" title=\"Direct link to Cayenne Data Accelerator (Beta)\" translate=\"no\">​</a></h3>\n<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href=\"https://spiceai.org/docs/features/data-acceleration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href=\"https://github.com/vortex-data/vortex\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vortex columnar format</a>, a Linux Foundation project. Cayenne delivers query and ingestion performance better than DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>\n<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing data in Vortex's compressed columnar format. This architecture provides:</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>\n<li class=\"\"><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>\n<li class=\"\"><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>\n<li class=\"\"><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>\n<li class=\"\"><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>\n<li class=\"\"><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> accelerated_data_30d</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> append</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> INTERVAL '30 days'</span><br></span></code></pre></div></div>\n<p>Note, the Cayenne Data Accelerator is in <a href=\"https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/beta.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Beta</a> with limitations.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Documentation</a>, the <a href=\"https://github.com/vortex-data/vortex\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vortex project</a>, and the <a href=\"https://duckdb.org/2025/05/27/ducklake\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DuckLake announcement</a> that partly inspired this design.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"multi-node-distributed-query-preview\">Multi-Node Distributed Query (Preview)<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#multi-node-distributed-query-preview\" class=\"hash-link\" aria-label=\"Direct link to Multi-Node Distributed Query (Preview)\" title=\"Direct link to Multi-Node Distributed Query (Preview)\" translate=\"no\">​</a></h3>\n<p><strong>Apache Ballista Integration</strong>: Spice now supports distributed query execution based on <a href=\"https://github.com/apache/datafusion-ballista\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache Ballista</a>, enabling distributed queries across multiple executor nodes for improved performance on large datasets. This feature is in <strong>preview</strong> in v1.9.0-rc.3.</p>\n<p><strong>Architecture</strong>:</p>\n<p>A distributed Spice cluster consists of:</p>\n<ul>\n<li class=\"\"><strong>Scheduler</strong>: Responsible for distributed query planning and work queue management for the executor fleet</li>\n<li class=\"\"><strong>Executors</strong>: One or more nodes responsible for running physical query plans</li>\n</ul>\n<p><strong>Getting Started</strong>:</p>\n<p>Start a scheduler instance using an existing Spicepod. The scheduler is the only spiced instance that needs to be configured:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start scheduler (note the flight bind address override if you want it reachable outside localhost)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced --cluster-mode scheduler </span><span class=\"token parameter variable\" style=\"color:hsl(221, 87%, 60%)\">--flight</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">0.0</span><span class=\"token plain\">.0.0:50051</span><br></span></code></pre></div></div>\n<p>Start one or more executors configured with the scheduler's flight URI:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start executor (automatically selects a free port if 50051 is taken)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced --cluster-mode executor --scheduler-url spiced://localhost:50051</span><br></span></code></pre></div></div>\n<p><strong>Query Execution</strong>:</p>\n<p>Queries run through the scheduler will now show a <code>distributed_plan</code> in <code>EXPLAIN</code> output, demonstrating how the query is distributed across executor nodes:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">EXPLAIN</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">count</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">id</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> my_dataset</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Current Limitations</strong>:</p>\n<ul>\n<li class=\"\">Accelerated datasets are currently <strong>not supported</strong>. This feature is designed for querying partitioned data lake formats (Parquet, Delta Lake, Iceberg, etc.)</li>\n<li class=\"\">The feature is in <strong>preview</strong> and may have stability or performance limitations</li>\n<li class=\"\">Specific acceleration support is planned for future releases</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v50-upgrade\">DataFusion v50 Upgrade<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#datafusion-v50-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v50 Upgrade\" title=\"Direct link to DataFusion v50 Upgrade\" translate=\"no\">​</a></h3>\n<p>Spice.ai is built on the <a href=\"https://datafusion.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion</a> query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>\n<p><strong>Performance Improvements 🚀</strong>:</p>\n<ul>\n<li class=\"\">\n<p><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</p>\n</li>\n<li class=\"\">\n<p><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</p>\n</li>\n</ul>\n<p><strong>Apache Spark Compatible Functions</strong>: Added support for Spark-compatible functions including <code>array</code>, <code>bit_get/bit_count</code>, <code>bitmap_count</code>, <code>crc32/sha1</code>, <code>date_add/date_sub</code>, <code>if</code>, <code>last_day</code>, <code>like/ilike</code>, <code>luhn_check</code>, <code>mod/pmod</code>, <code>next_day</code>, <code>parse_url</code>, <code>rint</code>, and <code>width_bucket</code>.</p>\n<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>\n<p>See the <a href=\"https://github.com/apache/datafusion/releases\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion 50.0.3 Release</a> for more details.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"duckdb-v142-upgrade-and-accelerator-improvements\">DuckDB v1.4.2 Upgrade and Accelerator Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#duckdb-v142-upgrade-and-accelerator-improvements\" class=\"hash-link\" aria-label=\"Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements\" title=\"Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements\" translate=\"no\">​</a></h3>\n<p><strong>DuckDB v1.4.2</strong>: DuckDB has been upgraded to v1.4.2, which includes several <a href=\"https://duckdb.org/2024/09/16/announcing-duckdb-140#performance-and-optimizations\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">performance optimizations</a>.</p>\n<p><strong>Composite ART Index Support</strong>: DuckDB in Spice now supports composite (multi-column) Adaptive Radix Tree (ART) indexes for accelerated table scans. When queries filter on multiple columns fully covered by a composite index, the optimizer automatically uses index scans instead of full table scans, delivering significant performance improvements for selective queries.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(region, product_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Performance example with composite index on 7.5M rows:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Without index: 0.282s</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- With composite index (region, product_id): 0.037s</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Performance improvement: 7.6x faster with composite index</span><br></span></code></pre></div></div>\n<p><strong>DuckDB Intermediate Materialization</strong>: Queries with indexes now use intermediate materialization (<code>WITH ... AS MATERIALIZED</code>) to leverage faster index scans. Currently supported for non-federated queries (<code>query_federation: disabled</code>) against a single table with indexes only. When predicates cover more columns than the index, the optimizer rewrites queries to first materialize index-filtered results, then apply remaining predicates. This optimization can deliver significant performance improvements for selective queries.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//sales_data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">query_federation</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> disabled </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Required currently for intermediate materialization</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(region, product_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Performance example:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Query with indexed columns (region, product_id) plus additional filter (amount)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> amount </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Optimized execution time: 0.031s (with intermediate materialization)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Standard execution time: 0.108s (without optimization)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Performance improvement: ~3.5x faster</span><br></span></code></pre></div></div>\n<p>The optimizer automatically rewrites the query to:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WITH</span><span class=\"token plain\"> _intermediate_materialize </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">AS</span><span class=\"token plain\"> MATERIALIZED </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> _intermediate_materialize </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> amount </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>\n<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>\n<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my_bucket/large_table/</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> partitioned_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> INTERVAL '7 days'</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"http-data-connector\">HTTP Data Connector<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#http-data-connector\" class=\"hash-link\" aria-label=\"Direct link to HTTP Data Connector\" title=\"Direct link to HTTP Data Connector\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">\n<p><strong>Querying endpoints as tables</strong>: The HTTP/HTTPS Data Connectors now supports querying HTTP endpoints directly as tables in SQL queries with dynamic filters. This feature transforms REST APIs into queryable data sources, making it easy to integrate external service data.</p>\n</li>\n<li class=\"\">\n<p>Query HTTP endpoint that returns structured data (JSON, CSV, etc.) as if it were a database table</p>\n</li>\n<li class=\"\">\n<p>Configurable retry logic, timeouts, and POST request support for more complex API interactions</p>\n</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> json</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">max_retries</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">3</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">client_timeout</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 10s</span><br></span></code></pre></div></div>\n<p>Example SQL query:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> request_path</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> request_query</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> content</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> request_path </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'/search/people'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_query </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'q=michael'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p>If a <code>request_body</code> is supplied it will be posted to the endpoint:</p>\n<p>Example SQL query:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> request_path</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> request_query</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> content</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> request_path </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'/search/people'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_query </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'q=michael'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_body </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'{\"name\": \"michael\"}'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p>HTTP endpoints can be accelerated using <code>refresh_sql</code>:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> full</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">|</span><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        SELECT request_path, request_query, content </span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        FROM tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        WHERE request_path = '/search/people'</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">          AND request_query IN ('q=michael', 'q=luke')</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-data-connector-improvements\">DynamoDB Data Connector Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#dynamodb-data-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Data Connector Improvements\" title=\"Direct link to DynamoDB Data Connector Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> ddb_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">scan_segments</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-versioning-support\">S3 Versioning Support<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#s3-versioning-support\" class=\"hash-link\" aria-label=\"Direct link to S3 Versioning Support\" title=\"Direct link to S3 Versioning Support\" translate=\"no\">​</a></h3>\n<p><strong>Atomic Range Reads for Versioned Files</strong>: Spice now supports <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Versioning</a> for all connectors using object-store (S3, Delta Lake, etc.), ensuring range reads over versioned files are atomically correct. When S3 versioning is enabled, Spice automatically tracks version IDs during file discovery and uses them for all subsequent range reads, preventing inconsistencies from concurrent file modifications.</p>\n<p><strong>Current limitations</strong>:</p>\n<ul>\n<li class=\"\">Multi-file connections (e.g., partitioned datasets) do not yet support version tracking across all files</li>\n<li class=\"\">Version tracking is automatic when S3 versioning is enabled on the bucket</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"search--embeddings-enhancements\">Search &amp; Embeddings Enhancements<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#search--embeddings-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Search &amp; Embeddings Enhancements\" title=\"Direct link to Search &amp; Embeddings Enhancements\" translate=\"no\">​</a></h3>\n<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>\n<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>\n<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">views</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> aggregated_reviews</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> SELECT review_id</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> review_text FROM reviews WHERE rating </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"> 4</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">column</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> review_text</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">model</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> openai</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">text</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">embedding</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">small</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dedicated-query-thread-pool-now-enabled-by-default\">Dedicated Query Thread Pool (Now Enabled by Default)<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#dedicated-query-thread-pool-now-enabled-by-default\" class=\"hash-link\" aria-label=\"Direct link to Dedicated Query Thread Pool (Now Enabled by Default)\" title=\"Direct link to Dedicated Query Thread Pool (Now Enabled by Default)\" translate=\"no\">​</a></h3>\n<p><strong>Dedicated Query Thread Pool</strong>: Query execution and accelerated refreshes now run on their own dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health checks fast and avoiding unnecessary Kubernetes pod restarts under load.</p>\n<p>This feature was opt-in in previous releases and is now <strong>enabled by default</strong>. To disable it and revert to the previous behavior, add the following spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">dedicated_thread_pool</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> none</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"query-performance-optimizations\">Query Performance Optimizations<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#query-performance-optimizations\" class=\"hash-link\" aria-label=\"Direct link to Query Performance Optimizations\" title=\"Direct link to Query Performance Optimizations\" translate=\"no\">​</a></h3>\n<p><strong>Stale-While-Revalidate Cache Control</strong>: Query results now support \"stale-while-revalidate\" cache control, allowing stale cached data to be served immediately while asynchronously refreshing the cache entry in the background. This improves response times for frequently-accessed queries while maintaining data freshness. Requires cache key type to be set to \"sql (raw)\" for proper operation.</p>\n<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>\n<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"query-result-cache-stale-while-revalidate\">Query Result Cache: Stale-While-Revalidate<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#query-result-cache-stale-while-revalidate\" class=\"hash-link\" aria-label=\"Direct link to Query Result Cache: Stale-While-Revalidate\" title=\"Direct link to Query Result Cache: Stale-While-Revalidate\" translate=\"no\">​</a></h3>\n<p><strong>HTTP Cache-Control Support</strong>: The query result cache now supports the <code>stale-while-revalidate</code> Cache-Control directive, enabling faster response times by serving stale cached results immediately while asynchronously refreshing the cache in the background. This feature is particularly useful for applications that can tolerate slightly stale data in exchange for improved performance.</p>\n<p><strong>How it works</strong>:</p>\n<p>When a cache entry is stale but within the <code>stale-while-revalidate</code> window, Spice will:</p>\n<ol>\n<li class=\"\">Immediately return the stale cached result to the client</li>\n<li class=\"\">Asynchronously re-execute the query in the background to refresh the cache</li>\n<li class=\"\">Future requests will use the refreshed data</li>\n</ol>\n<p><strong>Configuration</strong>:</p>\n<p>Use the <code>Cache-Control</code> HTTP header with the <code>stale-while-revalidate</code> directive:</p>\n<div class=\"language-http codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-http codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Cache-Control: max-age=300, stale-while-revalidate=60</span><br></span></code></pre></div></div>\n<p>This configuration caches results for 5 minutes (300 seconds), and allows serving stale results for an additional 60 seconds while refreshing in the background.</p>\n<p><strong>Requirements</strong>:</p>\n<ul>\n<li class=\"\">Must use plan or raw SQL cache keys (set <code>cache_key_type</code> to <code>sql</code> or <code>plan</code> in results_caching configuration)</li>\n<li class=\"\">Background revalidation re-executes queries through the normal query path</li>\n<li class=\"\">Timestamp tracking automatically determines cache entry age for staleness checks</li>\n</ul>\n<p>Example configuration via HTTP header:</p>\n<div class=\"language-http codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-http codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">GET /v1/sql</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Cache-Control: max-age=600, stale-while-revalidate=120</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">X-Cache-Key-Type: sql</span><br></span></code></pre></div></div>\n<p>This feature improves application responsiveness while ensuring data freshness through background updates.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"security--reliability-improvements\">Security &amp; Reliability Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#security--reliability-improvements\" class=\"hash-link\" aria-label=\"Direct link to Security &amp; Reliability Improvements\" title=\"Direct link to Security &amp; Reliability Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>\n<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>\n<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>\n<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"aws-authentication-improvements\">AWS Authentication Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#aws-authentication-improvements\" class=\"hash-link\" aria-label=\"Direct link to AWS Authentication Improvements\" title=\"Direct link to AWS Authentication Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Credential Retry Logic</strong>: AWS SDK credential initialization has been significantly improved with more robust retry logic and better error handling. The system now automatically retries transient credential resolution failures using Fibonacci backoff, allowing Spice to tolerate extended AWS outages (up to ~48 hours) without manual intervention.</p>\n<p><strong>Key features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Automatic retry with backoff</strong>: Implements Fibonacci backoff for transient credential failures (network issues, temporary AWS service disruptions)</li>\n<li class=\"\"><strong>Configurable retry limits</strong>: Supports up to 300 retry attempts with a maximum retry interval of 600 seconds</li>\n<li class=\"\"><strong>Better error handling</strong>: Distinguishes between retryable errors (connector errors) and non-retryable errors (misconfiguration)</li>\n<li class=\"\"><strong>Unauthenticated access support</strong>: Properly supports unauthenticated access to public S3 buckets without requiring credentials</li>\n<li class=\"\"><strong>Improved error messages</strong>: Provides detailed logging with attempt numbers, retry intervals, and error context for better troubleshooting</li>\n</ul>\n<p>The improvements ensure more reliable AWS service integration, particularly in environments with intermittent network connectivity or during AWS service degradations.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"observability--tracing\">Observability &amp; Tracing<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#observability--tracing\" class=\"hash-link\" aria-label=\"Direct link to Observability &amp; Tracing\" title=\"Direct link to Observability &amp; Tracing\" translate=\"no\">​</a></h3>\n<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>\n<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"git-data-connector-alpha\">Git Data Connector (Alpha)<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#git-data-connector-alpha\" class=\"hash-link\" aria-label=\"Direct link to Git Data Connector (Alpha)\" title=\"Direct link to Git Data Connector (Alpha)\" translate=\"no\">​</a></h3>\n<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> git</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//github.com/myorg/myrepo</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> git_metrics</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> csv</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/git\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Git Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-java-sdk-040\">Spice Java SDK 0.4.0<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#spice-java-sdk-040\" class=\"hash-link\" aria-label=\"Direct link to Spice Java SDK 0.4.0\" title=\"Direct link to Spice Java SDK 0.4.0\" translate=\"no\">​</a></h3>\n<p>The Spice Java SDK have been upgraded with support configurable Arrow memory limit: <a href=\"https://github.com/spiceai/spice-java/releases/tag/v0.4.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-java v0.4.0</a></p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">SpiceClient client = SpiceClient.builder()</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    .withArrowMemoryLimitMB(1024) // 1GB limit</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    .build();</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cli-improvements\">CLI Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#cli-improvements\" class=\"hash-link\" aria-label=\"Direct link to CLI Improvements\" title=\"Direct link to CLI Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Install Specific Versions</strong>: The <code>spice install</code> command now supports installing specific versions of the Spice runtime and CLI. This enables easy version management, downgrading, or installation of specific releases for testing or compatibility requirements.</p>\n<p>Usage:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install a specific version</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install v1.8.3</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install a specific version with AI flavor</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install v1.8.3 ai</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install latest version (existing behavior)</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install ai</span><br></span></code></pre></div></div>\n<p>Note: Homebrew installations require manual version management via <code>brew install spiceai/spiceai/spice@&lt;version&gt;</code>.</p>\n<p><strong>Persistent Query History</strong>: The Spice CLI REPL (SQL, search, and chat interfaces) now persists command history to <code>~/.spice/query_history.txt</code>, making your query history available across sessions. The history file is automatically created if it doesn't exist, with graceful fallback if the home directory cannot be determined.</p>\n<p><strong>New REPL Commands</strong>:</p>\n<ul>\n<li class=\"\"><code>.clear</code> - Clear the screen using ANSI escape codes for a clean workspace</li>\n<li class=\"\"><code>.clear history</code> - Clear and persist the query history, removing all stored commands</li>\n</ul>\n<p><strong>Tab Completion</strong>: Tab completion now includes suggestions based on your command history, making it faster to re-run or modify previous queries.</p>\n<p>Example usage:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; SELECT * FROM my_table;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; .clear          # Clears the screen</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; .clear history  # Clears command history</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; # Use arrow keys or tab to access previous commands</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>\n<li class=\"\"><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>\n<li class=\"\"><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>\n<li class=\"\"><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>\n<li class=\"\"><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>\n<li class=\"\"><strong>Validation</strong>: Added timestamp support for partition expressions.</li>\n<li class=\"\"><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>\n<li class=\"\"><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p><strong>New HTTP Data Connector Recipe</strong>: New recipe demonstrating how to query REST APIs and HTTP(s) endpoints. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/http\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP Connector Recipe</a> for details.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.9.0-rc.4, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.9.0-rc.4</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.9.0-rc.4</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dependencies\">Dependencies<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#dependencies\" class=\"hash-link\" aria-label=\"Direct link to Dependencies\" title=\"Direct link to Dependencies\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>DataFusion</strong>: <a href=\"https://datafusion.apache.org/blog/2025/09/29/datafusion-50.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v50</a></li>\n<li class=\"\"><strong>Apache Arrow</strong>: <a href=\"https://github.com/apache/arrow-rs/releases/tag/56.0.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v56</a></li>\n<li class=\"\"><strong>DuckDB</strong>: <a href=\"https://github.com/duckdb/duckdb/releases/tag/v1.4.2\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v1.4.2</a></li>\n<li class=\"\"><strong>Delta Kernel</strong>: <a href=\"https://github.com/delta-io/delta-kernel-rs/blob/main/CHANGELOG.md#v0160-2025-09-19\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v0.16.0</a></li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog-rc4\">Changelog (rc.4)<a href=\"https://spiceai.org/releases/v1.9.0-rc.4#changelog-rc4\" class=\"hash-link\" aria-label=\"Direct link to Changelog (rc.4)\" title=\"Direct link to Changelog (rc.4)\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Upgrade shutdown signal Ordering by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8017\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8017</a></li>\n<li class=\"\">Set max-age: 0 during stale by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8018\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8018</a></li>\n<li class=\"\">Add E2E test release for Helm by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8023\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8023</a></li>\n<li class=\"\">Update <code>generate_changelog</code> script by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8028\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8028</a></li>\n<li class=\"\">[CLI] Improve auto-complete by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8022\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8022</a></li>\n<li class=\"\">Improve verify helm workflow by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8024\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8024</a></li>\n<li class=\"\">fix: Ensure Vortex UncompressedSizeInBytes is calculated by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8044\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8044</a></li>\n<li class=\"\">WW README Update by <a href=\"https://github.com/wyattwenzel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@wyattwenzel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8058\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8058</a></li>\n<li class=\"\">Reenable dynamic federation support by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8026\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8026</a></li>\n<li class=\"\">fix: Prevent SortExec from ordering below SchemaCastScanExec by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8061\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8061</a></li>\n<li class=\"\">Skip logging and return OK() on error during shutdown by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8057\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8057</a></li>\n<li class=\"\">Partition pruning with complex expressions by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8040\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8040</a></li>\n<li class=\"\">Make DynamoDB snapshots consistent by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8069\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8069</a></li>\n<li class=\"\">Add check for error log by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8070\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8070</a></li>\n<li class=\"\">Fix tracing of 's3_vector_query_and_get' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8065\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8065</a></li>\n<li class=\"\">DuckDB v1.4.2 by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8073\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8073</a></li>\n<li class=\"\">Fix failing OpenAI test by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8076\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8076</a></li>\n<li class=\"\">Enable 'test_recency_scoring' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8068\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8068</a></li>\n<li class=\"\">Test operator: avoid duplicate Flight requests when using --http-clients by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8071\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8071</a></li>\n<li class=\"\">Update load tests to use truth percentile values by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8079\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8079</a></li>\n<li class=\"\">Update DynamoDB to RC by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8060\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8060</a></li>\n<li class=\"\"><code>CachedQueryVector</code> to avoid recomputing embedding vector for spilling/partitioned vector indexes.  by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8059\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8059</a></li>\n<li class=\"\">Fix DuckDB on_commit sink race by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8081\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8081</a></li>\n<li class=\"\">Add partitioned duckdb by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8083\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8083</a></li>\n<li class=\"\">[CLI] Security and santization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8082\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8082</a></li>\n<li class=\"\">Fix partition_by expression by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8087\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8087</a></li>\n<li class=\"\">Data Components security fixes and sanitization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8086\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8086</a></li>\n<li class=\"\">Runtime security and sanitization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8088\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8088</a></li>\n<li class=\"\">Add spicepod-validator tool and fix spicepods by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8089\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8089</a></li>\n<li class=\"\">Skip data fetches for S3 single file refreshes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8072\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8072</a></li>\n<li class=\"\">MCP security and sanitization by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8090\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8090</a></li>\n<li class=\"\">Add install-dev target back to Makefile by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8100\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8100</a></li>\n<li class=\"\">fix 'testoperator run search' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8101\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8101</a></li>\n<li class=\"\">Update datafusion-table-providers - fix nullability inferences for MySQL and PostgreSQL, and fix full text search for PostgreSQL by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8092\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8092</a></li>\n<li class=\"\">Remove duplicate install-with-models by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8107\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8107</a></li>\n<li class=\"\">Improve Cayenne partitioning by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8097\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8097</a></li>\n<li class=\"\">Testoperator dispatch: respect <code>verify_results</code> dispatch configuration by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8106\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8106</a></li>\n<li class=\"\">Include 'match' column only if chunk offsets found in seach query 'LogicalPlan' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8102\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8102</a></li>\n<li class=\"\">Fix validation path by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8109\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8109</a></li>\n<li class=\"\">Fix dispatch paths by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8110\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8110</a></li>\n<li class=\"\">Fix dispatch spicepod paths by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8112\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8112</a></li>\n<li class=\"\">Update test Spicepods by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8131\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8131</a></li>\n<li class=\"\">Add validation to reference schema by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8111\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8111</a></li>\n<li class=\"\">Include root error when failing to find latest timestamp in accelerated table by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8132\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8132</a></li>\n<li class=\"\">fix: HTTP Connector validation, query and body by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8115\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8115</a></li>\n<li class=\"\">Update nsql model list by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8141\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8141</a></li>\n<li class=\"\">Update DynamoDB Benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8135\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8135</a></li>\n<li class=\"\">Fix Dremio E2E test by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8139\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8139</a></li>\n<li class=\"\">Improve HTTP Connector UX by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8146\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8146</a></li>\n<li class=\"\">QueryOverrides for DynamoDB benchmarks by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8151\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8151</a></li>\n<li class=\"\">test-framework: add row count validation skipping with TPC-DS defaults by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8149\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8149</a></li>\n<li class=\"\">Suppress <code>delta_kernel::listed_log_files</code> warnings by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8158\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8158</a></li>\n<li class=\"\">Update table providers to fix warning by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8156\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8156</a></li>\n<li class=\"\">Suppress MCP limit log by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8159\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8159</a></li>\n<li class=\"\">Remove incorrect tool name validation by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8161\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8161</a></li>\n<li class=\"\">Disable results validation for federated/glue[csv].yaml by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8163\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8163</a></li>\n<li class=\"\">Fix dynamodb overrides by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8165\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8165</a></li>\n<li class=\"\">Fix dynamo db overrides again by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8166\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8166</a></li>\n<li class=\"\">few more dynamodb overrides by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8167\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8167</a></li>\n<li class=\"\">Add stub release notes for v1.9.0-rc.4 by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8168\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8168</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.9.0-rc.4",
            "title": "Spice v1.9.0-rc.4 (Nov 18, 2025)",
            "summary": "Announcing the release of Spice v1.9.0-rc.4!",
            "date_modified": "2025-11-18T00:00:00.000Z",
            "author": {
                "name": "Phillip LeBlanc",
                "url": "https://x.com/leblancphill"
            },
            "tags": [
                "release",
                "cayenne",
                "acceleration",
                "distributed-query",
                "ballista",
                "datafusion",
                "dynamodb",
                "duckdb",
                "Full-Text Search",
                "vector-search",
                "hybrid-search",
                "data-connector",
                "performance",
                "sql",
                "vortex"
            ]
        },
        {
            "id": "https://spiceai.org/releases/v1.9.0-rc.2",
            "content_html": "<p>Announcing the release of Spice v1.9.0-rc.2! <!-- -->🌶</p>\n<p>This is the second release candidate for v1.9.0, which introduces <strong>Spice Cayenne</strong>, a new high-performance data accelerator built on the <strong>Vortex</strong> columnar format that delivers better than DuckDB performance without single-file scaling limitations and a preview of <strong>Multi-Node Distributed Query</strong> based on Apache Ballista. v1.9.0-rc.2 also upgrades to DataFusion v50 and DuckDB v1.4.1 for even higher query performance, expands search capabilities with full-text search on views and multi-column embeddings, includes significant DynamoDB and DuckDB accelerator improvements, expands the HTTP data connector to support endpoints as tables, and delivers many security and reliability improvements.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-new-in-v190-rc2\">What's New in v1.9.0-rc.2<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#whats-new-in-v190-rc2\" class=\"hash-link\" aria-label=\"Direct link to What's New in v1.9.0-rc.2\" title=\"Direct link to What's New in v1.9.0-rc.2\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cayenne-data-accelerator-beta\">Cayenne Data Accelerator (Beta)<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#cayenne-data-accelerator-beta\" class=\"hash-link\" aria-label=\"Direct link to Cayenne Data Accelerator (Beta)\" title=\"Direct link to Cayenne Data Accelerator (Beta)\" translate=\"no\">​</a></h3>\n<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href=\"https://spiceai.org/docs/features/data-acceleration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Data Accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href=\"https://github.com/vortex-data/vortex\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vortex columnar format</a>, a Linux Foundation project. Cayenne delivers query and ingestion performance better than DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>\n<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing data in Vortex's compressed columnar format. This architecture provides:</p>\n<p><strong>Key Features</strong>:</p>\n<ul>\n<li class=\"\"><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>\n<li class=\"\"><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>\n<li class=\"\"><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>\n<li class=\"\"><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>\n<li class=\"\"><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>\n<li class=\"\"><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> accelerated_data_30d</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> cayenne</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> append</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> INTERVAL '30 days'</span><br></span></code></pre></div></div>\n<p>Note, the Cayenne Data Accelerator is in <a href=\"https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/beta.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Beta</a> with limitations.</p>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-accelerators/cayenne\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Cayenne Documentation</a>, the <a href=\"https://github.com/vortex-data/vortex\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vortex project</a>, and the <a href=\"https://duckdb.org/2025/05/27/ducklake\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DuckLake announcement</a> that partly inspired this design.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"multi-node-distributed-query-preview\">Multi-Node Distributed Query (Preview)<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#multi-node-distributed-query-preview\" class=\"hash-link\" aria-label=\"Direct link to Multi-Node Distributed Query (Preview)\" title=\"Direct link to Multi-Node Distributed Query (Preview)\" translate=\"no\">​</a></h3>\n<p><strong>Apache Ballista Integration</strong>: Spice now supports distributed query execution based on <a href=\"https://github.com/apache/datafusion-ballista\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache Ballista</a>, enabling distributed queries across multiple executor nodes for improved performance on large datasets. This feature is in <strong>preview</strong> in v1.9.0-rc.2.</p>\n<p><strong>Architecture</strong>:</p>\n<p>A distributed Spice cluster consists of:</p>\n<ul>\n<li class=\"\"><strong>Scheduler</strong>: Responsible for distributed query planning and work queue management for the executor fleet</li>\n<li class=\"\"><strong>Executors</strong>: One or more nodes responsible for running physical query plans</li>\n</ul>\n<p><strong>Getting Started</strong>:</p>\n<p>Start a scheduler instance using an existing Spicepod. The scheduler is the only spiced instance that needs to be configured:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start scheduler (note the flight bind address override if you want it reachable outside localhost)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced --cluster-mode scheduler </span><span class=\"token parameter variable\" style=\"color:hsl(221, 87%, 60%)\">--flight</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">0.0</span><span class=\"token plain\">.0.0:50051</span><br></span></code></pre></div></div>\n<p>Start one or more executors configured with the scheduler's flight URI:</p>\n<div class=\"language-bash codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Start executor (automatically selects a free port if 50051 is taken)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spiced --cluster-mode executor --scheduler-url spiced://localhost:50051</span><br></span></code></pre></div></div>\n<p><strong>Query Execution</strong>:</p>\n<p>Queries run through the scheduler will now show a <code>distributed_plan</code> in <code>EXPLAIN</code> output, demonstrating how the query is distributed across executor nodes:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">EXPLAIN</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:hsl(221, 87%, 60%)\">count</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\">id</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> my_dataset</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Current Limitations</strong>:</p>\n<ul>\n<li class=\"\">Accelerated datasets are currently <strong>not supported</strong>. This feature is designed for querying partitioned data lake formats (Parquet, Delta Lake, Iceberg, etc.)</li>\n<li class=\"\">The feature is in <strong>preview</strong> and may have stability or performance limitations</li>\n<li class=\"\">Specific acceleration support is planned for future releases</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"datafusion-v50-upgrade\">DataFusion v50 Upgrade<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#datafusion-v50-upgrade\" class=\"hash-link\" aria-label=\"Direct link to DataFusion v50 Upgrade\" title=\"Direct link to DataFusion v50 Upgrade\" translate=\"no\">​</a></h3>\n<p>Spice.ai is built on the <a href=\"https://datafusion.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion</a> query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>\n<p><strong>Performance Improvements 🚀</strong>:</p>\n<ul>\n<li class=\"\">\n<p><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</p>\n</li>\n<li class=\"\">\n<p><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</p>\n</li>\n</ul>\n<p><strong>Apache Spark Compatible Functions</strong>: Added support for Spark-compatible functions including <code>array</code>, <code>bit_get/bit_count</code>, <code>bitmap_count</code>, <code>crc32/sha1</code>, <code>date_add/date_sub</code>, <code>if</code>, <code>last_day</code>, <code>like/ilike</code>, <code>luhn_check</code>, <code>mod/pmod</code>, <code>next_day</code>, <code>parse_url</code>, <code>rint</code>, and <code>width_bucket</code>.</p>\n<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>\n<p>See the <a href=\"https://github.com/apache/datafusion/releases\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DataFusion 50.0.0 Release</a> for more details.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"duckdb-v141-upgrade-and-accelerator-improvements\">DuckDB v1.4.1 Upgrade and Accelerator Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#duckdb-v141-upgrade-and-accelerator-improvements\" class=\"hash-link\" aria-label=\"Direct link to DuckDB v1.4.1 Upgrade and Accelerator Improvements\" title=\"Direct link to DuckDB v1.4.1 Upgrade and Accelerator Improvements\" translate=\"no\">​</a></h3>\n<p><strong>DuckDB v1.4.1</strong>: DuckDB has been upgraded to v1.4.1, which includes several <a href=\"https://duckdb.org/2024/09/16/announcing-duckdb-140#performance-and-optimizations\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">performance optimizations</a>.</p>\n<p><strong>Composite ART Index Support</strong>: DuckDB in Spice now supports composite (multi-column) Adaptive Radix Tree (ART) indexes for accelerated table scans. When queries filter on multiple columns fully covered by a composite index, the optimizer automatically uses index scans instead of full table scans, delivering significant performance improvements for selective queries.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(region, product_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Performance example with composite index on 7.5M rows:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Without index: 0.282s</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- With composite index (region, product_id): 0.037s</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Performance improvement: 7.6x faster with composite index</span><br></span></code></pre></div></div>\n<p><strong>DuckDB Intermediate Materialization</strong>: Queries with indexes now use intermediate materialization (<code>WITH ... AS MATERIALIZED</code>) to leverage faster index scans. Currently supported for non-federated queries (<code>query_federation: disabled</code>) against a single table with indexes only. When predicates cover more columns than the index, the optimizer rewrites queries to first materialize index-filtered results, then apply remaining predicates. This optimization can deliver significant performance improvements for selective queries.</p>\n<p>Example configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//sales_data.parquet</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">query_federation</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> disabled </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Required currently for intermediate materialization</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">indexes</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">'(region, product_id)'</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> enabled</span><br></span></code></pre></div></div>\n<p>Performance example:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Query with indexed columns (region, product_id) plus additional filter (amount)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> amount </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Optimized execution time: 0.031s (with intermediate materialization)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Standard execution time: 0.108s (without optimization)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\">-- Performance improvement: ~3.5x faster</span><br></span></code></pre></div></div>\n<p>The optimizer automatically rewrites the query to:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WITH</span><span class=\"token plain\"> _intermediate_materialize </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">AS</span><span class=\"token plain\"> MATERIALIZED </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">(</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> sales </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> region </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'US'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">AND</span><span class=\"token plain\"> product_id </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">12345</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">*</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> _intermediate_materialize </span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> amount </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">&gt;</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">1000</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>\n<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>\n<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> s3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//my_bucket/large_table/</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> partitioned_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">engine</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> duckdb</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> file</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">retention</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> INTERVAL '7 days'</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"http-data-connector\">HTTP Data Connector<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#http-data-connector\" class=\"hash-link\" aria-label=\"Direct link to HTTP Data Connector\" title=\"Direct link to HTTP Data Connector\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">\n<p><strong>Querying endpoints as tables</strong>: The HTTP/HTTPS Data Connectors now supports querying HTTP endpoints directly as tables in SQL queries with dynamic filters. This feature transforms REST APIs into queryable data sources, making it easy to integrate external service data.</p>\n</li>\n<li class=\"\">\n<p>Query HTTP endpoint that returns structured data (JSON, CSV, etc.) as if it were a database table</p>\n</li>\n<li class=\"\">\n<p>Configurable retry logic, timeouts, and POST request support for more complex API interactions</p>\n</li>\n</ul>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> json</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">max_retries</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">3</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">client_timeout</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> 10s</span><br></span></code></pre></div></div>\n<p>Example SQL query:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> request_path</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> request_query</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> content</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> request_path </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'/search/people'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_query </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'q=michael'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p>If a <code>request_body</code> is supplied it will be posted to the endpoint:</p>\n<p>Example SQL query:</p>\n<div class=\"language-sql codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-sql codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">SELECT</span><span class=\"token plain\"> request_path</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> request_query</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> content</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">FROM</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">WHERE</span><span class=\"token plain\"> request_path </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'/search/people'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_query </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'q=michael'</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">and</span><span class=\"token plain\"> request_body </span><span class=\"token operator\" style=\"color:hsl(221, 87%, 60%)\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:hsl(119, 34%, 47%)\">'{\"name\": \"michael\"}'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:hsl(301, 63%, 40%)\">LIMIT</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">;</span><br></span></code></pre></div></div>\n<p>HTTP endpoints can be accelerated using <code>refresh_sql</code>:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//api.tvmaze.com</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">acceleration</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">enabled</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:hsl(230, 8%, 24%);font-weight:bold\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_mode</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> full</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">refresh_sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">|</span><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        SELECT request_path, request_query, content </span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        FROM tvmaze</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">        request_path = '/search/people'</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token scalar string\" style=\"color:hsl(119, 34%, 47%)\">          AND request_query IN ('q=michael', 'q=luke')</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dynamodb-data-connector-improvements\">DynamoDB Data Connector Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#dynamodb-data-connector-improvements\" class=\"hash-link\" aria-label=\"Direct link to DynamoDB Data Connector Improvements\" title=\"Direct link to DynamoDB Data Connector Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> dynamodb</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">my_table</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> ddb_data</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">scan_segments</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:hsl(35, 99%, 36%)\">10</span><span class=\"token plain\"> </span><span class=\"token comment\" style=\"color:hsl(230, 4%, 64%)\"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"s3-versioning-support\">S3 Versioning Support<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#s3-versioning-support\" class=\"hash-link\" aria-label=\"Direct link to S3 Versioning Support\" title=\"Direct link to S3 Versioning Support\" translate=\"no\">​</a></h3>\n<p><strong>Atomic Range Reads for Versioned Files</strong>: Spice now supports <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">S3 Versioning</a> for all connectors using object-store (S3, Delta Lake, etc.), ensuring range reads over versioned files are atomically correct. When S3 versioning is enabled, Spice automatically tracks version IDs during file discovery and uses them for all subsequent range reads, preventing inconsistencies from concurrent file modifications.</p>\n<p><strong>Current limitations</strong>:</p>\n<ul>\n<li class=\"\">Multi-file connections (e.g., partitioned datasets) do not yet support version tracking across all files</li>\n<li class=\"\">Version tracking is automatic when S3 versioning is enabled on the bucket</li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"search--embeddings-enhancements\">Search &amp; Embeddings Enhancements<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#search--embeddings-enhancements\" class=\"hash-link\" aria-label=\"Direct link to Search &amp; Embeddings Enhancements\" title=\"Direct link to Search &amp; Embeddings Enhancements\" translate=\"no\">​</a></h3>\n<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>\n<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>\n<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">views</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> aggregated_reviews</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">sql</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> SELECT review_id</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">,</span><span class=\"token plain\"> review_text FROM reviews WHERE rating </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">&gt;</span><span class=\"token plain\"> 4</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">embeddings</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">column</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> review_text</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">model</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> openai</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">text</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">embedding</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">3</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\">small</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dedicated-query-thread-pool-now-enabled-by-default\">Dedicated Query Thread Pool (Now Enabled by Default)<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#dedicated-query-thread-pool-now-enabled-by-default\" class=\"hash-link\" aria-label=\"Direct link to Dedicated Query Thread Pool (Now Enabled by Default)\" title=\"Direct link to Dedicated Query Thread Pool (Now Enabled by Default)\" translate=\"no\">​</a></h3>\n<p><strong>Dedicated Query Thread Pool</strong>: Query execution and accelerated refreshes now run on their own dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health checks fast and avoiding unnecessary Kubernetes pod restarts under load.</p>\n<p>This feature was opt-in in previous releases and is now <strong>enabled by default</strong> in v1.9.0-rc.2. To disable it and revert to the previous behavior, add the following spicepod.yaml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">runtime</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">dedicated_thread_pool</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> none</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"query-performance-optimizations\">Query Performance Optimizations<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#query-performance-optimizations\" class=\"hash-link\" aria-label=\"Direct link to Query Performance Optimizations\" title=\"Direct link to Query Performance Optimizations\" translate=\"no\">​</a></h3>\n<p><strong>Stale-While-Revalidate Cache Control</strong>: Query results now support \"stale-while-revalidate\" cache control, allowing stale cached data to be served immediately while asynchronously refreshing the cache entry in the background. This improves response times for frequently-accessed queries while maintaining data freshness. Requires cache key type to be set to \"sql (raw)\" for proper operation.</p>\n<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>\n<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"query-result-cache-stale-while-revalidate\">Query Result Cache: Stale-While-Revalidate<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#query-result-cache-stale-while-revalidate\" class=\"hash-link\" aria-label=\"Direct link to Query Result Cache: Stale-While-Revalidate\" title=\"Direct link to Query Result Cache: Stale-While-Revalidate\" translate=\"no\">​</a></h3>\n<p><strong>HTTP Cache-Control Support</strong>: The query result cache now supports the <code>stale-while-revalidate</code> Cache-Control directive, enabling faster response times by serving stale cached results immediately while asynchronously refreshing the cache in the background. This feature is particularly useful for applications that can tolerate slightly stale data in exchange for improved performance.</p>\n<p><strong>How it works</strong>:</p>\n<p>When a cache entry is stale but within the <code>stale-while-revalidate</code> window, Spice will:</p>\n<ol>\n<li class=\"\">Immediately return the stale cached result to the client</li>\n<li class=\"\">Asynchronously re-execute the query in the background to refresh the cache</li>\n<li class=\"\">Future requests will use the refreshed data</li>\n</ol>\n<p><strong>Configuration</strong>:</p>\n<p>Use the <code>Cache-Control</code> HTTP header with the <code>stale-while-revalidate</code> directive:</p>\n<div class=\"language-http codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-http codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Cache-Control: max-age=300, stale-while-revalidate=60</span><br></span></code></pre></div></div>\n<p>This configuration caches results for 5 minutes (300 seconds), and allows serving stale results for an additional 60 seconds while refreshing in the background.</p>\n<p><strong>Requirements</strong>:</p>\n<ul>\n<li class=\"\">Must use plan or raw SQL cache keys (set <code>cache_key_type</code> to <code>sql</code> or <code>plan</code> in results_caching configuration)</li>\n<li class=\"\">Background revalidation re-executes queries through the normal query path</li>\n<li class=\"\">Timestamp tracking automatically determines cache entry age for staleness checks</li>\n</ul>\n<p>Example configuration via HTTP header:</p>\n<div class=\"language-http codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-http codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">GET /v1/sql</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">Cache-Control: max-age=600, stale-while-revalidate=120</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">X-Cache-Key-Type: sql</span><br></span></code></pre></div></div>\n<p>This feature improves application responsiveness while ensuring data freshness through background updates.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"security--reliability-improvements\">Security &amp; Reliability Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#security--reliability-improvements\" class=\"hash-link\" aria-label=\"Direct link to Security &amp; Reliability Improvements\" title=\"Direct link to Security &amp; Reliability Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>\n<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>\n<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>\n<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"aws-authentication-improvements\">AWS Authentication Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#aws-authentication-improvements\" class=\"hash-link\" aria-label=\"Direct link to AWS Authentication Improvements\" title=\"Direct link to AWS Authentication Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Improved Credential Retry Logic</strong>: AWS SDK credential initialization has been significantly improved with more robust retry logic and better error handling. The system now automatically retries transient credential resolution failures using Fibonacci backoff, allowing Spice to tolerate extended AWS outages (up to ~48 hours) without manual intervention.</p>\n<p><strong>Key features</strong>:</p>\n<ul>\n<li class=\"\"><strong>Automatic retry with backoff</strong>: Implements Fibonacci backoff for transient credential failures (network issues, temporary AWS service disruptions)</li>\n<li class=\"\"><strong>Configurable retry limits</strong>: Supports up to 300 retry attempts with a maximum retry interval of 600 seconds</li>\n<li class=\"\"><strong>Better error handling</strong>: Distinguishes between retryable errors (connector errors) and non-retryable errors (misconfiguration)</li>\n<li class=\"\"><strong>Unauthenticated access support</strong>: Properly supports unauthenticated access to public S3 buckets without requiring credentials</li>\n<li class=\"\"><strong>Improved error messages</strong>: Provides detailed logging with attempt numbers, retry intervals, and error context for better troubleshooting</li>\n</ul>\n<p>The improvements ensure more reliable AWS service integration, particularly in environments with intermittent network connectivity or during AWS service degradations.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"observability--tracing\">Observability &amp; Tracing<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#observability--tracing\" class=\"hash-link\" aria-label=\"Direct link to Observability &amp; Tracing\" title=\"Direct link to Observability &amp; Tracing\" translate=\"no\">​</a></h3>\n<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>\n<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"git-data-connector-alpha\">Git Data Connector (Alpha)<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#git-data-connector-alpha\" class=\"hash-link\" aria-label=\"Direct link to Git Data Connector (Alpha)\" title=\"Direct link to Git Data Connector (Alpha)\" translate=\"no\">​</a></h3>\n<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>\n<p>Example Spicepod.yml configuration:</p>\n<div class=\"language-yaml codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">datasets</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">from</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> git</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">https</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\">//github.com/myorg/myrepo</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">name</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> git_metrics</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">params</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:hsl(35, 99%, 36%)\">file_format</span><span class=\"token punctuation\" style=\"color:hsl(119, 34%, 47%)\">:</span><span class=\"token plain\"> csv</span><br></span></code></pre></div></div>\n<p>For more details, refer to the <a href=\"https://spiceai.org/docs/components/data-connectors/git\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Git Data Connector Documentation</a>.</p>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"spice-java-sdk-040\">Spice Java SDK 0.4.0<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#spice-java-sdk-040\" class=\"hash-link\" aria-label=\"Direct link to Spice Java SDK 0.4.0\" title=\"Direct link to Spice Java SDK 0.4.0\" translate=\"no\">​</a></h3>\n<p>The Spice Java SDK have been upgraded with support configurable Arrow memory limit: <a href=\"https://github.com/spiceai/spice-java/releases/tag/v0.4.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">spice-java v0.4.0</a></p>\n<div class=\"language-java codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">SpiceClient client = SpiceClient.builder()</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    .withArrowMemoryLimitMB(1024) // 1GB limit</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">    .build();</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cli-improvements\">CLI Improvements<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#cli-improvements\" class=\"hash-link\" aria-label=\"Direct link to CLI Improvements\" title=\"Direct link to CLI Improvements\" translate=\"no\">​</a></h3>\n<p><strong>Install Specific Versions</strong>: The <code>spice install</code> command now supports installing specific versions of the Spice runtime and CLI. This enables easy version management, downgrading, or installation of specific releases for testing or compatibility requirements.</p>\n<p>Usage:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install a specific version</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install v1.8.3</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install a specific version with AI flavor</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install v1.8.3 ai</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\"># Install latest version (existing behavior)</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice install ai</span><br></span></code></pre></div></div>\n<p>Note: Homebrew installations require manual version management via <code>brew install spiceai/spiceai/spice@&lt;version&gt;</code>.</p>\n<p><strong>Persistent Query History</strong>: The Spice CLI REPL (SQL, search, and chat interfaces) now persists command history to <code>~/.spice/query_history.txt</code>, making your query history available across sessions. The history file is automatically created if it doesn't exist, with graceful fallback if the home directory cannot be determined.</p>\n<p><strong>New REPL Commands</strong>:</p>\n<ul>\n<li class=\"\"><code>.clear</code> - Clear the screen using ANSI escape codes for a clean workspace</li>\n<li class=\"\"><code>.clear history</code> - Clear and persist the query history, removing all stored commands</li>\n</ul>\n<p><strong>Tab Completion</strong>: Tab completion now includes suggestions based on your command history, making it faster to re-run or modify previous queries.</p>\n<p>Example usage:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; SELECT * FROM my_table;</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; .clear          # Clears the screen</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; .clear history  # Clears command history</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">sql&gt; # Use arrow keys or tab to access previous commands</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"additional-improvements--bug-fixes\">Additional Improvements &amp; Bug Fixes<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#additional-improvements--bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to Additional Improvements &amp; Bug Fixes\" title=\"Direct link to Additional Improvements &amp; Bug Fixes\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>\n<li class=\"\"><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>\n<li class=\"\"><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>\n<li class=\"\"><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>\n<li class=\"\"><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>\n<li class=\"\"><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>\n<li class=\"\"><strong>Validation</strong>: Added timestamp support for partition expressions.</li>\n<li class=\"\"><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>\n<li class=\"\"><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contributors\">Contributors<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#contributors\" class=\"hash-link\" aria-label=\"Direct link to Contributors\" title=\"Direct link to Contributors\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a></li>\n<li class=\"\"><a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a></li>\n<li class=\"\"><a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a></li>\n<li class=\"\"><a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a></li>\n<li class=\"\"><a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a></li>\n<li class=\"\"><a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a></li>\n<li class=\"\"><a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a></li>\n<li class=\"\"><a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"breaking-changes\">Breaking Changes<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#breaking-changes\" class=\"hash-link\" aria-label=\"Direct link to Breaking Changes\" title=\"Direct link to Breaking Changes\" translate=\"no\">​</a></h2>\n<p>No breaking changes.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"cookbook-updates\">Cookbook Updates<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#cookbook-updates\" class=\"hash-link\" aria-label=\"Direct link to Cookbook Updates\" title=\"Direct link to Cookbook Updates\" translate=\"no\">​</a></h2>\n<p><strong>New HTTP Data Connector Recipe</strong>: New recipe demonstrating how to query REST APIs and HTTP(s) endpoints. See <a href=\"https://github.com/spiceai/cookbook/tree/trunk/http\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HTTP Connector Recipe</a> for details.</p>\n<p>The <a href=\"https://spiceai.org/cookbook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"upgrading\">Upgrading<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#upgrading\" class=\"hash-link\" aria-label=\"Direct link to Upgrading\" title=\"Direct link to Upgrading\" translate=\"no\">​</a></h2>\n<p>To upgrade to v1.9.0-rc.2, use one of the following methods:</p>\n<p><strong>CLI</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">spice upgrade</span><br></span></code></pre></div></div>\n<p><strong>Homebrew</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>\n<p><strong>Docker</strong>:</p>\n<p>Pull the <code>spiceai/spiceai:1.9.0-rc.2</code> image:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">docker pull spiceai/spiceai:1.9.0-rc.2</span><br></span></code></pre></div></div>\n<p>For available tags, see <a href=\"https://hub.docker.com/r/spiceai/spiceai/tags\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">DockerHub</a>.</p>\n<p><strong>Helm</strong>:</p>\n<div class=\"language-console codeBlockContainer_Ckt0 theme-code-block\" style=\"--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)\"><div class=\"codeBlockContent_QJqH\"><pre tabindex=\"0\" class=\"prism-code language-console codeBlock_bY9V thin-scrollbar\" style=\"background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)\"><code class=\"codeBlockLines_e6Vv\"><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:hsl(230, 8%, 24%)\"><span class=\"token plain\">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>\n<p><strong>AWS Marketplace</strong>:</p>\n<p>🎉 Spice is now available in the <a href=\"https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">AWS Marketplace</a>!</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"whats-changed\">What's Changed<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to What's Changed\" title=\"Direct link to What's Changed\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"dependencies\">Dependencies<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#dependencies\" class=\"hash-link\" aria-label=\"Direct link to Dependencies\" title=\"Direct link to Dependencies\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>DataFusion</strong>: <a href=\"https://datafusion.apache.org/blog/2025/09/29/datafusion-50.0.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v50</a></li>\n<li class=\"\"><strong>Apache Arrow</strong>: <a href=\"https://github.com/apache/arrow-rs/releases/tag/56.0.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v56</a></li>\n<li class=\"\"><strong>DuckDB</strong>: <a href=\"https://github.com/duckdb/duckdb/releases/tag/v1.4.1\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v1.4.1</a></li>\n<li class=\"\"><strong>Delta Kernel</strong>: <a href=\"https://github.com/delta-io/delta-kernel-rs/blob/main/CHANGELOG.md#v0160-2025-09-19\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Upgraded to v0.16.0</a></li>\n</ul>\n<h3 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"changelog\">Changelog<a href=\"https://spiceai.org/releases/v1.9.0-rc.2#changelog\" class=\"hash-link\" aria-label=\"Direct link to Changelog\" title=\"Direct link to Changelog\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Fix for search field as metadata for chunked search indexes by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7429\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7429</a></li>\n<li class=\"\">Bump object_store from 0.12.3 to 0.12.4 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7433\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7433</a></li>\n<li class=\"\">Properly respect disabling snapshots by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7431\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7431</a></li>\n<li class=\"\">Revert \"Properly respect disabling snapshots\" by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7439\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7439</a></li>\n<li class=\"\">Revert \"Disable snapshots by default\" by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7438\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7438</a></li>\n<li class=\"\">Add preview warning for write access mode by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7440\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7440</a></li>\n<li class=\"\">fix: regexp_match for DuckDB datasets by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7443\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7443</a></li>\n<li class=\"\">Add feature is currently in preview warning for snapshots by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7442\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7442</a></li>\n<li class=\"\">[Logger] Also emit Datafusion logs by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7441\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7441</a></li>\n<li class=\"\">add missing snapshot by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7446\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7446</a></li>\n<li class=\"\">Fix tracing so that ai_completions are parented under sql_query by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7415\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7415</a></li>\n<li class=\"\">Enable snapshot acceleration by default by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7451\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7451</a></li>\n<li class=\"\">Disable acceleration refresh metrics by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7450\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7450</a></li>\n<li class=\"\">Add v1.8 release notes by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7430\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7430</a></li>\n<li class=\"\">fix: partition name validation by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7452\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7452</a></li>\n<li class=\"\">Fix lint error due to ignore without reasons by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7454\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7454</a></li>\n<li class=\"\">Add models and CUDA support to spiced install script by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7457\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7457</a></li>\n<li class=\"\">Post-release 1.8 updates by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7455\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7455</a></li>\n<li class=\"\">Remove println in datafusion by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7461\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7461</a></li>\n<li class=\"\">Update end_game.md to notify once release is done by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7460\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7460</a></li>\n<li class=\"\">Remove italics from snapshot logging by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7463\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7463</a></li>\n<li class=\"\">Update openapi.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7466\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7466</a></li>\n<li class=\"\">Fix generate spicepod schema by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7464\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7464</a></li>\n<li class=\"\">Fix generate acknowledements by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7465\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7465</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7469\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7469</a></li>\n<li class=\"\">fix: Ensure ListingTable partitions are pruned when filters are not used by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7471\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7471</a></li>\n<li class=\"\">Create <code>runtime-secrets</code> crate by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7474</a></li>\n<li class=\"\">Create <code>runtime-parameters</code> crate by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7475\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7475</a></li>\n<li class=\"\">Don't download the snapshot if the acceleration is present by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7477\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7477</a></li>\n<li class=\"\">Fix casing for keywords and additional columns by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7770\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7770</a></li>\n<li class=\"\">Bump actions/upload-artifact from 4 to 5 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7750\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7750</a></li>\n<li class=\"\">Bump criterion from 0.5.1 to 0.7.0 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7740\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7740</a></li>\n<li class=\"\">Bump rustls-native-certs from 0.8.1 to 0.8.2 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7744\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7744</a></li>\n<li class=\"\">Git Data Connector (Alpha) by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7772\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7772</a></li>\n<li class=\"\">Pepper accelerator delete support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7616\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7616</a></li>\n<li class=\"\">Update Helm chart instructions for Helm in end_game.md by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7776\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7776</a></li>\n<li class=\"\">Turso data accelerator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7472\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7472</a></li>\n<li class=\"\">Apply retention SQL filter to refresh fetch by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7778\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7778</a></li>\n<li class=\"\">Add Parquet buffering option for DuckDB partitioned writes (tables mode) by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7735\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7735</a></li>\n<li class=\"\">fix: EmptyExec when list indexes is empty by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7784\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7784</a></li>\n<li class=\"\">1.8.3 post-release housekeeping by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7783\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7783</a></li>\n<li class=\"\">feat: Upgrade to Datafusion v50 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7777\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7777</a></li>\n<li class=\"\">fix: Replace vortex datafusion with public crate by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7791\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7791</a></li>\n<li class=\"\">Full-text search on views by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7733\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7733</a></li>\n<li class=\"\">Revert \"Apply retention SQL filter to refresh fetch (#7778)\" by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7796\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7796</a></li>\n<li class=\"\">fix: Add ingest duration and acceleration size metrics to testoperator by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7792\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7792</a></li>\n<li class=\"\">Set local timezone to UTC for DuckDB by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7797\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7797</a></li>\n<li class=\"\">add Timestamp support for partition expressions by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7803\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7803</a></li>\n<li class=\"\">Fix trunk lint by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7804\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7804</a></li>\n<li class=\"\">Add missing mongodb params by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7807\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7807</a></li>\n<li class=\"\">Embedding columns on view components by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7795\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7795</a></li>\n<li class=\"\">Add Turso as a Pepper Catalog metastore by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7793\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7793</a></li>\n<li class=\"\">Run retention_sql on refresh commit for DuckDB by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7785\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7785</a></li>\n<li class=\"\">docs: Update datafusion upgrade checklist by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7812\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7812</a></li>\n<li class=\"\">Vector engines on views by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7808\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7808</a></li>\n<li class=\"\">Handle refresh worker panics and add recovery test by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7815\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7815</a></li>\n<li class=\"\">chunk large record batches to control memory usage by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7802\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7802</a></li>\n<li class=\"\">fix: cannot determine vector dimension for partitioned indexes by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7818\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7818</a></li>\n<li class=\"\">Upgrade to Turso v0.3 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7821\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7821</a></li>\n<li class=\"\">fix: Ensure custom *Exec ExecutionPlans push down dynamic filters by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7811\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7811</a></li>\n<li class=\"\">handle casing in RRF by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7825\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7825</a></li>\n<li class=\"\">Enable 'turso' for pepper acceleration by default by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7826\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7826</a></li>\n<li class=\"\">Improved DynamoDB Data Connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7715\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7715</a></li>\n<li class=\"\">Initial support for llama.cpp as LLM inference backend by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7794\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7794</a></li>\n<li class=\"\">Pepper: Implement retention SQL on refresh commit by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7814\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7814</a></li>\n<li class=\"\">Fix Dockerfiles for arm64 by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7834\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7834</a></li>\n<li class=\"\">[DynamoDB] Handle filter edge-cases by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7830\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7830</a></li>\n<li class=\"\">[DynamoDB] Support parallelization for <code>Scan</code> request by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7829\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7829</a></li>\n<li class=\"\">Don't feature gate Pepper by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7832\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7832</a></li>\n<li class=\"\">Fix llama.cpp static link by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7835\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7835</a></li>\n<li class=\"\">fix: docker nightly builds by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7837\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7837</a></li>\n<li class=\"\">Use GitHub-hosted macOS runner only for tag releases by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7836\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7836</a></li>\n<li class=\"\">Fix Bug: DuckDB INTERNAL Error: Failed to load metadata pointer by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7839\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7839</a></li>\n<li class=\"\">Fix docker arm64 build to use aegis in pure-rust mode by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7840\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7840</a></li>\n<li class=\"\">Revert \"Use GitHub-hosted macOS runner only for tag releases\" by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7843\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7843</a></li>\n<li class=\"\">Rename Pepper to Cayenne by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7844\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7844</a></li>\n<li class=\"\">Tighten CLI permissions and install script by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7845\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7845</a></li>\n<li class=\"\">Set mvcc for Cayenne Turso metastore by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7850\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7850</a></li>\n<li class=\"\">Optimize Prepared Statements by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7859\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7859</a></li>\n<li class=\"\">Remove unwrap from ODBC connector, fix secrets, and kuberenetes secre… by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7846\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7846</a></li>\n<li class=\"\">Improve and secure HTTP client usage by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7847\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7847</a></li>\n<li class=\"\">Pin Oracle Instant Client download to a SHA by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7851\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7851</a></li>\n<li class=\"\">Improve experience for missing or invalid Spicepod.yaml by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7849\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7849</a></li>\n<li class=\"\">chore: Fix PR linting by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7865\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7865</a></li>\n<li class=\"\">Revert FlightIPC issues by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7870\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7870</a></li>\n<li class=\"\">Improve error message by adding 'cayenne' to the list of valid accelerator engines by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7882\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7882</a></li>\n<li class=\"\">fix: allow parameter index without dollar signs by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7887\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7887</a></li>\n<li class=\"\">Temporary disable <code>supports_limit_pushdown</code> for <code>SchemaCastScanExec</code> by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7893\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7893</a></li>\n<li class=\"\">Remove '.embeddings[].metadata' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7897\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7897</a></li>\n<li class=\"\">Optimize macOS and Windows builds by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7863\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7863</a></li>\n<li class=\"\">fix: Kafka message delivery failed by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7883\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7883</a></li>\n<li class=\"\">docs: Update component criteria by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7891\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7891</a></li>\n<li class=\"\">fix: Make integration run with no relevant changes, disable makefile targets on PR by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7896\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7896</a></li>\n<li class=\"\">Add Cayenne benchmark and concurrency tests and remove indexes for Turso MVCC by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7879\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7879</a></li>\n<li class=\"\">Revert llama.cpp engine by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7898\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7898</a></li>\n<li class=\"\">Make Cayenne snapshotting more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7899\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7899</a></li>\n<li class=\"\">Release notes v1.9.0-rc1 by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7902\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7902</a></li>\n<li class=\"\">Fix <code>dataset_acceleration_last_refresh_time_ms</code> unit to milliseconds in description by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7901\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7901</a></li>\n<li class=\"\">Fix lint error in record_explain_plan functionality by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7906\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7906</a></li>\n<li class=\"\">Cleanup old snapshots after full refresh by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7908\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7908</a></li>\n<li class=\"\">Cayenne deletion vector caching support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7903\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7903</a></li>\n<li class=\"\">Split filters into partition filters (for pruning) and data filters by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7889\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7889</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7911\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7911</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7912\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7912</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7913\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7913</a></li>\n<li class=\"\">Update spicepod.schema.json by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7916\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7916</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7917\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7917</a></li>\n<li class=\"\">Add Cayenne &amp; Turso accelerators to E2E CI test matrix by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7922\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7922</a></li>\n<li class=\"\">Make preview warnings consistent by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7921\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7921</a></li>\n<li class=\"\">Filter and write optimizations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7918\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7918</a></li>\n<li class=\"\">fix: Set sccache region explicitly by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7928\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7928</a></li>\n<li class=\"\">fix: Enable integration test merge group checks by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7927\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7927</a></li>\n<li class=\"\">Update testoperator release branch from 1.8 to 1.9 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7926\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7926</a></li>\n<li class=\"\">Update DuckDB to 1.4.1 with composite ART scans by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7884\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7884</a></li>\n<li class=\"\">Don't build Windows on trunk pushes by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7931\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7931</a></li>\n<li class=\"\">fix: Use correct minio secret in build binary push by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7934\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7934</a></li>\n<li class=\"\">Update test-framework workers to use dedicated Flight client by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7938\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7938</a></li>\n<li class=\"\">Fix financebench, configure s3vectors for appropriate snapshotting by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7935\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7935</a></li>\n<li class=\"\">Don't try to initialize accelerator if it is disabled by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7932\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7932</a></li>\n<li class=\"\">Add spark UDFs to Spice by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7936\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7936</a></li>\n<li class=\"\">Fix extra async_trait in cayenne metadata catalog by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7942\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7942</a></li>\n<li class=\"\">deps: Upgrade to Rust 1.90 by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7941\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7941</a></li>\n<li class=\"\">Add cayenne accelerator to README.md by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7905\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7905</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7948\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7948</a></li>\n<li class=\"\">Run integration tests with <code>AWS_EC2_METADATA_DISABLED</code> flag by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7952\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7952</a></li>\n<li class=\"\">Only retry credentials on ConnectorError by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7944\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7944</a></li>\n<li class=\"\">fix: Improve join reordering by ensuring <code>JoinSelection</code> is applied by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7828\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7828</a></li>\n<li class=\"\">fix: Remove unused deps, consolidate workspace deps by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7953\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7953</a></li>\n<li class=\"\">bump async-openai commit by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7929\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7929</a></li>\n<li class=\"\">deps: Use vortex fork by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7954\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7954</a></li>\n<li class=\"\">Enable tracing in delta lake integration tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7951\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7951</a></li>\n<li class=\"\">Update datasets in S3 vectors test case by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7956\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7956</a></li>\n<li class=\"\">Add spiced metrics scraping to test operator by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7937\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7937</a></li>\n<li class=\"\">Memoize S3 vectors ListIndex API call with configurable TTL by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7910\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7910</a></li>\n<li class=\"\">Cayenne performance optimizations by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7907\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7907</a></li>\n<li class=\"\">Setup HotFix issue template by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7957\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7957</a></li>\n<li class=\"\">Fix AWS SDK credential cache retry handling by <a href=\"https://github.com/phillipleblanc\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@phillipleblanc</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7943\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7943</a></li>\n<li class=\"\">Infer RRF <code>join_key</code> from <code>TableProvider::constraints</code> and implement <code>SearchQueryProvider::constraints</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7959\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7959</a></li>\n<li class=\"\">[Optimizer]: DuckDB intermediate materialization (non-federated) by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7964\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7964</a></li>\n<li class=\"\">1.7.3 post-release housekeeping by <a href=\"https://github.com/ewgenius\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@ewgenius</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7962\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7962</a></li>\n<li class=\"\">Fix <code>digest_many</code> UDF for <code>ColumnarValue::Array</code>. by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7960\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7960</a></li>\n<li class=\"\">Fix spiced metrics reporting as part of benchmark tests by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7967\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7967</a></li>\n<li class=\"\">Avoid pushing down Spice specific UDFs to accelerators during federation by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7909\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7909</a></li>\n<li class=\"\">CLI file persisted history with <code>.clear</code> and <code>.clear history</code> commands by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7970\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7970</a></li>\n<li class=\"\">ResultsCache Cache-Control <code>stale-while-revalidate</code> by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7963\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7963</a></li>\n<li class=\"\">Use GetVectors API instead of returnData by <a href=\"https://github.com/kczimm\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@kczimm</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7083\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7083</a></li>\n<li class=\"\">Make DuckDB intermediate materialization logic more robust by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7971\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7971</a></li>\n<li class=\"\">[Cayenne] Configurable target Vortex file size by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7972\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7972</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7974\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7974</a></li>\n<li class=\"\">Bump github.com/klauspost/compress from 1.17.11 to 1.18.1 by <a href=\"https://github.com/app/dependabot\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/dependabot</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7872\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7872</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7978\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7978</a></li>\n<li class=\"\">fix: Update benchmark snapshots by <a href=\"https://github.com/app/github-actions\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@app/github-actions</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7982\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7982</a></li>\n<li class=\"\">Run Integration tests on spiceai-dev-runners by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7985\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7985</a></li>\n<li class=\"\">[CLI] Fix cursor issue due to flush by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7981\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7981</a></li>\n<li class=\"\">fix: Support S3 versioning, Vortex dynamic filter pushdown by <a href=\"https://github.com/peasee\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@peasee</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7984\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7984</a></li>\n<li class=\"\">Make <code>cluster</code> a default feature by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7994\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7994</a></li>\n<li class=\"\">Optimize DuckDB Intermediate Index Materialization for No-Index Case by <a href=\"https://github.com/sgrebnov\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@sgrebnov</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7998\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7998</a></li>\n<li class=\"\">HTTP connector with dynamic filter support by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7969\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7969</a></li>\n<li class=\"\">Revert federation 'can_execute_plan' by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7999\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7999</a></li>\n<li class=\"\">Fix stale caching by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/7995\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#7995</a></li>\n<li class=\"\">Fix count(*) for http connector by <a href=\"https://github.com/krinart\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@krinart</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8001\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8001</a></li>\n<li class=\"\">[CLI] Install specific version by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8006\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8006</a></li>\n<li class=\"\">Fix stale with revalidate request/response by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8005\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8005</a></li>\n<li class=\"\">Fallback <code>RequestContext</code> for cluster queries by <a href=\"https://github.com/Jeadie\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@Jeadie</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8007\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8007</a></li>\n<li class=\"\">Use use_rustls_tls for Spice Cloud /connect by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8008\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8008</a></li>\n<li class=\"\">Use delta-kernel-rs 0.16x + Parquet reader with object meta API changes by <a href=\"https://github.com/mach-kernel\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@mach-kernel</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8011\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8011</a></li>\n<li class=\"\">fix: Update datafusion &amp; arrow-rs with S3 versioning fix by <a href=\"https://github.com/lukekim\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@lukekim</a> in <a href=\"https://github.com/spiceai/spiceai/pull/8012\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#8012</a></li>\n</ul>",
            "url": "https://spiceai.org/releases/v1.9.0-rc.2",
            "title": "Spice v1.9.0-rc.2 (Nov 11, 2025)",
            "summary": "Announcing the release of Spice v1.9.0-rc.2!",
            "date_modified": "2025-11-11T00:00:00.000Z",
            "author": {
                "name": "Sergei Grebnov",
                "url": "https://github.com/sgrebnov"
            },
            "tags": [
                "release",
                "cayenne",
                "acceleration",
                "distributed-query",
                "ballista",
                "datafusion",
                "dynamodb",
                "duckdb",
                "Full-Text Search",
                "vector-search",
                "hybrid-search",
                "data-connector",
                "performance",
                "sql",
                "vortex"
            ]
        }
    ]
}