<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Spice.ai OSS Blog</title>
        <link>https://spiceai.org/releases</link>
        <description>Keep up to date with Spice.ai OSS releases by following our feed!</description>
        <lastBuildDate>Tue, 25 Aug 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>Copyright © 2025-2026 Spice AI, Inc.</copyright>
        <item>
            <title><![CDATA[Spice v2.2.0 (Aug 25, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.2.0</link>
            <guid>https://spiceai.org/releases/v2.2.0</guid>
            <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.2.0 is now available! 🚀]]></description>
            <content:encoded><![CDATA[<p>Spice v2.2.0 is now available! 🚀</p>
<p>Spice v2.2.0 focuses on real-time data, performance, and stability. <strong>Cloud Connect</strong> links self-hosted runtimes to <a href="https://spice.ai/" target="_blank" rel="noopener noreferrer" class="">Spice.ai Cloud</a> for management and observability. MySQL datasets and PostgreSQL catalogs can now stream source changes into accelerated datasets. Debezium sources can send CDC events directly without Kafka. Warm in-memory indexes improve vector and full-text search performance.</p>
<p>Highlights in v2.2.0 include:</p>
<ul>
<li class=""><strong><a href="https://spiceai.org/releases/v2.2.0#cloud-connect" class="">Cloud Connect</a></strong> — link self-hosted runtimes for BYOC (Bring Your Own Cloud) to Spice.ai Cloud for management and observability</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.2.0#mysql-change-data-capture" class="">MySQL CDC</a></strong> — MySQL tables now stay in sync in real time using MySQL binlog replication, with no Kafka or Debezium infrastructure and no scheduled refreshes</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.2.0#postgresql-catalog-cdc" class="">PostgreSQL Catalog CDC</a></strong> — accelerate an entire PostgreSQL database in real time with a few lines of configuration and no per-table setup</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.2.0#faster-search-with-warm-in-memory-indexes" class="">Faster Search</a></strong> — vector and full-text search can now serve from an in-memory index by default, with no configuration change</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v220">What's New in v2.2.0<a href="https://spiceai.org/releases/v2.2.0#whats-new-in-v220" class="hash-link" aria-label="Direct link to What's New in v2.2.0" title="Direct link to What's New in v2.2.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cloud-connect">Cloud Connect<a href="https://spiceai.org/releases/v2.2.0#cloud-connect" class="hash-link" aria-label="Direct link to Cloud Connect" title="Direct link to Cloud Connect" translate="no">​</a></h3>
<blockquote>
<p>Spice Cloud Connect is a feature of <a href="https://spice.ai/" target="_blank" rel="noopener noreferrer" class="">Spice.ai Cloud</a>.</p>
</blockquote>
<p><a href="https://spiceai.org/docs/deployment/cloud/cloud-connect" target="_blank" rel="noopener noreferrer" class="">Spice Cloud Connect</a> links self-hosted runtimes for BYOC (Bring Your Own Cloud) to Spice.ai Cloud for management and observability. Run <a href="https://spiceai.org/docs/cli/reference/cloud#link" target="_blank" rel="noopener noreferrer" class=""><code>spice cloud link</code></a> to enroll a standalone runtime.</p>
<p>Try it with the <a href="https://github.com/spiceai/cookbook/tree/trunk/cloud-connect-dev" target="_blank" rel="noopener noreferrer" class="">Cloud Connect on a Development Machine</a> recipe.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="mysql-change-data-capture">MySQL Change Data Capture<a href="https://spiceai.org/releases/v2.2.0#mysql-change-data-capture" class="hash-link" aria-label="Direct link to MySQL Change Data Capture" title="Direct link to MySQL Change Data Capture" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/data-connectors/mysql" target="_blank" rel="noopener noreferrer" class="">MySQL Data Connector</a> now supports <code>refresh_mode: changes</code>. The runtime loads an initial snapshot of the table. It then applies inserts, updates, and deletes from the MySQL <a href="https://dev.mysql.com/doc/refman/8.4/en/binary-log.html" target="_blank" rel="noopener noreferrer" class="">binlog</a> as they commit. The acceleration stays current without scheduled refreshes.</p>
<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"><div 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></div><div 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"> mysql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">orders</span><br></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mysql_host</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> localhost</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mysql_db</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> mydb</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mysql_user</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> replicator</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mysql_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">mysql_pass</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<ul>
<li class=""><strong>Failover-safe GTID positions</strong>: When the source server has <a href="https://dev.mysql.com/doc/refman/8.4/en/replication-gtids.html" target="_blank" rel="noopener noreferrer" class="">GTID</a> enabled, the runtime tracks the replication position as a GTID set. A GTID position stays valid across a replica promotion, so replication survives a failover to a new primary without a rebuild.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="postgresql-catalog-cdc">PostgreSQL Catalog CDC<a href="https://spiceai.org/releases/v2.2.0#postgresql-catalog-cdc" class="hash-link" aria-label="Direct link to PostgreSQL Catalog CDC" title="Direct link to PostgreSQL Catalog CDC" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/catalogs" target="_blank" rel="noopener noreferrer" class="">PostgreSQL Catalog Connector</a> is now Beta with new Catalog CDC acceleration support at Alpha.</p>
<p>A PostgreSQL catalog can now use <code>refresh_mode: changes</code>. One configuration replicates every table that the <code>include</code> patterns match. Queries then read fresh PostgreSQL data with no per-table setup.</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div 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></div><div class="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></div><div class="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></div><div class="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"> mydb</span><br></div><div class="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></div><div class="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">pg_pass</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="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></div><div class="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></div></code></pre></div></div>
<p>Known limitations while catalog CDC acceleration is Alpha: configuration may change; a table dropped and recreated in the source can serve rows captured before it was recreated (<a href="https://github.com/spiceai/spiceai/issues/12110" target="_blank" rel="noopener noreferrer" class="">#12110</a>); and a durable catalog acceleration can come back empty after a restart (<a href="https://github.com/spiceai/spiceai/issues/12729" target="_blank" rel="noopener noreferrer" class="">#12729</a>). Feedback is welcome in <a href="https://github.com/spiceai/spiceai/issues/11850" target="_blank" rel="noopener noreferrer" class="">#11850</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="debezium-cdc-without-kafka">Debezium CDC Without Kafka<a href="https://spiceai.org/releases/v2.2.0#debezium-cdc-without-kafka" class="hash-link" aria-label="Direct link to Debezium CDC Without Kafka" title="Direct link to Debezium CDC Without Kafka" translate="no">​</a></h3>
<p>Any Debezium source plugin can now stream change events directly into Spice, with no Kafka bus in between. A dataset with <code>from: cdc:…</code> accepts change events at <code>POST /v1/datasets/{name}/cdc</code>, in JSON or Avro. The existing Kafka path (<code>from: debezium:…</code>) is unchanged.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="faster-search-with-warm-in-memory-indexes">Faster Search with Warm In-Memory Indexes<a href="https://spiceai.org/releases/v2.2.0#faster-search-with-warm-in-memory-indexes" class="hash-link" aria-label="Direct link to Faster Search with Warm In-Memory Indexes" title="Direct link to Faster Search with Warm In-Memory Indexes" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search</a> adds a warm in-memory tier for vector and full-text indexes. The runtime writes each change to the warm tier and to the durable store together. Queries read the warm tier first and fall back to the durable store. The warm tier covers vector indexes, full-text indexes, <code>.vectors</code> datasets, views, and chunked Elasticsearch vector columns.</p>
<p>More search improvements:</p>
<ul>
<li class=""><code>cosine_distance</code> uses SIMD instructions through the <code>simsimd</code> library.</li>
<li class="">Full-text search applies stemming by default.</li>
<li class="">Full-text search pushes SQL filters down into the tantivy index.</li>
<li class="">A delete now removes the document from full-text and vector indexes. BM25 statistics no longer count superseded documents.</li>
<li class="">The runtime loads local rerankers from <code>text-embeddings-inference</code> models.</li>
<li class="">The runtime validates vector search parameters before it runs the SQL query.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="operations--observability">Operations &amp; Observability<a href="https://spiceai.org/releases/v2.2.0#operations--observability" class="hash-link" aria-label="Direct link to Operations &amp; Observability" title="Direct link to Operations &amp; Observability" translate="no">​</a></h3>
<ul>
<li class=""><strong>Query timeout</strong>: The new <code>runtime.query.timeout</code> setting bounds the duration of every query. An expired query fails with HTTP 504 or gRPC <code>DEADLINE_EXCEEDED</code>.</li>
</ul>
<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"><div 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></div><div class="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</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 30s</span><br></div></code></pre></div></div>
<ul>
<li class=""><strong>CPU sizing for Kubernetes pods without a CPU limit</strong>: A Spice runtime pod with a CPU request and no CPU limit now sizes itself to twice the request instead of every core on the node. Set <code>SPICE_CPU_CORES=all</code> (or <code>runtime.cpu.cores: all</code>) to burst to all cores, for example when a 0.5-core request runs on a 24-core node.</li>
<li class=""><strong>Trace IDs in logs</strong>: Every log record from a query carries the query's trace ID. Filter the logs by one ID to see everything that query did.</li>
<li class=""><strong>Improved dashboards</strong>: The Grafana and Datadog dashboards add new and improved panels, and support multi-replica and Kubernetes deployments.</li>
<li class=""><strong>Helm</strong>: The Helm chart supports a custom Deployment strategy and StatefulSet <code>updateStrategy</code>.</li>
<li class=""><strong>Dataset status</strong>: A non-accelerated dataset now shows the <code>Error</code> state when its source is unavailable, instead of appearing healthy while queries fail.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="other-notable-improvements-and-bug-fixes">Other Notable Improvements and Bug Fixes<a href="https://spiceai.org/releases/v2.2.0#other-notable-improvements-and-bug-fixes" class="hash-link" aria-label="Direct link to Other Notable Improvements and Bug Fixes" title="Direct link to Other Notable Improvements and Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Drasi (Alpha)</strong>: The runtime forwards CDC changes and runtime tables to a <a href="https://drasi.io/" target="_blank" rel="noopener noreferrer" class="">Drasi</a> source.</li>
<li class=""><strong>Microsoft SQL Server</strong>: Kerberos integrated authentication now works on Unix.</li>
<li class=""><strong>HTTP connector</strong>: OAuth2 client-credentials authentication.</li>
<li class=""><strong>Oracle <code>DATE</code></strong>: Values lost their time of day. They now map to a timestamp.</li>
<li class=""><strong>Catalog <code>exclude</code> patterns</strong>: The Glue and Cayenne catalogs ignored <code>exclude</code> patterns. Both pattern lists now apply.</li>
<li class=""><strong>Spice Cayenne schema changes</strong>: Partitioned accelerations could report a source schema change as applied while partitions kept the old schema. This mismatch caused lossy casts or append failures. Cayenne now rejects in-place evolution for partitioned accelerations. The configured schema-change policy then handles the change.</li>
<li class=""><strong>Snowflake <code>NUMBER</code> values</strong>: The connector could remove fractional digits during schema discovery. It treated numeric metadata as absent and defaulted the scale to zero. It now preserves the source precision and scale.</li>
</ul>
<p>See the <a href="https://spiceai.org/releases/v2.2.0#changelog" class="">Changelog</a> for the full list of fixes.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="sdk-updates">SDK Updates<a href="https://spiceai.org/releases/v2.2.0#sdk-updates" class="hash-link" aria-label="Direct link to SDK Updates" title="Direct link to SDK Updates" translate="no">​</a></h3>
<p>Updated SDKs release alongside v2.2.0:</p>
<ul>
<li class=""><a href="https://github.com/spiceai/spice.js/releases/tag/v3.2.0" target="_blank" rel="noopener noreferrer" class="">spice.js v3.2.0</a> — adds query cancellation (<code>listActiveQueries</code>/<code>cancelActiveQuery</code>), mTLS client certificates, HTTP fallback when Flight is unavailable, and typed parameter binding via Flight SQL prepared statements. Also fixes <code>nsql()</code> and <code>search()</code> response handling and named parameters over HTTP.</li>
<li class=""><a href="https://github.com/spiceai/spicepy/releases/tag/v4.0.0" target="_blank" rel="noopener noreferrer" class="">spicepy v4.0.0</a> — adds streaming of large results, natural-language queries (<code>nsql</code>), vector and hybrid search, and query cancellation. Spice.ai Cloud users need this update: the legacy hostnames are retired in favor of region-specific endpoints.</li>
<li class=""><a href="https://github.com/spiceai/spice-rs/releases/tag/v4.0.0" target="_blank" rel="noopener noreferrer" class="">spice-rs v4.0.0</a> — adds search, NSQL, async queries, query cancellation, and mTLS.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependency-updates">Dependency Updates<a href="https://spiceai.org/releases/v2.2.0#dependency-updates" class="hash-link" aria-label="Direct link to Dependency Updates" title="Direct link to Dependency Updates" translate="no">​</a></h3>
<table><thead><tr><th>Dependency / Component</th><th>Version</th></tr></thead><tbody><tr><td><strong>DataFusion</strong></td><td>v54.1</td></tr><tr><td><strong>iceberg-rust</strong></td><td>v0.10.0</td></tr><tr><td><strong>Turso</strong></td><td>v0.7.2</td></tr><tr><td><strong>Rust toolchain</strong></td><td>v1.96.1</td></tr></tbody></table>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="new-contributors">New Contributors<a href="https://spiceai.org/releases/v2.2.0#new-contributors" class="hash-link" aria-label="Direct link to New Contributors" title="Direct link to New Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/boittega" target="_blank" rel="noopener noreferrer" class="">@boittega</a> made their first contribution in <a href="https://github.com/spiceai/spiceai/pull/11509" target="_blank" rel="noopener noreferrer" class="">#11509</a></li>
<li class=""><a href="https://github.com/lesbass" target="_blank" rel="noopener noreferrer" class="">@lesbass</a> made their first contribution in <a href="https://github.com/spiceai/spiceai/pull/12253" target="_blank" rel="noopener noreferrer" class="">#12253</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.2.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a></li>
<li class=""><a href="https://github.com/boittega" target="_blank" rel="noopener noreferrer" class="">@boittega</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lesbass" target="_blank" rel="noopener noreferrer" class="">@lesbass</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/v1gnesh" target="_blank" rel="noopener noreferrer" class="">@v1gnesh</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.2.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<ul>
<li class=""><strong>CPU sizing for Kubernetes pods without a CPU limit</strong>: A Spice runtime pod with a CPU request and no CPU limit now sizes itself to twice the request instead of every core on the node. Set <code>SPICE_CPU_CORES=all</code> (or <code>runtime.cpu.cores: all</code>) to keep the previous behavior, or set <code>runtime.cpu.cores</code> to a specific core count.</li>
<li class=""><strong>Partitioned DuckDB accelerations are removed</strong>: The DuckDB accelerator now rejects <code>partition_by</code>. Use the Cayenne or Arrow accelerator for partitioned datasets.</li>
<li class=""><strong>Adaptive Cayenne tuning requires an explicit opt-in</strong>: An unset <code>cayenne_tuning</code> now resolves to <code>auto</code>. Set <code>cayenne_tuning: adaptive</code> to enable the closed-loop controller.</li>
<li class=""><strong>ONNX ML inference is removed</strong>: The runtime no longer loads ONNX models, and it no longer serves the <code>/v1/predict</code> endpoints. Use an LLM model provider instead.</li>
<li class=""><strong>One process-wide Vortex segment cache</strong>: Cayenne tables now share one segment cache instead of one cache per table. Set <code>cayenne_segment_cache_mb</code> under <code>runtime.params</code> to size it. When unset, the cache takes 1/64 of the memory entitlement, clamped to 256 MiB - 2 GiB.</li>
<li class=""><strong>The Pingora cache engine is now a Spice.ai Enterprise feature</strong>: An OSS build with <code>engine: pingora</code> degrades to the Moka engine and logs the substitution.</li>
<li class=""><strong>Deprecated settings</strong>: <code>pg_replication_temporary_slot</code> is deprecated. <code>cayenne_segment_cache_mb</code> at the table level is deprecated — set it under <code>runtime.params</code> instead. This release renames the MongoDB <code>num_docs_to_infer_schema</code> setting to <code>schema_infer_max_records</code>. The old name still works and warns.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.2.0#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<ul>
<li class="">Added a new recipe for <a href="https://github.com/spiceai/cookbook/tree/trunk/mysql/cdc" target="_blank" rel="noopener noreferrer" class="">MySQL CDC (Binlog Replication)</a>: stream real-time changes from a MySQL table into Spice with <code>refresh_mode: changes</code>.</li>
<li class="">Added a new recipe for <a href="https://github.com/spiceai/cookbook/tree/trunk/mysql/rds-aurora-cdc" target="_blank" rel="noopener noreferrer" class="">Aurora MySQL CDC (Binlog Replication)</a>: the same CDC setup for an AWS-hosted Amazon Aurora MySQL cluster.</li>
<li class="">Added a new recipe for <a href="https://github.com/spiceai/cookbook/tree/trunk/catalogs/postgres-cdc" target="_blank" rel="noopener noreferrer" class="">PostgreSQL Catalog CDC</a>: replicate every table of a PostgreSQL database with one catalog configuration.</li>
<li class="">Added a new recipe for <a href="https://github.com/spiceai/cookbook/tree/trunk/cloud-connect-dev" target="_blank" rel="noopener noreferrer" class="">Cloud Connect on a Development Machine</a>: connect a local Spice instance to Spice.ai Cloud, deploy live changes, and deliver a secret.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 104 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.2.0#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.2.0, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.2.0</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.2.0</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.2.0</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.2.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.2.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">feat(testoperator): --prepare-only / --skip-prepare for htap source reuse by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11486" target="_blank" rel="noopener noreferrer" class="">#11486</a></li>
<li class="">test(cluster): de-flake scheduler_failover (drop unreliable scheduler_node assertion) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11518" target="_blank" rel="noopener noreferrer" class="">#11518</a></li>
<li class="">feat(cayenne): wire orphaned-DV cleanup knob to spicepod params + doc sync by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11523" target="_blank" rel="noopener noreferrer" class="">#11523</a></li>
<li class="">fix(cayenne): warn (not panic) on benign manifest/listing race; re-enable now-passing ignored 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/11511" target="_blank" rel="noopener noreferrer" class="">#11511</a></li>
<li class="">fix(datafusion): accurate projected scan byte size so hash joins build the smaller side by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11503" target="_blank" rel="noopener noreferrer" class="">#11503</a></li>
<li class="">fix(cayenne): seed persisted <code>num_rows</code> for hash-join sizing by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11515" target="_blank" rel="noopener noreferrer" class="">#11515</a></li>
<li class="">fix(cayenne): user-visible DELETE WHERE pk IN (...) reports the real row 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/11514" target="_blank" rel="noopener noreferrer" class="">#11514</a></li>
<li class="">test(cayenne): CDC convergence/resurrection fuzz harness by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11502" target="_blank" rel="noopener noreferrer" class="">#11502</a></li>
<li class="">fix(cayenne): correctness &amp; memory_limit fixes from perf audit (2 P0, 3 P1) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11516" target="_blank" rel="noopener noreferrer" class="">#11516</a></li>
<li class="">perf(cayenne): compaction IO-hygiene follow-ups — input-page evict + O_DIRECT writer + 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/11498" target="_blank" rel="noopener noreferrer" class="">#11498</a></li>
<li class="">Update end_game.md by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11535" target="_blank" rel="noopener noreferrer" class="">#11535</a></li>
<li class="">chore: Vendor ttf-parser, lopdf, pdf-extract by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11521" target="_blank" rel="noopener noreferrer" class="">#11521</a></li>
<li class="">fix: Update tpch benchmark snapshots for federated/mysql[catalog].yaml 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/11531" target="_blank" rel="noopener noreferrer" class="">#11531</a></li>
<li class="">Fix s3 vectors API by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11536" target="_blank" rel="noopener noreferrer" class="">#11536</a></li>
<li class="">Update from spiceai/datafusion#177 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11541" target="_blank" rel="noopener noreferrer" class="">#11541</a></li>
<li class="">perf(cayenne): off-write_lock N&gt;1 mem-tier checkpoint + adaptive query-admission throttle by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11538" target="_blank" rel="noopener noreferrer" class="">#11538</a></li>
<li class="">fix(flightsql): propagate bearer token to per-endpoint clients by <a href="https://github.com/boittega" target="_blank" rel="noopener noreferrer" class="">@boittega</a> in <a href="https://github.com/spiceai/spiceai/pull/11509" target="_blank" rel="noopener noreferrer" class="">#11509</a></li>
<li class="">fix: Placeholder table initialization lock swap by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11540" target="_blank" rel="noopener noreferrer" class="">#11540</a></li>
<li class="">chore(cluster): bump ballista pin for the null-aware anti-join 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/11544" target="_blank" rel="noopener noreferrer" class="">#11544</a></li>
<li class="">fix(runtime-tools): fix memory table identifier validation rejecting valid names by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11546" target="_blank" rel="noopener noreferrer" class="">#11546</a></li>
<li class="">test(chbench): enable 4-way mem-tier PK sharding on SF1000 memory-durability 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/11553" target="_blank" rel="noopener noreferrer" class="">#11553</a></li>
<li class="">fix(reorder): reorder inner-join islands inside EXISTS / NOT EXISTS by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11552" target="_blank" rel="noopener noreferrer" class="">#11552</a></li>
<li class="">feat(cayenne): enable orphaned-DV cleanup by default (per-table threshold 20) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11533" target="_blank" rel="noopener noreferrer" class="">#11533</a></li>
<li class="">fix(postgres): delete old key on CDC primary-key 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/11551" target="_blank" rel="noopener noreferrer" class="">#11551</a></li>
<li class="">Properly exclude vendored crates from <code>make lint-rust-fix</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/11560" target="_blank" rel="noopener noreferrer" class="">#11560</a></li>
<li class="">fix: arrow IndexedMemTable serves stale results after DML/retention/sync (fixes #11262) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11532" target="_blank" rel="noopener noreferrer" class="">#11532</a></li>
<li class="">perf(cayenne): concurrent per-shard mem-tier checkpoint encode (drain parallelism) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11558" target="_blank" rel="noopener noreferrer" class="">#11558</a></li>
<li class="">fix(physical-plan): estimate col=literal selectivity from NDV, not the flat 20% default (Datafusion) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11562" target="_blank" rel="noopener noreferrer" class="">#11562</a></li>
<li class="">fix: Read Postgres DB source error when available by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11566" target="_blank" rel="noopener noreferrer" class="">#11566</a></li>
<li class="">feat(cayenne): cold object-store tier with read-optimized clustering by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11543" target="_blank" rel="noopener noreferrer" class="">#11543</a></li>
<li class="">Generic CDC replication-lag 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/11554" target="_blank" rel="noopener noreferrer" class="">#11554</a></li>
<li class="">fix: ignore transitive quick-xml advisories (RUSTSEC-2026-0194/0195) in cargo-deny by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11571" target="_blank" rel="noopener noreferrer" class="">#11571</a></li>
<li class="">test(chbench): add cold-object-store-tier SF-1000 HTAP run; cap SF-1000 mem-tier at 1 GiB by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11573" target="_blank" rel="noopener noreferrer" class="">#11573</a></li>
<li class="">fix: surface silent Turso read-path conversion failures (fixes #11276) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11570" target="_blank" rel="noopener noreferrer" class="">#11570</a></li>
<li class="">feat(testoperator): emit P99 + Max replication lag and staleness telemetry for HTAP by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11572" target="_blank" rel="noopener noreferrer" class="">#11572</a></li>
<li class="">feat(runtime): cost-based eager aggregation, enabled by default (datafusion spiceai-54) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11446" target="_blank" rel="noopener noreferrer" class="">#11446</a></li>
<li class="">Bump datafusion to include spiceai/datafusion#181 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11563" target="_blank" rel="noopener noreferrer" class="">#11563</a></li>
<li class="">fix(cayenne): drain in-flight maintenance before in-process reopen (mutation_property flake) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11578" target="_blank" rel="noopener noreferrer" class="">#11578</a></li>
<li class="">Unified JSON nesting by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11555" target="_blank" rel="noopener noreferrer" class="">#11555</a></li>
<li class="">feat(testoperator): capture under-load EXPLAIN plans as HTAP artifacts by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11576" target="_blank" rel="noopener noreferrer" class="">#11576</a></li>
<li class="">feat(cayenne): freshness-SLO-driven adaptive mem-tier shrink (+ freshness diagnostics) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11574" target="_blank" rel="noopener noreferrer" class="">#11574</a></li>
<li class="">fix(cayenne): fold un-checkpointed mem-tier keys into the cold keyset rebuild by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11592" target="_blank" rel="noopener noreferrer" class="">#11592</a></li>
<li class="">perf(cayenne): reuse the PK RowConverter across the sharded CDC apply by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11590" target="_blank" rel="noopener noreferrer" class="">#11590</a></li>
<li class="">Add labels to <code>spiceai-dev</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/11591" target="_blank" rel="noopener noreferrer" class="">#11591</a></li>
<li class="">Rename mongo <code>num_docs_to_infer_schema</code> (deprecated) -&gt; <code>schema_infer_max_records</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/11593" target="_blank" rel="noopener noreferrer" class="">#11593</a></li>
<li class="">fix(postgres): don't ACK replication slot past uncommitted envelopes on empty transactions by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11582" target="_blank" rel="noopener noreferrer" class="">#11582</a></li>
<li class="">refactor(connectors): extract abfs, adbc, cosmosdb, ducklake, gcs, git, github, glue, kafka, snowflake-native, spiceai into data-connectors crates by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11407" target="_blank" rel="noopener noreferrer" class="">#11407</a></li>
<li class="">Revert "Generic CDC replication-lag metric" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11600" target="_blank" rel="noopener noreferrer" class="">#11600</a></li>
<li class="">refactor(cayenne): remove orphaned-DV cleanup spicepod param, make it always-on by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11575" target="_blank" rel="noopener noreferrer" class="">#11575</a></li>
<li class="">fix(mongodb): substitute delete when UpdateLookup finds no document by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11583" target="_blank" rel="noopener noreferrer" class="">#11583</a></li>
<li class="">ci(chbench): SF1000 tuned+adaptive every 3h, other configs once daily by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11601" target="_blank" rel="noopener noreferrer" class="">#11601</a></li>
<li class="">feat(cayenne): add integer support to maintained AVG by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11564" target="_blank" rel="noopener noreferrer" class="">#11564</a></li>
<li class="">Refresh spidapter Spice Cloud token from client credentials by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11594" target="_blank" rel="noopener noreferrer" class="">#11594</a></li>
<li class="">fix: cluster filtered COUNT(*) on append-only tables returns unfiltered total (fixes #11599) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11603" target="_blank" rel="noopener noreferrer" class="">#11603</a></li>
<li class="">fix(scylladb): error on lossy CQL decimal conversion instead of silent truncation/NULL (fixes #11267) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11604" target="_blank" rel="noopener noreferrer" class="">#11604</a></li>
<li class="">ci(chbench): drop postgres-arrow and tuned (non-memory) from scheduled HTAP runs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11606" target="_blank" rel="noopener noreferrer" class="">#11606</a></li>
<li class="">ci(chbench): lower tuned SF1000 mem-tier max age to 15s for scheduled HTAP runs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11618" target="_blank" rel="noopener noreferrer" class="">#11618</a></li>
<li class="">fix(cayenne): fold the un-checkpointed mem-tier into the persisted-bloom PK-index rebuild (SF-100 over-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/11609" target="_blank" rel="noopener noreferrer" class="">#11609</a></li>
<li class="">Potential fix for 1 code quality finding by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11614" target="_blank" rel="noopener noreferrer" class="">#11614</a></li>
<li class="">fix(postgres): shared replication slot drops WAL for partitioned tables (fixes #11290) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11607" target="_blank" rel="noopener noreferrer" class="">#11607</a></li>
<li class="">bench(chbench): add 4-slot CDC variant pod for SF-1000 memory (separate from default) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11605" target="_blank" rel="noopener noreferrer" class="">#11605</a></li>
<li class="">fix(cayenne): don't serve drifted memory-CDC row count as Exact to COUNT(*) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11602" target="_blank" rel="noopener noreferrer" class="">#11602</a></li>
<li class="">chore(deps): vendor pgwire-replication 0.3.2 by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11617" target="_blank" rel="noopener noreferrer" class="">#11617</a></li>
<li class="">Add SQL warehouse ID to integration workflow by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11561" target="_blank" rel="noopener noreferrer" class="">#11561</a></li>
<li class="">fix(search): cosine_distance returns NULL not NaN for zero-magnitude vectors by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11621" target="_blank" rel="noopener noreferrer" class="">#11621</a></li>
<li class="">feat(spidapter): tuned + adaptive MongoDB CDC spicepods with scenario selection by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11579" target="_blank" rel="noopener noreferrer" class="">#11579</a></li>
<li class="">Potential fixes for 3 code quality findings by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11613" target="_blank" rel="noopener noreferrer" class="">#11613</a></li>
<li class="">Potential fixes for 2 code quality findings by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11611" target="_blank" rel="noopener noreferrer" class="">#11611</a></li>
<li class="">Potential fixes for 2 code quality findings by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11615" target="_blank" rel="noopener noreferrer" class="">#11615</a></li>
<li class="">Potential fix for 1 code quality finding by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11612" target="_blank" rel="noopener noreferrer" class="">#11612</a></li>
<li class="">feat(cayenne): split mem-tier into ingestion + immutable pieces; advance the replication slot on a cheap periodic seal (default 2s) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11622" target="_blank" rel="noopener noreferrer" class="">#11622</a></li>
<li class="">fix(mcp): encode catalog-qualified tool names without '/' (fixes #10894) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11629" target="_blank" rel="noopener noreferrer" class="">#11629</a></li>
<li class="">fix(refresh): apply refresh_sql override on manual refresh when source unchanged (fixes #11353) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11626" target="_blank" rel="noopener noreferrer" class="">#11626</a></li>
<li class="">fix: report empty accelerated schema instead of misleading missing-column error (fixes #10920) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11625" target="_blank" rel="noopener noreferrer" class="">#11625</a></li>
<li class="">fix(imap): store message date as millisecond Timestamp, not seconds in Date64 (fixes #11547) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11624" target="_blank" rel="noopener noreferrer" class="">#11624</a></li>
<li class="">test(bucket): guard frozen partition-hash output against silent ahash drift (addresses #11277) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11623" target="_blank" rel="noopener noreferrer" class="">#11623</a></li>
<li class="">Bump datafusion (spiceai/datafusion#182) and datafusion-table-providers (#27): fix q16 CollectLeft planning error and SQLite q6 wrong revenue by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11598" target="_blank" rel="noopener noreferrer" class="">#11598</a></li>
<li class="">fix(cluster): prevent executor flaps and distributed query stalls by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11565" target="_blank" rel="noopener noreferrer" class="">#11565</a></li>
<li class="">fix(cli): allow <code>spice trace</code> on dynamic MCP/custom tool_use tasks (fixes #10995) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11630" target="_blank" rel="noopener noreferrer" class="">#11630</a></li>
<li class="">docs: add clang/lld to arm64 Linux build prerequisites (fixes #11120) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11632" target="_blank" rel="noopener noreferrer" class="">#11632</a></li>
<li class="">perf(cayenne): mem-tier visible-batch memo + maintained MIN/MAX IVM by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11631" target="_blank" rel="noopener noreferrer" class="">#11631</a></li>
<li class="">docs: consolidate agent instructions and fix stale references by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11634" target="_blank" rel="noopener noreferrer" class="">#11634</a></li>
<li class="">build(deps): bump the github-actions-dependencies group across 2 directories with 7 updates 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/11627" target="_blank" rel="noopener noreferrer" class="">#11627</a></li>
<li class="">perf(flight): offload query-result IPC encoding off the IO 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/11608" target="_blank" rel="noopener noreferrer" class="">#11608</a></li>
<li class="">feat(runtime): reservation-aware Cayenne CDC query-memory default (75%→70%) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11641" target="_blank" rel="noopener noreferrer" class="">#11641</a></li>
<li class="">Revert "ci(chbench): lower tuned SF1000 mem-tier max age to 15s for scheduled HTAP runs" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11648" target="_blank" rel="noopener noreferrer" class="">#11648</a></li>
<li class="">fix(cayenne): don't bump mem-tier version on seal (QPH regression from #11622) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11649" target="_blank" rel="noopener noreferrer" class="">#11649</a></li>
<li class="">feat(cayenne): vendor versioned row_converter module (byte-compatible with arrow-row 58.3.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/11654" target="_blank" rel="noopener noreferrer" class="">#11654</a></li>
<li class="">fix(flightsql): advertise analyzed query schemas by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11656" target="_blank" rel="noopener noreferrer" class="">#11656</a></li>
<li class="">feat(cayenne): bounded append freshness — segmented stream publishing + publish-triggered executor stats broadcast by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11620" target="_blank" rel="noopener noreferrer" class="">#11620</a></li>
<li class="">fix(postgres): decouple replication keepalive/feedback from apply backpressure by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11653" target="_blank" rel="noopener noreferrer" class="">#11653</a></li>
<li class="">fix: bump DataFusion for eager decimal SUM 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/11657" target="_blank" rel="noopener noreferrer" class="">#11657</a></li>
<li class="">fix(cayenne): stop mem-tier snapshot storms under memory pressure and byte-range splitting of small snapshot scans by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11645" target="_blank" rel="noopener noreferrer" class="">#11645</a></li>
<li class="">fix(ducklake): add opt-in automatic_migration to attach older catalogs (fixes #10899) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11635" target="_blank" rel="noopener noreferrer" class="">#11635</a></li>
<li class="">ci(e2e): tolerate empty-type DuckDB variant of the parquet-rename race by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11636" target="_blank" rel="noopener noreferrer" class="">#11636</a></li>
<li class="">build(deps): bump the aws-sdk group with 3 updates 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/11628" target="_blank" rel="noopener noreferrer" class="">#11628</a></li>
<li class="">ci(chbench): FIFO-queue HTAP runs via concurrency queue: max; simplify dispatcher by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11659" target="_blank" rel="noopener noreferrer" class="">#11659</a></li>
<li class="">fix(bucket): guard against ahash AES-path re-bucketing of partition data (fixes #11277) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11665" target="_blank" rel="noopener noreferrer" class="">#11665</a></li>
<li class="">fix(cayenne): gate metastore reinsert_sequence schema behind a user_version (fixes #11291) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11651" target="_blank" rel="noopener noreferrer" class="">#11651</a></li>
<li class="">fix(cayenne): durable CDC delete keeps the pk IN (...) fast path (fixes #11633) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11642" target="_blank" rel="noopener noreferrer" class="">#11642</a></li>
<li class="">ci(chbench): make scheduled HTAP runs adaptive-only (retire tuned, convert cold tier to adaptive) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11677" target="_blank" rel="noopener noreferrer" class="">#11677</a></li>
<li class="">fix(imap): decode text body into content instead of storing raw MIME (fixes #11549) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11667" target="_blank" rel="noopener noreferrer" class="">#11667</a></li>
<li class="">feat(cayenne): end-to-end integrity checksums for WAL records and Vortex data files (fixes #11639) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11646" target="_blank" rel="noopener noreferrer" class="">#11646</a></li>
<li class="">feat(spidapter): date-prefix per-run MongoDB CDC databases by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11658" target="_blank" rel="noopener noreferrer" class="">#11658</a></li>
<li class="">test(cayenne): fuzz mem-tier CDC + seq-prefix bake; harden durable-path count exactness by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11643" target="_blank" rel="noopener noreferrer" class="">#11643</a></li>
<li class="">deps: bump spiceai/datafusion to pick up ORDER BY alias unparser fix by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11655" target="_blank" rel="noopener noreferrer" class="">#11655</a></li>
<li class="">fix(postgres_replication): size CDC change-batch builders to the transaction row count by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11675" target="_blank" rel="noopener noreferrer" class="">#11675</a></li>
<li class="">Release notes for v2.1.0 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11429" target="_blank" rel="noopener noreferrer" class="">#11429</a></li>
<li class="">perf(pgwire-replication): incremental zero-copy framing (FrameReader) + bounded message 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/11668" target="_blank" rel="noopener noreferrer" class="">#11668</a></li>
<li class="">fix(cdc): memory-mode changes stream no longer fatally stops on a transient deferred-commit queue (fixes #11644) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11678" target="_blank" rel="noopener noreferrer" class="">#11678</a></li>
<li class="">test: update snapshots from job 84685029883 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11569" target="_blank" rel="noopener noreferrer" class="">#11569</a></li>
<li class="">fix: Distinguish no filters vs lit(false) for RefreshSql distributed accelerations by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11596" target="_blank" rel="noopener noreferrer" class="">#11596</a></li>
<li class="">Fix cargo-deny crossbeam-epoch advisory by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11681" target="_blank" rel="noopener noreferrer" class="">#11681</a></li>
<li class="">fix: Update benchmark snapshots for <code>trunk</code> run 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/11666" target="_blank" rel="noopener noreferrer" class="">#11666</a></li>
<li class="">chore(deps): upgrade Vortex to 0.76.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/11682" target="_blank" rel="noopener noreferrer" class="">#11682</a></li>
<li class="">refactor: extract runtime-metrics crate, move ComponentType to runtime-api-types by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11524" target="_blank" rel="noopener noreferrer" class="">#11524</a></li>
<li class="">feat(cloud-connect): standalone instance adoption by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11060" target="_blank" rel="noopener noreferrer" class="">#11060</a></li>
<li class="">docs: keep the feature set constant across a session (incremental-build hygiene) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11679" target="_blank" rel="noopener noreferrer" class="">#11679</a></li>
<li class="">feat(mysql): binlog replication for <code>refresh_mode: changes</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/11672" target="_blank" rel="noopener noreferrer" class="">#11672</a></li>
<li class="">feat(cdc): cap keys per durable delete plan + absorb fall-through metrics (#11673) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11680" target="_blank" rel="noopener noreferrer" class="">#11680</a></li>
<li class="">ci(chbench): run scheduled SF1000-adaptive HTAP bench every 6h instead of 3h by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11698" target="_blank" rel="noopener noreferrer" class="">#11698</a></li>
<li class="">fix: MySQL connector fails to convert unsigned integer types (fixes #8364) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11691" target="_blank" rel="noopener noreferrer" class="">#11691</a></li>
<li class="">observability(cdc): localize CDC back-pressure across the ingest pipeline by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11610" target="_blank" rel="noopener noreferrer" class="">#11610</a></li>
<li class="">fix(cache): cache empty (zero-row) SQL result sets by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11699" target="_blank" rel="noopener noreferrer" class="">#11699</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11706" target="_blank" rel="noopener noreferrer" class="">#11706</a></li>
<li class="">Add support for MysSQL in Ch-Bench by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11700" target="_blank" rel="noopener noreferrer" class="">#11700</a></li>
<li class="">observability(chbench): limit CH-BenCHmark logs to info and above by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11711" target="_blank" rel="noopener noreferrer" class="">#11711</a></li>
<li class="">perf(cdc): cache per-dataset metric labels to avoid per-event string copies by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11712" target="_blank" rel="noopener noreferrer" class="">#11712</a></li>
<li class="">feat(postgres): pgoutput binary-format CDC decoding + zero-copy decoder by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11702" target="_blank" rel="noopener noreferrer" class="">#11702</a></li>
<li class="">Update 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/11715" target="_blank" rel="noopener noreferrer" class="">#11715</a></li>
<li class="">fix(cayenne): zero-row append refresh fails with "No such file or directory" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11710" target="_blank" rel="noopener noreferrer" class="">#11710</a></li>
<li class="">perf(cdc): cut shared-slot Postgres replication pump per-event overhead by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11709" target="_blank" rel="noopener noreferrer" class="">#11709</a></li>
<li class="">fix(spicepod): reject unknown fields on columns[] config (fixes #10972) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11719" target="_blank" rel="noopener noreferrer" class="">#11719</a></li>
<li class="">feat(cayenne): tier-gated O_DIRECT compaction writer (EBS/NAS network storage) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11696" target="_blank" rel="noopener noreferrer" class="">#11696</a></li>
<li class="">fix(cayenne): harden Vortex compaction 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/11692" target="_blank" rel="noopener noreferrer" class="">#11692</a></li>
<li class="">perf(vortex): push boolean NOT filters into the Vortex scan by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11721" target="_blank" rel="noopener noreferrer" class="">#11721</a></li>
<li class="">chore(chbench): cap scheduled HTAP runs at 250K tpmC (rate 9250) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11723" target="_blank" rel="noopener noreferrer" class="">#11723</a></li>
<li class="">MySQL CH-benCHmark HTAP: SF1 + SF1000 adaptive configs by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11722" target="_blank" rel="noopener noreferrer" class="">#11722</a></li>
<li class="">feat(testoperator): TPC-DS SF100 federated cluster-bench spicepod + default spicehq nodegroup by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11716" target="_blank" rel="noopener noreferrer" class="">#11716</a></li>
<li class="">refactor(runtime): move AccelerationSource and Acceleration into runtime-acceleration by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11530" target="_blank" rel="noopener noreferrer" class="">#11530</a></li>
<li class="">remove(ml): delete model_components crate and ONNX/Tract ML inference by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11684" target="_blank" rel="noopener noreferrer" class="">#11684</a></li>
<li class="">ci: dedupe testoperator query_overrides run steps by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11690" target="_blank" rel="noopener noreferrer" class="">#11690</a></li>
<li class="">Update search snapshots by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11714" target="_blank" rel="noopener noreferrer" class="">#11714</a></li>
<li class="">refactor: use inherent <code>is::&lt;T&gt;()</code> on <code>dyn TableProvider</code>/<code>dyn ExecutionPlan</code> for type checks by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11585" target="_blank" rel="noopener noreferrer" class="">#11585</a></li>
<li class="">chore: remove unused BlueOak license allowance by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11762" target="_blank" rel="noopener noreferrer" class="">#11762</a></li>
<li class="">perf(vortex): remove per-file and per-segment allocations on the scan 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/11733" target="_blank" rel="noopener noreferrer" class="">#11733</a></li>
<li class="">fix(ci): use GraphQL API to check isLatest in spiced_docker workflow by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11735" target="_blank" rel="noopener noreferrer" class="">#11735</a></li>
<li class="">fix(release): use release notes heading as GitHub release title by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11744" target="_blank" rel="noopener noreferrer" class="">#11744</a></li>
<li class="">feat(chbench): headline run summary + adaptive slot-topology variants by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11734" target="_blank" rel="noopener noreferrer" class="">#11734</a></li>
<li class="">fix(ci): update e2e CLI tests for Windows-no-runtime and chat error wording by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11717" target="_blank" rel="noopener noreferrer" class="">#11717</a></li>
<li class="">build(rust): upgrade toolchain to 1.96.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/11743" target="_blank" rel="noopener noreferrer" class="">#11743</a></li>
<li class="">fix(deps): enable reqwest "query" feature for isolated crate builds by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11760" target="_blank" rel="noopener noreferrer" class="">#11760</a></li>
<li class="">build: define clippy lints in [workspace.lints], opt in every crate by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11676" target="_blank" rel="noopener noreferrer" class="">#11676</a></li>
<li class="">refactor(runtime): parameterize table-provider unwrapping by inner-fn 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/11759" target="_blank" rel="noopener noreferrer" class="">#11759</a></li>
<li class="">fix(cayenne): retain source deletion index in scan memos to close ABA hazard (fixes #11303) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11739" target="_blank" rel="noopener noreferrer" class="">#11739</a></li>
<li class="">fix(mysql): refuse binlog resume across source layout drift by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11761" target="_blank" rel="noopener noreferrer" class="">#11761</a></li>
<li class="">perf: avoid unnecessary allocations on search hot paths by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11767" target="_blank" rel="noopener noreferrer" class="">#11767</a></li>
<li class="">feat(spidapter): support cluster_name for private nodegroup targeting by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11740" target="_blank" rel="noopener noreferrer" class="">#11740</a></li>
<li class="">feat(cayenne): finalize datalake (cold) tier v1 UX, credentials, and e2e 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/11731" target="_blank" rel="noopener noreferrer" class="">#11731</a></li>
<li class="">perf(vortex): push CAST(CASE ... END) filters into the Vortex scan by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11729" target="_blank" rel="noopener noreferrer" class="">#11729</a></li>
<li class="">docs: lead README with real-time analytics-node + CDC messaging (Spice 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/11774" target="_blank" rel="noopener noreferrer" class="">#11774</a></li>
<li class="">chore(chbench): extend scheduled HTAP runs to 15m by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11773" target="_blank" rel="noopener noreferrer" class="">#11773</a></li>
<li class="">perf(cayenne): lazy NDV — compute on file spill, off the inline hot loop by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11741" target="_blank" rel="noopener noreferrer" class="">#11741</a></li>
<li class="">ci(rust): install 1.96.1 in workflows that pin the toolchain explicitly by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11769" target="_blank" rel="noopener noreferrer" class="">#11769</a></li>
<li class="">perf(cdc): deferred parsing — move Postgres CDC decode + build off the shared pump by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11732" target="_blank" rel="noopener noreferrer" class="">#11732</a></li>
<li class="">docs: correct sort-kernel SIMD note (AVX2, not AVX-512) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11771" target="_blank" rel="noopener noreferrer" class="">#11771</a></li>
<li class="">fix(cayenne): roll cold-tier files at cayenne_cold_target_file_size_mb by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11746" target="_blank" rel="noopener noreferrer" class="">#11746</a></li>
<li class="">docs(cayenne): move the Cayenne technical reference into the repo by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11775" target="_blank" rel="noopener noreferrer" class="">#11775</a></li>
<li class="">perf(cayenne): unify upsert PK-key hashing on prehashed XXH3-128 digests by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11736" target="_blank" rel="noopener noreferrer" class="">#11736</a></li>
<li class="">perf: avoid unnecessary allocations on query hot paths by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11768" target="_blank" rel="noopener noreferrer" class="">#11768</a></li>
<li class="">Extended schema inference for mysql by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11742" target="_blank" rel="noopener noreferrer" class="">#11742</a></li>
<li class="">chore(hash-index): add SBBF probe/insert baseline 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/11770" target="_blank" rel="noopener noreferrer" class="">#11770</a></li>
<li class="">feat(cayenne): incremental datalake promotion, per-file PK blooms, physical GC by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11745" target="_blank" rel="noopener noreferrer" class="">#11745</a></li>
<li class="">test(cayenne): limit property-test concurrency by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11784" target="_blank" rel="noopener noreferrer" class="">#11784</a></li>
<li class="">perf(cdc): lock-free per-member ack slots + coalescing for shared Postgres replication by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11779" target="_blank" rel="noopener noreferrer" class="">#11779</a></li>
<li class="">perf(chbench): speed up MySQL and Postgres seed loading by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11782" target="_blank" rel="noopener noreferrer" class="">#11782</a></li>
<li class="">fix(ci): download MinIO client from public-data mirror by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11790" target="_blank" rel="noopener noreferrer" class="">#11790</a></li>
<li class="">ci: developer sign-off attestation gating the merge queue by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11776" target="_blank" rel="noopener noreferrer" class="">#11776</a></li>
<li class="">fix(tests): synchronize chat expect prompts correctly by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11802" target="_blank" rel="noopener noreferrer" class="">#11802</a></li>
<li class="">perf(chbench): default adaptive pod to 4-slot grouping + deep prefetch by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11799" target="_blank" rel="noopener noreferrer" class="">#11799</a></li>
<li class="">refactor(cli): replace open crate with in-tree system-open by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11791" target="_blank" rel="noopener noreferrer" class="">#11791</a></li>
<li class="">refactor(runtime): drop direct rustls-pemfile dependency by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11792" target="_blank" rel="noopener noreferrer" class="">#11792</a></li>
<li class="">Cache ListingTable file statistics to avoid per-query footer re-parse by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11793" target="_blank" rel="noopener noreferrer" class="">#11793</a></li>
<li class="">ci: inherit sign-off across clean base merges by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11804" target="_blank" rel="noopener noreferrer" class="">#11804</a></li>
<li class="">perf(cayenne): hash PK once and skip OwnedRow clone on present path by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11805" target="_blank" rel="noopener noreferrer" class="">#11805</a></li>
<li class="">fix(postgres catalog): register partitioned parent, not child partitions by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11798" target="_blank" rel="noopener noreferrer" class="">#11798</a></li>
<li class="">fix(postgres catalog): quote foreign-key target identifiers by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11796" target="_blank" rel="noopener noreferrer" class="">#11796</a></li>
<li class="">refactor(cayenne): rename remaining cold_* params to cayenne_datalake_* by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11795" target="_blank" rel="noopener noreferrer" class="">#11795</a></li>
<li class="">build: add release-profiling Cargo profile for CPU profiling by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11807" target="_blank" rel="noopener noreferrer" class="">#11807</a></li>
<li class="">fix(ci): make CH-benCH template restore robust to leftover replication slots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11811" target="_blank" rel="noopener noreferrer" class="">#11811</a></li>
<li class="">perf(cayenne): remove eager-NDV escape hatch, speed up per-value NDV hashing by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11806" target="_blank" rel="noopener noreferrer" class="">#11806</a></li>
<li class="">Auto-refresh the Attestation check after signoff by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11815" target="_blank" rel="noopener noreferrer" class="">#11815</a></li>
<li class="">refactor(duckdb): remove partitioned DuckDB accelerator modes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11808" target="_blank" rel="noopener noreferrer" class="">#11808</a></li>
<li class="">feat(testoperator): add option to skip the HTAP analytic gate by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11810" target="_blank" rel="noopener noreferrer" class="">#11810</a></li>
<li class="">fix: prevent executor S3 region poisoning before object-store bind by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11766" target="_blank" rel="noopener noreferrer" class="">#11766</a></li>
<li class="">perf(cayenne): reuse per-batch scratch allocations in KeyBasedDeletionFilterStream by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11817" target="_blank" rel="noopener noreferrer" class="">#11817</a></li>
<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/11816" target="_blank" rel="noopener noreferrer" class="">#11816</a></li>
<li class="">build(deps): bump the github-actions-dependencies group across 2 directories with 5 updates 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/11819" target="_blank" rel="noopener noreferrer" class="">#11819</a></li>
<li class="">fix(task_history): capture ExplainAnalyze metrics from the executed plan by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11794" target="_blank" rel="noopener noreferrer" class="">#11794</a></li>
<li class="">feat: generic spiced env-var passthrough for HTAP testoperator runs by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11824" target="_blank" rel="noopener noreferrer" class="">#11824</a></li>
<li class="">feat(cayenne): datalake tier hardening + row-capped PK-bloom-backed promotion by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11812" target="_blank" rel="noopener noreferrer" class="">#11812</a></li>
<li class="">chore: release finalization for v2.2.0 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11738" target="_blank" rel="noopener noreferrer" class="">#11738</a></li>
<li class="">feat(cayenne): add memory mode (mode: memory) — fully in-RAM 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/11720" target="_blank" rel="noopener noreferrer" class="">#11720</a></li>
<li class="">Fix secrets in <code>.github/workflows/integration_models.yml</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/11781" target="_blank" rel="noopener noreferrer" class="">#11781</a></li>
<li class="">feat(runtime): add <code>runtime.query.timeout</code> parameter by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11822" target="_blank" rel="noopener noreferrer" class="">#11822</a></li>
<li class="">feat(cloud-connect): align proto to canonical, fix enrollment ordering, add TLS e2e by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11829" target="_blank" rel="noopener noreferrer" class="">#11829</a></li>
<li class="">docs(criteria): mark PostgreSQL Catalog Connector as Alpha by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11785" target="_blank" rel="noopener noreferrer" class="">#11785</a></li>
<li class="">test(cayenne): add regression tests for the mid-pass overwrite guard by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11844" target="_blank" rel="noopener noreferrer" class="">#11844</a></li>
<li class="">perf(cayenne): light delta encoding + higher CDC coalescing defaults by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11826" target="_blank" rel="noopener noreferrer" class="">#11826</a></li>
<li class="">ci: run Cayenne doc PDF build only on trunk merges by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11860" target="_blank" rel="noopener noreferrer" class="">#11860</a></li>
<li class="">fix(cayenne): drain staged Stage-B publishes before cold promotion; add cold-tier fuzz coverage by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11847" target="_blank" rel="noopener noreferrer" class="">#11847</a></li>
<li class="">feat(cayenne): atomic cross-partition append + delete/on-conflict atomicity by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11803" target="_blank" rel="noopener noreferrer" class="">#11803</a></li>
<li class="">feat(cayenne): min/max maintained aggregates + N&gt;1 CDC retract by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11862" target="_blank" rel="noopener noreferrer" class="">#11862</a></li>
<li class="">perf(chbench): CSV-based seed loading for MySQL and Postgres by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11843" target="_blank" rel="noopener noreferrer" class="">#11843</a></li>
<li class="">fix(tests): re-enable <code>prop_concurrent_cold_sqlite</code> cayenne cold-tier fuzz 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/11871" target="_blank" rel="noopener noreferrer" class="">#11871</a></li>
<li class="">fix(deps): replace yanked spin releases by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11878" target="_blank" rel="noopener noreferrer" class="">#11878</a></li>
<li class="">fix(cayenne): correct stale mem_checkpoint_lock comment by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11872" target="_blank" rel="noopener noreferrer" class="">#11872</a></li>
<li class="">Add run links to <code>testoperator_dispatch.yml</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/11747" target="_blank" rel="noopener noreferrer" class="">#11747</a></li>
<li class="">Cayenne serializable transactions: gated writes, per-key OCC, multi-table, FlightSQL, durable write-back by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11870" target="_blank" rel="noopener noreferrer" class="">#11870</a></li>
<li class="">fix(cayenne): partitioned datasets deadlock against the global encode budget and never become ready by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11825" target="_blank" rel="noopener noreferrer" class="">#11825</a></li>
<li class="">test(runtime): re-runnable turso file cleanup + bump turso to 0.7.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/11783" target="_blank" rel="noopener noreferrer" class="">#11783</a></li>
<li class="">Use liteparse for PDF document parsing by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11522" target="_blank" rel="noopener noreferrer" class="">#11522</a></li>
<li class="">ci: add remote signoff workflow by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11864" target="_blank" rel="noopener noreferrer" class="">#11864</a></li>
<li class="">fix(cli): populate org in <code>spice cloud apps --output json</code> (fixes #11041) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11867" target="_blank" rel="noopener noreferrer" class="">#11867</a></li>
<li class="">fix(embeddings): restore params broken by #10853 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11788" target="_blank" rel="noopener noreferrer" class="">#11788</a></li>
<li class="">Move cargo advisory checks to scheduled workflow by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11879" target="_blank" rel="noopener noreferrer" class="">#11879</a></li>
<li class="">perf(cayenne): bound cold-promotion Z-order sort into streaming byte-capped runs by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11890" target="_blank" rel="noopener noreferrer" class="">#11890</a></li>
<li class="">fix(cayenne): write-back transaction atomicity — stage (not publish) and read mem-tier rows by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11889" target="_blank" rel="noopener noreferrer" class="">#11889</a></li>
<li class="">fix(runtime-table-partition): restore sound modulo inequality partition pruning by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11891" target="_blank" rel="noopener noreferrer" class="">#11891</a></li>
<li class="">Replace dotenvy with in-repo dotenv 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/11894" target="_blank" rel="noopener noreferrer" class="">#11894</a></li>
<li class="">Remove unnecessary allocations from results-cache and hot conversion paths by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11895" target="_blank" rel="noopener noreferrer" class="">#11895</a></li>
<li class="">Increase ready_wait timeout for chbench sf1000 cold-tier configs by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11900" target="_blank" rel="noopener noreferrer" class="">#11900</a></li>
<li class="">fix(mysql): retry binlog checkpoint upsert on transient accelerator write lock by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11876" target="_blank" rel="noopener noreferrer" class="">#11876</a></li>
<li class="">fix(cayenne): gate freshness mem-tier shrink on apply backlog by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11893" target="_blank" rel="noopener noreferrer" class="">#11893</a></li>
<li class="">fix(postgres catalog): honor unsupported_type_action for catalog-discovered tables by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11875" target="_blank" rel="noopener noreferrer" class="">#11875</a></li>
<li class="">fix(postgres): make TPC-H/TPC-DS benchmark CI actually run at SF1/SF10/SF100 by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11883" target="_blank" rel="noopener noreferrer" class="">#11883</a></li>
<li class="">feat(search): writethrough compound <code>SearchIndex</code>/<code>VectorIndex</code> with optional fallback by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11892" target="_blank" rel="noopener noreferrer" class="">#11892</a></li>
<li class="">Revert "perf(cayenne): light delta encoding + higher CDC coalescing defaults" by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11910" target="_blank" rel="noopener noreferrer" class="">#11910</a></li>
<li class="">perf(vss): SIMD-accelerate cosine_distance via simsimd by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11748" target="_blank" rel="noopener noreferrer" class="">#11748</a></li>
<li class="">Add <code>run-name</code> to signoff.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/11912" target="_blank" rel="noopener noreferrer" class="">#11912</a></li>
<li class="">fix(cayenne): serialize cold-tier mem-tier checkpoint by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11907" target="_blank" rel="noopener noreferrer" class="">#11907</a></li>
<li class="">fix(postgres catalog): discover materialized views and foreign tables by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11874" target="_blank" rel="noopener noreferrer" class="">#11874</a></li>
<li class="">test(chbench): stronger content fingerprint + MySQL sidecar template 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/11901" target="_blank" rel="noopener noreferrer" class="">#11901</a></li>
<li class="">test(chbench): align money columns to canonical DECIMAL schema (CMU BenchBase) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11921" target="_blank" rel="noopener noreferrer" class="">#11921</a></li>
<li class="">fix(cayenne): close per-key OCC missed-conflict holes and fused-txn IVM staleness by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11916" target="_blank" rel="noopener noreferrer" class="">#11916</a></li>
<li class="">ci(attestation): fast-track pure reverts past developer sign-off by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11913" target="_blank" rel="noopener noreferrer" class="">#11913</a></li>
<li class="">fix(cloud-connect): accept the portal's 5-char adoption-code segments by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11926" target="_blank" rel="noopener noreferrer" class="">#11926</a></li>
<li class="">docs(layering): codify crate tiers + workspace layering guard by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11919" target="_blank" rel="noopener noreferrer" class="">#11919</a></li>
<li class="">refactor(cayenne): datalake tiering UX — param rename + tracing by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11920" target="_blank" rel="noopener noreferrer" class="">#11920</a></li>
<li class="">feat(params): typed component params via <code>#[derive(TypedParams)]</code> — embeddings pilot by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11809" target="_blank" rel="noopener noreferrer" class="">#11809</a></li>
<li class="">Fix SQlite <code>round</code> type error. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11927" target="_blank" rel="noopener noreferrer" class="">#11927</a></li>
<li class="">fix(signoff): let remote sign-off refresh the Attestation check in CI by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11929" target="_blank" rel="noopener noreferrer" class="">#11929</a></li>
<li class="">feat(testoperator): print rows around CH-benCH analytical-gate mismatches by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11923" target="_blank" rel="noopener noreferrer" class="">#11923</a></li>
<li class="">fix(postgres catalog): don't abort the whole catalog on one schema's discovery failure by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11873" target="_blank" rel="noopener noreferrer" class="">#11873</a></li>
<li class="">ci(signoff): target-lint changed crates before full local/remote gate by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11909" target="_blank" rel="noopener noreferrer" class="">#11909</a></li>
<li class="">feat(runtime)!: always-on schema inference; remove schema_inference config by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11880" target="_blank" rel="noopener noreferrer" class="">#11880</a></li>
<li class="">refactor(layering): extract ClickHouse into connector-clickhouse; add restricted_deps guard by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11931" target="_blank" rel="noopener noreferrer" class="">#11931</a></li>
<li class="">perf: remove unnecessary allocations on hot query, search, and metrics paths by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11918" target="_blank" rel="noopener noreferrer" class="">#11918</a></li>
<li class="">Release notes for v2.1.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/11906" target="_blank" rel="noopener noreferrer" class="">#11906</a></li>
<li class="">refactor(layering): prepare DynamoDB for extraction from runtime by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11935" target="_blank" rel="noopener noreferrer" class="">#11935</a></li>
<li class="">Coalesce Null  primary keys 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/11519" target="_blank" rel="noopener noreferrer" class="">#11519</a></li>
<li class="">ci(e2e): strip ANSI before duckdb_append graceful-shutdown log whitelist by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11937" target="_blank" rel="noopener noreferrer" class="">#11937</a></li>
<li class="">feat(catalog): PostgreSQL catalog-level CDC acceleration (changes mode) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11897" target="_blank" rel="noopener noreferrer" class="">#11897</a></li>
<li class="">chbench(mysql): parallel analytical gate, decimal-comparison fix, and reseed/CI hardening by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11946" target="_blank" rel="noopener noreferrer" class="">#11946</a></li>
<li class="">fix: array_any_value panic when output is hash-repartitioned (empty list elements) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11952" target="_blank" rel="noopener noreferrer" class="">#11952</a></li>
<li class="">feat(layering): checkpoint sidecar as per-engine crates + DI the dynamodb connector by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11938" target="_blank" rel="noopener noreferrer" class="">#11938</a></li>
<li class="">chore(cluster): pin Ballista to upstream 54 merge tip by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11941" target="_blank" rel="noopener noreferrer" class="">#11941</a></li>
<li class="">feat(vortex): upgrade fork pins to Vortex 0.79.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/11950" target="_blank" rel="noopener noreferrer" class="">#11950</a></li>
<li class="">chbench(htap): run mysql configs at the shared 9250 rate; 2x converge wait by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11956" target="_blank" rel="noopener noreferrer" class="">#11956</a></li>
<li class="">fix(testoperator): HTAP drain gate false-fails on stale probe observations — final snapshot decides convergence (fixes #11953) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11966" target="_blank" rel="noopener noreferrer" class="">#11966</a></li>
<li class="">feat(catalog): replica-identity-aware eligibility for PostgreSQL catalog CDC by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11951" target="_blank" rel="noopener noreferrer" class="">#11951</a></li>
<li class="">refactor(layering): extract DynamoDB into connector-dynamodb by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11960" target="_blank" rel="noopener noreferrer" class="">#11960</a></li>
<li class="">Add <code>MemoryVectorIndex</code>: in-memory external-store <code>VectorIndex</code> with brute-force exact k-NN by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11908" target="_blank" rel="noopener noreferrer" class="">#11908</a></li>
<li class="">ci(signoff): prefer lab SSH for remote sign-off; skip Rust when no .rs 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/11977" target="_blank" rel="noopener noreferrer" class="">#11977</a></li>
<li class="">Reapply #11826: light delta encoding + CDC coalescing (SF1000 convergence lever) — gated on #11943 + SF1000 fingerprint 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/11944" target="_blank" rel="noopener noreferrer" class="">#11944</a></li>
<li class="">docs: align component statuses with signed release criteria by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11970" target="_blank" rel="noopener noreferrer" class="">#11970</a></li>
<li class="">fix: Spidapter flight auth passthrough by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11976" target="_blank" rel="noopener noreferrer" class="">#11976</a></li>
<li class="">Unified CDC 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/11777" target="_blank" rel="noopener noreferrer" class="">#11777</a></li>
<li class="">feat(cdc): Debezium plugin push ingest to Spice without Kafka by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11955" target="_blank" rel="noopener noreferrer" class="">#11955</a></li>
<li class="">refactor(connectors): unify registration on the linkme slice; restore schema coverage by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11972" target="_blank" rel="noopener noreferrer" class="">#11972</a></li>
<li class="">GTID-based MySQL 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/11813" target="_blank" rel="noopener noreferrer" class="">#11813</a></li>
<li class="">test(mysql): ignore mysql_binlog_replication_end_to_end_cayenne by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11986" target="_blank" rel="noopener noreferrer" class="">#11986</a></li>
<li class="">fix(cayenne): support Decimal128 in maintained SUM/AVG aggregates (fixes #11933) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11979" target="_blank" rel="noopener noreferrer" class="">#11979</a></li>
<li class="">feat(params): typed params for VectorStore and FtsStore engines by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11954" target="_blank" rel="noopener noreferrer" class="">#11954</a></li>
<li class="">chore(layering): remove orphaned dead code from connector extractions by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11988" target="_blank" rel="noopener noreferrer" class="">#11988</a></li>
<li class="">feat(cayenne): default-on adaptive cold layout from observed filters (F4) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11973" target="_blank" rel="noopener noreferrer" class="">#11973</a></li>
<li class="">fix: Fairly allocate partitions from scheduler assignment cycle 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/11853" target="_blank" rel="noopener noreferrer" class="">#11853</a></li>
<li class="">fix(cli): avoid escaped ANSI version notification by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11996" target="_blank" rel="noopener noreferrer" class="">#11996</a></li>
<li class="">MySQL Shared binlog connection by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11814" target="_blank" rel="noopener noreferrer" class="">#11814</a></li>
<li class="">feat(catalog): fail-loud + metrics + by-kind reporting for PostgreSQL catalog CDC (#11850) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11983" target="_blank" rel="noopener noreferrer" class="">#11983</a></li>
<li class="">fix(cayenne): P1 audit — subset compact, SMJ 2.5× HT, mem-tier pool account by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11991" target="_blank" rel="noopener noreferrer" class="">#11991</a></li>
<li class="">Add OAuth2 client-credentials grant and configurable auth header to 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/11981" target="_blank" rel="noopener noreferrer" class="">#11981</a></li>
<li class="">fix(telemetry): validate runtime.telemetry.metric_prefix against OTel name syntax by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/12002" target="_blank" rel="noopener noreferrer" class="">#12002</a></li>
<li class="">fix(cayenne): purge CDC mem-tier on delete-all/TRUNCATE by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12009" target="_blank" rel="noopener noreferrer" class="">#12009</a></li>
<li class="">Update signoff.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/11998" target="_blank" rel="noopener noreferrer" class="">#11998</a></li>
<li class="">feat(dev): add <code>scripts/signoff mine</code> — attestation status across your open PRs by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11978" target="_blank" rel="noopener noreferrer" class="">#11978</a></li>
<li class="">refactor(layering): extract MongoDB provider into connector-mongodb by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11982" target="_blank" rel="noopener noreferrer" class="">#11982</a></li>
<li class="">perf: remove three unnecessary allocations on the query hot path by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12029" target="_blank" rel="noopener noreferrer" class="">#12029</a></li>
<li class="">refactor(layering): evacuate cosmosdb/graphql/github/sharepoint providers into their connector crates by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12024" target="_blank" rel="noopener noreferrer" class="">#12024</a></li>
<li class="">fix(mysql-cdc): detect source reset on GTID resume by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12023" target="_blank" rel="noopener noreferrer" class="">#12023</a></li>
<li class="">fix(smb): exclude final SESSION_SETUP response from preauth integrity hash (fixes #11148) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12003" target="_blank" rel="noopener noreferrer" class="">#12003</a></li>
<li class="">fix(postgres): validate pg_replication_slot names before CDC refresh by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/12001" target="_blank" rel="noopener noreferrer" class="">#12001</a></li>
<li class="">fix(postgres): honor pg_connection_string for CDC (closes #11994) by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/12000" target="_blank" rel="noopener noreferrer" class="">#12000</a></li>
<li class="">feat: Support OTLP Histogram ingest, unix nanos time by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11992" target="_blank" rel="noopener noreferrer" class="">#11992</a></li>
<li class="">feat(search): write-through warm + fallback compound index for FTS (#11886) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11971" target="_blank" rel="noopener noreferrer" class="">#11971</a></li>
<li class="">docs: PR-description and code-comment conventions by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12032" target="_blank" rel="noopener noreferrer" class="">#12032</a></li>
<li class="">refactor(postgres cdc): consolidate every dataset onto the shared pump by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12028" target="_blank" rel="noopener noreferrer" class="">#12028</a></li>
<li class="">feat(cloud-connect): Standalone instance adoption connection by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11980" target="_blank" rel="noopener noreferrer" class="">#11980</a></li>
<li class="">fix(cdc): don't force the durable path on zero-row readiness heartbeats (fixes #12007) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12030" target="_blank" rel="noopener noreferrer" class="">#12030</a></li>
<li class="">Upgrade DataFusion to 54.1.0 by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11974" target="_blank" rel="noopener noreferrer" class="">#11974</a></li>
<li class="">perf(github): parallelize serial fetches (commits + workflow logs) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12017" target="_blank" rel="noopener noreferrer" class="">#12017</a></li>
<li class="">refactor(layering): evacuate odbc/scylladb/imap/git providers into their connector crates by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11993" target="_blank" rel="noopener noreferrer" class="">#11993</a></li>
<li class="">refactor(layering): carve runtime-component out of runtime, break the ArcRuntime cycle by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12031" target="_blank" rel="noopener noreferrer" class="">#12031</a></li>
<li class="">feat(mssql): enable tiberius integrated-auth-gssapi for Kerberos integrated auth on Unix by <a href="https://github.com/v1gnesh" target="_blank" rel="noopener noreferrer" class="">@v1gnesh</a> in <a href="https://github.com/spiceai/spiceai/pull/11386" target="_blank" rel="noopener noreferrer" class="">#11386</a></li>
<li class="">build(deps): bump the aws-sdk group across 1 directory with 5 updates 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/11821" target="_blank" rel="noopener noreferrer" class="">#11821</a></li>
<li class="">fix(cayenne): clear a committed CDC upsert's staging WAL at finalize (#12027) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12034" target="_blank" rel="noopener noreferrer" class="">#12034</a></li>
<li class="">feat(catalog): deterministic instance-independent replication slot + fail-loud + restart recovery (#11850) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12026" target="_blank" rel="noopener noreferrer" class="">#12026</a></li>
<li class="">Auto-cap DuckDB accelerator memory to prevent startup over-commit by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11985" target="_blank" rel="noopener noreferrer" class="">#11985</a></li>
<li class="">perf(refresh): speed up dataset refresh at startup by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12015" target="_blank" rel="noopener noreferrer" class="">#12015</a></li>
<li class="">fix(cayenne): don't create stray <code>file:</code> directory in memory mode (fixes #11922) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11940" target="_blank" rel="noopener noreferrer" class="">#11940</a></li>
<li class="">fix(aws): accept aws_session_token for temporary credentials (fixes #10932) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12041" target="_blank" rel="noopener noreferrer" class="">#12041</a></li>
<li class="">fix(mysql): verify an adopted layout against the event's own column types (fixes #11764) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12048" target="_blank" rel="noopener noreferrer" class="">#12048</a></li>
<li class="">fix(mysql): take the binlog rotate target from the ROTATE event, not its header offset (fixes #12042) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12044" target="_blank" rel="noopener noreferrer" class="">#12044</a></li>
<li class="">fix(search): check dataset readiness before embedding the query (fixes #10956) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12043" target="_blank" rel="noopener noreferrer" class="">#12043</a></li>
<li class="">fix(databricks): pin the authentication mode with databricks_auth_mode so an auto-loaded client secret can't switch U2M to M2M (fixes #11508) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12040" target="_blank" rel="noopener noreferrer" class="">#12040</a></li>
<li class="">fix(imap): narrow scans with IMAP SEARCH instead of refetching the mailbox (fixes #11548) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12039" target="_blank" rel="noopener noreferrer" class="">#12039</a></li>
<li class="">fix(cayenne): rank inference-derived sort columns below observed filter columns by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12049" target="_blank" rel="noopener noreferrer" class="">#12049</a></li>
<li class="">perf(cayenne): warm-subset compaction + mem-tier memory_limit honesty by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12035" target="_blank" rel="noopener noreferrer" class="">#12035</a></li>
<li class="">fix(cayenne): purge the mem-tier on delete-all for a table without a primary key (fixes #12072) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12073" target="_blank" rel="noopener noreferrer" class="">#12073</a></li>
<li class="">fix(accelerator): let an index declare a finalize failure fatal so a stale index can't report a successful refresh (fixes #12038) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12050" target="_blank" rel="noopener noreferrer" class="">#12050</a></li>
<li class="">fix(http): restore a join's embedded projection in HTTP subquery pushdown (fixes #11009) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12054" target="_blank" rel="noopener noreferrer" class="">#12054</a></li>
<li class="">fix(e2e): report a REPL that exits mid-script instead of passing the step (fixes #12057) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12059" target="_blank" rel="noopener noreferrer" class="">#12059</a></li>
<li class="">fix(imap): fetch the raw message only when a scan reads content (fixes #12045) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12060" target="_blank" rel="noopener noreferrer" class="">#12060</a></li>
<li class="">chore: Update Turso crate to 0.7.1 by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12062" target="_blank" rel="noopener noreferrer" class="">#12062</a></li>
<li class="">feat(chbench): in-memory _bench_ts watermarks for the MySQL HTAP staleness probe by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12055" target="_blank" rel="noopener noreferrer" class="">#12055</a></li>
<li class="">test(chbench): default MySQL adaptive spicepods to one shared binlog dump by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12076" target="_blank" rel="noopener noreferrer" class="">#12076</a></li>
<li class="">feat(search): warm in-memory writethrough/fallback index for <code>.vectors</code> datasets and 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/11914" target="_blank" rel="noopener noreferrer" class="">#11914</a></li>
<li class="">fix(search): expunge superseded documents from full-text BM25 statistics (fixes #12053) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12056" target="_blank" rel="noopener noreferrer" class="">#12056</a></li>
<li class="">fix(write-back): gate durable write-back on a safe source delivery primitive (fixes #11915) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12051" target="_blank" rel="noopener noreferrer" class="">#12051</a></li>
<li class="">fix(cayenne): keep protected snapshots a position-delete rewrite never folded in (fixes #11477) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12052" target="_blank" rel="noopener noreferrer" class="">#12052</a></li>
<li class="">ci(signoff): fast-track Attestation for Dependabot and non-Rust PRs, and cut the local gate by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12081" target="_blank" rel="noopener noreferrer" class="">#12081</a></li>
<li class="">fix(search): reach a compound's inner full-text tier when a change stream attaches (fixes #12061) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12063" target="_blank" rel="noopener noreferrer" class="">#12063</a></li>
<li class="">fix(accelerator): report PK equality pushdown Inexact so a point lookup can't return the whole table (fixes #12070) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12071" target="_blank" rel="noopener noreferrer" class="">#12071</a></li>
<li class="">fix(github): paginate issues and pull_requests on an immutable sort key so a row touched mid-scan isn't dropped (fixes #12067) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12069" target="_blank" rel="noopener noreferrer" class="">#12069</a></li>
<li class="">fix(otel): scope reserved metric column names to the data-point shape (fixes #12064) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12065" target="_blank" rel="noopener noreferrer" class="">#12065</a></li>
<li class="">fix(cayenne): sample the subset compaction append fence before the listing it guards (fixes #12074) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12075" target="_blank" rel="noopener noreferrer" class="">#12075</a></li>
<li class="">fix(search): drop a search hit whose row is not in the base table (fixes #12089) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12094" target="_blank" rel="noopener noreferrer" class="">#12094</a></li>
<li class="">feat(datasets): mark non-accelerated datasets Error when their source is unavailable by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12079" target="_blank" rel="noopener noreferrer" class="">#12079</a></li>
<li class="">fix(models): restore spice.ai/spiceai as a model source by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12092" target="_blank" rel="noopener noreferrer" class="">#12092</a></li>
<li class="">fix(cayenne): bound the cold PK-index rebuild; build shard views in one pass by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12078" target="_blank" rel="noopener noreferrer" class="">#12078</a></li>
<li class="">fix: Update Search integration test snapshots by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12077" target="_blank" rel="noopener noreferrer" class="">#12077</a></li>
<li class="">feat(catalog): view warnings, docs-linked messages, and clearer startup summary for PostgreSQL catalog CDC (#11850) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12022" target="_blank" rel="noopener noreferrer" class="">#12022</a></li>
<li class="">fix(postgres): log the cumulative delivery wait in the sink-stall warning by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12093" target="_blank" rel="noopener noreferrer" class="">#12093</a></li>
<li class="">refactor(cloud-connect): single-source the sealed-secret wire crypto in a shared 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/12124" target="_blank" rel="noopener noreferrer" class="">#12124</a></li>
<li class="">build(deps): bump quinn-proto from 0.11.14 to 0.11.16 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/12037" target="_blank" rel="noopener noreferrer" class="">#12037</a></li>
<li class="">perf(cayenne): demand-driven scan-view cache with access-based freshness (alternative to #11948) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12005" target="_blank" rel="noopener noreferrer" class="">#12005</a></li>
<li class="">build: exclude libnfs from the nextest workspace run by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12131" target="_blank" rel="noopener noreferrer" class="">#12131</a></li>
<li class="">build(deps): bump the aws-sdk group across 1 directory with 3 updates 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/12068" target="_blank" rel="noopener noreferrer" class="">#12068</a></li>
<li class="">fix(search): keep CDC changes streams working when embeddings wrap a CDC source by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12086" target="_blank" rel="noopener noreferrer" class="">#12086</a></li>
<li class="">fix(cli): report a truncated release download as a failed download (fixes #12120) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12121" target="_blank" rel="noopener noreferrer" class="">#12121</a></li>
<li class="">fix(postgres): honor inline PEM pg_sslrootcert on the replication path by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12128" target="_blank" rel="noopener noreferrer" class="">#12128</a></li>
<li class="">refactor(layering): extract RuntimeStatus into a runtime-status crate by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12115" target="_blank" rel="noopener noreferrer" class="">#12115</a></li>
<li class="">fix(libnfs): model AUTH as an opaque type so its layout assertion holds by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12132" target="_blank" rel="noopener noreferrer" class="">#12132</a></li>
<li class="">feat(duckdb): <code>on_full_refresh: replace_file</code> — full refresh into a new database file, atomically replaced by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12135" target="_blank" rel="noopener noreferrer" class="">#12135</a></li>
<li class="">Add v2.1.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/12146" target="_blank" rel="noopener noreferrer" class="">#12146</a></li>
<li class="">feat(duckdb): 'on_full_refresh: checkpoint_file' to bound acceleration file growth by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12139" target="_blank" rel="noopener noreferrer" class="">#12139</a></li>
<li class="">fix(lint): remove unused DuckDBTableWriter import in duckdb accelerator 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/12158" target="_blank" rel="noopener noreferrer" class="">#12158</a></li>
<li class="">fix(duckdb): drop a file-replacement test assertion that can never hold by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12178" target="_blank" rel="noopener noreferrer" class="">#12178</a></li>
<li class="">fix(cayenne): Remove redundant  <code>EmptyExec</code> within <code>UnionExec</code> used by <code>CayenneTableProvider::scan</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/12126" target="_blank" rel="noopener noreferrer" class="">#12126</a></li>
<li class="">build(deps): bump async-openai for aggregated rate-limit 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/12149" target="_blank" rel="noopener noreferrer" class="">#12149</a></li>
<li class="">perf(mysql): fast row-image decoder for CDC change builds by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12122" target="_blank" rel="noopener noreferrer" class="">#12122</a></li>
<li class="">feat(catalog): pre-flight replication-slot-capacity check for PostgreSQL catalog CDC (#11850) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12114" target="_blank" rel="noopener noreferrer" class="">#12114</a></li>
<li class="">fix(oracle): map DATE to a timestamp so the time-of-day is not silently truncated (fixes #12096) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12097" target="_blank" rel="noopener noreferrer" class="">#12097</a></li>
<li class="">fix(search): skip the warm vector index when nothing hydrates it (fixes #12101) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12103" target="_blank" rel="noopener noreferrer" class="">#12103</a></li>
<li class="">refactor(layering): extract the DataAccelerator contract into data-accelerator-api by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12099" target="_blank" rel="noopener noreferrer" class="">#12099</a></li>
<li class="">fix(cli): surface the registry error behind a failed <code>spice add</code> instead of blaming the archive (fixes #12116) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12119" target="_blank" rel="noopener noreferrer" class="">#12119</a></li>
<li class="">fix(ci): gate Rust checks on the lint config the gate itself reads (fixes #12111) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12112" target="_blank" rel="noopener noreferrer" class="">#12112</a></li>
<li class="">fix: Ensure executors report table statistics for distributed plan ordering by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11854" target="_blank" rel="noopener noreferrer" class="">#11854</a></li>
<li class="">fix: <code>EMBED_UDF_NAME</code> without models feature by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12136" target="_blank" rel="noopener noreferrer" class="">#12136</a></li>
<li class="">fix(openai): <code>openai_responses_tools: web_search</code> uses <code>web_search</code>, not <code>web_search_preview</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/12142" target="_blank" rel="noopener noreferrer" class="">#12142</a></li>
<li class="">fix(ci): cancel workflow runs left behind by superseded merge-queue batches (fixes #12170) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12177" target="_blank" rel="noopener noreferrer" class="">#12177</a></li>
<li class="">fix(runtime): return from a readiness wait when the runtime shuts down (fixes #12125) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12165" target="_blank" rel="noopener noreferrer" class="">#12165</a></li>
<li class="">perf(postgres): coalesce shared-slot CDC envelopes so a slow sink stops throttling the walsender by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12147" target="_blank" rel="noopener noreferrer" class="">#12147</a></li>
<li class="">fix(ci): make cargo_deny_advisories.yml parseable so the Rust advisory scan can run (fixes #12181) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12182" target="_blank" rel="noopener noreferrer" class="">#12182</a></li>
<li class="">fix(cluster): run GetTaskHistory under read-only SQL 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/12174" target="_blank" rel="noopener noreferrer" class="">#12174</a></li>
<li class="">fix(duckdb): count accelerated views in the coordinated memory budget (fixes #12123) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12161" target="_blank" rel="noopener noreferrer" class="">#12161</a></li>
<li class="">fix(ci): run the PR hygiene check on a GitHub-hosted runner by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12163" target="_blank" rel="noopener noreferrer" class="">#12163</a></li>
<li class="">fix(cayenne): warm PK existence caches at first write; bound keyset memory during bulk load by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12133" target="_blank" rel="noopener noreferrer" class="">#12133</a></li>
<li class="">ci: remote sign-off dispatches GitHub Actions only, never SSH to lab hosts by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12205" target="_blank" rel="noopener noreferrer" class="">#12205</a></li>
<li class="">Standalone instances: <code>spice connect</code> enroll-only split + connect surface by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12143" target="_blank" rel="noopener noreferrer" class="">#12143</a></li>
<li class="">fix(search): Fix ordering to correct <code>NDCG@k</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/12191" target="_blank" rel="noopener noreferrer" class="">#12191</a></li>
<li class="">refactor(layering): carry component configuration into connectors and extract data-connector-api by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12157" target="_blank" rel="noopener noreferrer" class="">#12157</a></li>
<li class="">fix(logging): mute the candle embedding backend's GeLU notice below -vv by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12194" target="_blank" rel="noopener noreferrer" class="">#12194</a></li>
<li class="">test: redact connection context in federated explain snapshots by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11800" target="_blank" rel="noopener noreferrer" class="">#11800</a></li>
<li class="">Enable deletes for Index, SearchIndex, and VectorIndex by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11961" target="_blank" rel="noopener noreferrer" class="">#11961</a></li>
<li class="">feat(testoperator): trace probe latency breaches and percentiles under HTAP load by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12209" target="_blank" rel="noopener noreferrer" class="">#12209</a></li>
<li class="">Add v2.1.1 and 2.1.2 as supported in SECURITY.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/12190" target="_blank" rel="noopener noreferrer" class="">#12190</a></li>
<li class="">fix(ci): seed the TPC-H Postgres benches from the fleet's dataset and schedule the catalog schema tests by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12214" target="_blank" rel="noopener noreferrer" class="">#12214</a></li>
<li class="">fix(cluster): restrict ExpandSecret to spicepod-referenced keys by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12156" target="_blank" rel="noopener noreferrer" class="">#12156</a></li>
<li class="">test: redact endpoint-URL compute contexts in federated explain snapshots by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12215" target="_blank" rel="noopener noreferrer" class="">#12215</a></li>
<li class="">fix(testoperator): a fully-censored table floors worst-P99 at the discard cap by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12196" target="_blank" rel="noopener noreferrer" class="">#12196</a></li>
<li class="">ci(e2e): tolerate any garbage type token in the duckdb_append parquet-rename race by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12207" target="_blank" rel="noopener noreferrer" class="">#12207</a></li>
<li class="">refactor(cloud-connect): update the proto contract for evolvability and versioning by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/12153" target="_blank" rel="noopener noreferrer" class="">#12153</a></li>
<li class="">chore(cloud-connect): use port 443 for gateway addresses in the doc example and test fixtures by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12252" target="_blank" rel="noopener noreferrer" class="">#12252</a></li>
<li class="">fix(ci): authenticate the management API integration suite with secrets that exist (fixes #12184) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12185" target="_blank" rel="noopener noreferrer" class="">#12185</a></li>
<li class="">feat(search): add Recall@k, MRR@k, and Precision@k retrieval metrics by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12193" target="_blank" rel="noopener noreferrer" class="">#12193</a></li>
<li class="">fix(search): enable stemming by default for full-text 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/12220" target="_blank" rel="noopener noreferrer" class="">#12220</a></li>
<li class="">fix: Report query metrics when task history is disabled by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12227" target="_blank" rel="noopener noreferrer" class="">#12227</a></li>
<li class="">fix(runtime): count accelerated views when gating the Cayenne compaction pool (fixes #12164) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12171" target="_blank" rel="noopener noreferrer" class="">#12171</a></li>
<li class="">fix(secrets): snapshot the store registry instead of holding its lock across awaits (fixes #12127) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12166" target="_blank" rel="noopener noreferrer" class="">#12166</a></li>
<li class="">fix(search): address Elasticsearch deletes by document _id (fixes #12267) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12273" target="_blank" rel="noopener noreferrer" class="">#12273</a></li>
<li class="">fix(postgres): deprecate pg_replication_temporary_slot, which could never work (fixes #12213) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12265" target="_blank" rel="noopener noreferrer" class="">#12265</a></li>
<li class="">fix(cayenne): always materialize a snapshot directory the catalog may reference (fixes #12208) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12262" target="_blank" rel="noopener noreferrer" class="">#12262</a></li>
<li class="">fix(duckdb): size the connection pool for accelerated views too (fixes #12160) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12169" target="_blank" rel="noopener noreferrer" class="">#12169</a></li>
<li class="">fix(ci): link brew formulas that are installed but unlinked in setup-cc by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12286" target="_blank" rel="noopener noreferrer" class="">#12286</a></li>
<li class="">fix(runtime): size memory budgets from the process's own cgroup limit by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12263" target="_blank" rel="noopener noreferrer" class="">#12263</a></li>
<li class="">Harden dataset availability checks against idle connection resets by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12180" target="_blank" rel="noopener noreferrer" class="">#12180</a></li>
<li class="">test(mysql): harden binlog CDC with dump-reconnect and full type-matrix coverage by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12264" target="_blank" rel="noopener noreferrer" class="">#12264</a></li>
<li class="">fix: send enc_pubkey_pem on /renew for standalone 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/12312" target="_blank" rel="noopener noreferrer" class="">#12312</a></li>
<li class="">Connection-scale client modes for testoperator throughput and load 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/12280" target="_blank" rel="noopener noreferrer" class="">#12280</a></li>
<li class="">fix(search): remove all chunk documents when a chunked Elasticsearch index deletes a row (fixes #12088) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12268" target="_blank" rel="noopener noreferrer" class="">#12268</a></li>
<li class="">fix(duckdb): run spice_sys DuckDB sidecar writes on the blocking pool (fixes #12175) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12204" target="_blank" rel="noopener noreferrer" class="">#12204</a></li>
<li class="">fix(cayenne): the write-concurrency raise must respect the memory brake by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12317" target="_blank" rel="noopener noreferrer" class="">#12317</a></li>
<li class="">feat(runtime): expose the memory numbers that explain an OOM as gauges by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12195" target="_blank" rel="noopener noreferrer" class="">#12195</a></li>
<li class="">fix(flightsql): mark stamped statistics inexact when a LIMIT is pushed to the remote scan (fixes #12292) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12293" target="_blank" rel="noopener noreferrer" class="">#12293</a></li>
<li class="">fix(deps): bump wasmtime to 47.0.3 to clear RUSTSEC-2026-0222 (fixes #12295) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12298" target="_blank" rel="noopener noreferrer" class="">#12298</a></li>
<li class="">fix(telemetry): read the cgroup CPU quota along the whole cgroup path (fixes #12299) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12300" target="_blank" rel="noopener noreferrer" class="">#12300</a></li>
<li class="">refactor(layering): move the DataFusion helpers below runtime and derive the federation deny-list from a function registry by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12210" target="_blank" rel="noopener noreferrer" class="">#12210</a></li>
<li class="">fix(search): reject a persisted full-text index whose schema no longer matches the configuration (fixes #12274) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12275" target="_blank" rel="noopener noreferrer" class="">#12275</a></li>
<li class="">fix(spiced): keep dependency logging and chat progress alive when task history is off (fixes #12279) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12281" target="_blank" rel="noopener noreferrer" class="">#12281</a></li>
<li class="">fix(runtime): count a mid-stream response failure as a failure in the HTTP metrics (fixes #12284) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12291" target="_blank" rel="noopener noreferrer" class="">#12291</a></li>
<li class="">fix(cluster): mark a coordinator leaf scan's cached executor statistics inexact (fixes #12303) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12304" target="_blank" rel="noopener noreferrer" class="">#12304</a></li>
<li class="">fix(runtime): report a memory-pool refusal as ResourcesExhausted and answer it with 503 (fixes #12282) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12289" target="_blank" rel="noopener noreferrer" class="">#12289</a></li>
<li class="">fix(cayenne): enforce the sharded PK keyset byte budget; correct per-entry accounting by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12192" target="_blank" rel="noopener noreferrer" class="">#12192</a></li>
<li class="">fix(runtime): carve the Cayenne compaction memory pool only when a dataset can compact into it (fixes #12320) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12326" target="_blank" rel="noopener noreferrer" class="">#12326</a></li>
<li class="">feat(spiced): report fatal signals before exit by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12334" target="_blank" rel="noopener noreferrer" class="">#12334</a></li>
<li class="">bug: Filters on <code>_match</code> fail during planning by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12247" target="_blank" rel="noopener noreferrer" class="">#12247</a></li>
<li class="">bug: S3 metadata-filter conversion silently drops unconvertible AND/OR operands by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12248" target="_blank" rel="noopener noreferrer" class="">#12248</a></li>
<li class="">fix(ci): reject a failed sign-off on the head commit (fixes #12357) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12362" target="_blank" rel="noopener noreferrer" class="">#12362</a></li>
<li class="">ci: let signoff.yml sign off fork PRs by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12025" target="_blank" rel="noopener noreferrer" class="">#12025</a></li>
<li class="">fix(search): resolve an append stream through a vector scan (fixes #12313) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12314" target="_blank" rel="noopener noreferrer" class="">#12314</a></li>
<li class="">docs: Spice v2.1.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/12378" target="_blank" rel="noopener noreferrer" class="">#12378</a></li>
<li class="">bug: <code>MemoryVectorIndex</code> leaves external-store entries on delete. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12246" target="_blank" rel="noopener noreferrer" class="">#12246</a></li>
<li class="">fix(cluster): keep the executor's cluster-service channel alive while idle (fixes #12301) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12302" target="_blank" rel="noopener noreferrer" class="">#12302</a></li>
<li class="">fix(https): reject OAuth2 params on structured HTTP file datasets (fixes #12315) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12321" target="_blank" rel="noopener noreferrer" class="">#12321</a></li>
<li class="">fix(scheduler): drive the interval-timing tests on a virtual clock (fixes #12323) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12329" target="_blank" rel="noopener noreferrer" class="">#12329</a></li>
<li class="">fix(ci): do not report a shutdown-cancelled sidecar task as a failure (fixes #12322) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12331" target="_blank" rel="noopener noreferrer" class="">#12331</a></li>
<li class="">fix(logging): let log colour follow the output sink (fixes #12327) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12335" target="_blank" rel="noopener noreferrer" class="">#12335</a></li>
<li class="">fix(cayenne): report the auto-tuned config once per resolution (fixes #12330) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12341" target="_blank" rel="noopener noreferrer" class="">#12341</a></li>
<li class="">chore: Update Turso crate to 0.7.2 by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12344" target="_blank" rel="noopener noreferrer" class="">#12344</a></li>
<li class="">fix(runtime): stop retrying a dataset configuration failure that no retry can clear (fixes #12339) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12345" target="_blank" rel="noopener noreferrer" class="">#12345</a></li>
<li class="">build(deps): bump the github-actions-dependencies group across 3 directories with 9 updates 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/12359" target="_blank" rel="noopener noreferrer" class="">#12359</a></li>
<li class="">feat(llms): GLM 5.2 across 3+ nodes, context_length + paged_attention params, MXFP4 for DeepSeek-V4 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11990" target="_blank" rel="noopener noreferrer" class="">#11990</a></li>
<li class="">feat(runtime): size every CPU-derived pool from the CPU entitlement by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12276" target="_blank" rel="noopener noreferrer" class="">#12276</a></li>
<li class="">chore(ci): bump the spiceio setup action to v0.5.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/12391" target="_blank" rel="noopener noreferrer" class="">#12391</a></li>
<li class="">feat(testoperator): serve /health and /v1/ready for the HTAP 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/12373" target="_blank" rel="noopener noreferrer" class="">#12373</a></li>
<li class="">feat(catalog): durable storage modes for PostgreSQL catalog CDC, and let the catalog own its accelerated tables by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12222" target="_blank" rel="noopener noreferrer" class="">#12222</a></li>
<li class="">fix(runtime): correctly classify a memory-pool refusal as ResourcesExhausted (fixes #12380) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12382" target="_blank" rel="noopener noreferrer" class="">#12382</a></li>
<li class="">fix(ci): budget the sign-off run below the pool's job wall (fixes #12340) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12343" target="_blank" rel="noopener noreferrer" class="">#12343</a></li>
<li class="">fix(bench): install make before the seeded-database check; surface catalog error causes by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12372" target="_blank" rel="noopener noreferrer" class="">#12372</a></li>
<li class="">Clean up SQLite sidecar files in cold bloom catalog 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/12404" target="_blank" rel="noopener noreferrer" class="">#12404</a></li>
<li class="">fix(ci): name an incoherent Cargo.lock before every cargo job fails on it (fixes #12375) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12423" target="_blank" rel="noopener noreferrer" class="">#12423</a></li>
<li class="">test(search): exercise the S3 Vectors warm-tier fallback 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/12197" target="_blank" rel="noopener noreferrer" class="">#12197</a></li>
<li class="">fix(ci): stop the spiced child E2E cleanup was leaking, scoped to this runner (fixes #12058) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12431" target="_blank" rel="noopener noreferrer" class="">#12431</a></li>
<li class="">perf(cayenne): give refresh_mode full its own write profile by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12338" target="_blank" rel="noopener noreferrer" class="">#12338</a></li>
<li class="">fix(ci): skip the Attestation refresh when the sign-off SHA is no longer the PR head (fixes #12360) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12433" target="_blank" rel="noopener noreferrer" class="">#12433</a></li>
<li class="">fix(monitoring): correct p99 queries in the Datadog dashboard by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12444" target="_blank" rel="noopener noreferrer" class="">#12444</a></li>
<li class="">fix(ci): tell an out-of-disk sign-off apart from a failing branch (fixes #12412) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12426" target="_blank" rel="noopener noreferrer" class="">#12426</a></li>
<li class="">feat(search): warm in-memory tier for chunked Elasticsearch vector 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/12082" target="_blank" rel="noopener noreferrer" class="">#12082</a></li>
<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/12451" target="_blank" rel="noopener noreferrer" class="">#12451</a></li>
<li class="">fix(search): preserve field names with capitals and '.' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12389" target="_blank" rel="noopener noreferrer" class="">#12389</a></li>
<li class="">fix(ci): size the cayenne property-test timeout ceiling to its measured runtime (fixes #12336) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12438" target="_blank" rel="noopener noreferrer" class="">#12438</a></li>
<li class="">fix(models): pass the pinned revision to a HuggingFace embedding model (fixes #12430) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12446" target="_blank" rel="noopener noreferrer" class="">#12446</a></li>
<li class="">fix(ci): make the out-of-disk sign-off verdict survive being out of disk (fixes #12427) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12461" target="_blank" rel="noopener noreferrer" class="">#12461</a></li>
<li class="">fix(ci): stop Enforce Pulls with Spice racing itself, and let a Dependabot PR pass it (fixes #12377) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12466" target="_blank" rel="noopener noreferrer" class="">#12466</a></li>
<li class="">docs: update v2.1.3 release notes for the Iceberg timestamptz fix (trunk sync) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12459" target="_blank" rel="noopener noreferrer" class="">#12459</a></li>
<li class="">fix(ci): install protoc before building the spice CLI in the E2E CLI 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/12449" target="_blank" rel="noopener noreferrer" class="">#12449</a></li>
<li class="">fix(ci): reject an <code>if:</code> naming a context GitHub does not provide there (refs #12396) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12468" target="_blank" rel="noopener noreferrer" class="">#12468</a></li>
<li class="">fix(monitoring): align Datadog dashboard with OTel service instance identity by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/12454" target="_blank" rel="noopener noreferrer" class="">#12454</a></li>
<li class="">chore(ci): bump the spiceio setup action to v0.5.10 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12490" target="_blank" rel="noopener noreferrer" class="">#12490</a></li>
<li class="">test(cayenne): query result correctness vs standalone engines and Spice accelerators by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12098" target="_blank" rel="noopener noreferrer" class="">#12098</a></li>
<li class="">fix(elasticsearch): keep the response body out of errors on the row-data request paths (fixes #12409) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12456" target="_blank" rel="noopener noreferrer" class="">#12456</a></li>
<li class="">fix(ci): key the sign-off concurrency group on the commit, not the dispatch input (fixes #12472) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12474" target="_blank" rel="noopener noreferrer" class="">#12474</a></li>
<li class="">perf(ci): run the workspace unit-test gate in one cargo invocation by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12437" target="_blank" rel="noopener noreferrer" class="">#12437</a></li>
<li class="">feat(monitoring): Runtime Resources observability on Grafana dashboard by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/12441" target="_blank" rel="noopener noreferrer" class="">#12441</a></li>
<li class="">fix(ci): report cache health on the build failures it explains (refs #12420) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12471" target="_blank" rel="noopener noreferrer" class="">#12471</a></li>
<li class="">fix: resolve fixed-offset timezones when writing Vortex 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/12463" target="_blank" rel="noopener noreferrer" class="">#12463</a></li>
<li class="">fix(search): stop re-parsing a dotted index key as relation.column (fixes #12462) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12464" target="_blank" rel="noopener noreferrer" class="">#12464</a></li>
<li class="">fix(ci): build the ADBC BigQuery driver with the Go version its go.mod requires by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12470" target="_blank" rel="noopener noreferrer" class="">#12470</a></li>
<li class="">fix(llms): keep the Hugging Face cache token and harden the model E2E job by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12422" target="_blank" rel="noopener noreferrer" class="">#12422</a></li>
<li class="">fix(ci): stop a cancelled Remote Sign-off from claiming the checks failed (fixes #12424) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12425" target="_blank" rel="noopener noreferrer" class="">#12425</a></li>
<li class="">fix(runtime): fail the write when an index cannot prepare its write window (fixes #12421) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12448" target="_blank" rel="noopener noreferrer" class="">#12448</a></li>
<li class="">fix(runtime): stop retrying a permanent configuration failure on the catalog and dataset load paths (fixes #12417) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12443" target="_blank" rel="noopener noreferrer" class="">#12443</a></li>
<li class="">chore(ci): bump spiceio setup action to v0.6.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/12522" target="_blank" rel="noopener noreferrer" class="">#12522</a></li>
<li class="">fix(ci): say what was unready when a spiced readiness wait times out (refs #12473) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12484" target="_blank" rel="noopener noreferrer" class="">#12484</a></li>
<li class="">feat(cayenne): drive incremental vacuum from the maintenance tick by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12435" target="_blank" rel="noopener noreferrer" class="">#12435</a></li>
<li class="">feat(ci): allow additional cargo features for spiceai-dev Docker builds by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/12198" target="_blank" rel="noopener noreferrer" class="">#12198</a></li>
<li class="">fix(cli): authenticate the SQL REPL's nql line like the session's SQL (fixes #12491) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12496" target="_blank" rel="noopener noreferrer" class="">#12496</a></li>
<li class="">fix(search): keep the row's primary key out of Elasticsearch bulk-index failures (fixes #12370) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12410" target="_blank" rel="noopener noreferrer" class="">#12410</a></li>
<li class="">fix(cpu-budget): state a low CPU request plainly, and only below half the cores by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12440" target="_blank" rel="noopener noreferrer" class="">#12440</a></li>
<li class="">fix(models): reject a pinned Model2Vec revision instead of 401ing on it (fixes #12445) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12475" target="_blank" rel="noopener noreferrer" class="">#12475</a></li>
<li class="">fix(cli): keep a login credential on the origin it was minted for (fixes #12505) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12508" target="_blank" rel="noopener noreferrer" class="">#12508</a></li>
<li class="">bug: S3 vector indexing succeeds when the embedding column is absent by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12249" target="_blank" rel="noopener noreferrer" class="">#12249</a></li>
<li class="">bug: S3 Vectors advertises unsupported metadata predicates as exact pushdown (fixes #12243) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12250" target="_blank" rel="noopener noreferrer" class="">#12250</a></li>
<li class="">fix(cli): treat a blank --api-key as no key at all (fixes #12498) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12501" target="_blank" rel="noopener noreferrer" class="">#12501</a></li>
<li class="">task: Add <code>#[derive(TypedParams)]</code> for secret stores. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12154" target="_blank" rel="noopener noreferrer" class="">#12154</a></li>
<li class="">fix(runtime): report a deferred dataset that cannot build its connector (fixes #12414) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12483" target="_blank" rel="noopener noreferrer" class="">#12483</a></li>
<li class="">fix(mysql): pre-flight CDC replication privileges with an actionable error (fixes #11967) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12485" target="_blank" rel="noopener noreferrer" class="">#12485</a></li>
<li class="">fix(testoperator): reject a client fleet the HTTP executors cannot bound (fixes #12348) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12349" target="_blank" rel="noopener noreferrer" class="">#12349</a></li>
<li class="">fix(ci): commit the catalog schema snapshot baselines and stop the daily PR churn by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12525" target="_blank" rel="noopener noreferrer" class="">#12525</a></li>
<li class="">refactor(runtime): describe every table-provider wrapper layer once in a layer table by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12200" target="_blank" rel="noopener noreferrer" class="">#12200</a></li>
<li class="">Add testoperator dispatch support for search benchmarks and replace benchmarks_search.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/12224" target="_blank" rel="noopener noreferrer" class="">#12224</a></li>
<li class="">bug: RRF discards a candidate stream after an empty first batch (fixes #12239) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12384" target="_blank" rel="noopener noreferrer" class="">#12384</a></li>
<li class="">fix(cli): stop the SQL REPL asking a runtime its queries never went to (fixes #12493) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12494" target="_blank" rel="noopener noreferrer" class="">#12494</a></li>
<li class="">test(runtime): run the metrics tests that are built but never run by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12510" target="_blank" rel="noopener noreferrer" class="">#12510</a></li>
<li class="">fix(tests): assert the search cache status instead of wall-clock timings (fixes #12487) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12488" target="_blank" rel="noopener noreferrer" class="">#12488</a></li>
<li class="">fix(search): resolve a chunked index's entries from the authoritative store, not the read listing (fixes #12266) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12411" target="_blank" rel="noopener noreferrer" class="">#12411</a></li>
<li class="">fix(search): Improvements for search harness by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12226" target="_blank" rel="noopener noreferrer" class="">#12226</a></li>
<li class="">test(cayenne): cover the selective PK join and the inline/file tier boundary by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12517" target="_blank" rel="noopener noreferrer" class="">#12517</a></li>
<li class="">fix(runtime): surface the unknown-connector suggestion, and report it once (fixes #12415) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12469" target="_blank" rel="noopener noreferrer" class="">#12469</a></li>
<li class="">fix(ci): publish no sign-off verdict when the run was signalled (fixes #12518) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12544" target="_blank" rel="noopener noreferrer" class="">#12544</a></li>
<li class="">refactor(layering): move the modules the accelerated table shares below runtime by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12219" target="_blank" rel="noopener noreferrer" class="">#12219</a></li>
<li class="">chore(ci): upgrade spiceio setup action to v0.7.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/12611" target="_blank" rel="noopener noreferrer" class="">#12611</a></li>
<li class="">fix(runtime): keep the leading slash on an inferred local Iceberg warehouse root (fixes #12533) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12540" target="_blank" rel="noopener noreferrer" class="">#12540</a></li>
<li class="">fix(ci): let a cancelled sign-off correct only the failure it posted (fixes #12428) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12432" target="_blank" rel="noopener noreferrer" class="">#12432</a></li>
<li class="">fix(runtime): compare an append high-water mark inclusively on a day-granular time column (fixes #12492) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12500" target="_blank" rel="noopener noreferrer" class="">#12500</a></li>
<li class="">fix(runtime): report a dataset connector load failure once, not once per site (fixes #12365) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12526" target="_blank" rel="noopener noreferrer" class="">#12526</a></li>
<li class="">fix(workers): give the weighted-router test a noise margin it can survive (fixes #12537) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12538" target="_blank" rel="noopener noreferrer" class="">#12538</a></li>
<li class="">fix(runtime): reject a Hadoop table URL too short to name a namespace (fixes #12539) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12542" target="_blank" rel="noopener noreferrer" class="">#12542</a></li>
<li class="">fix(ci): probe a pinned Hugging Face revision at a URL the Hub has (fixes #12553) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12554" target="_blank" rel="noopener noreferrer" class="">#12554</a></li>
<li class="">feat(testoperator): pin the load phase to a target query rate by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12519" target="_blank" rel="noopener noreferrer" class="">#12519</a></li>
<li class="">fix(cli): follow only same-origin redirects, so the API key cannot leave the origin by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12503" target="_blank" rel="noopener noreferrer" class="">#12503</a></li>
<li class="">fix(ci): use spiceio and sccache for E2E macOS aarch64 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/12590" target="_blank" rel="noopener noreferrer" class="">#12590</a></li>
<li class="">perf(cdc): build a drained CDC burst with one blocking-pool handoff by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12514" target="_blank" rel="noopener noreferrer" class="">#12514</a></li>
<li class="">feat(cloud-connect): complete the spice connect surface — install, codeless connect, remove by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/12159" target="_blank" rel="noopener noreferrer" class="">#12159</a></li>
<li class="">fix(scripts): distinguish merge-queue PRs in signoff mine by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12383" target="_blank" rel="noopener noreferrer" class="">#12383</a></li>
<li class="">bug: HTTP RRF truncates each candidate leg before fusion by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12386" target="_blank" rel="noopener noreferrer" class="">#12386</a></li>
<li class="">fix(cayenne): pair the cold manifest with the warm snapshot a scan captured by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12577" target="_blank" rel="noopener noreferrer" class="">#12577</a></li>
<li class="">fix(deps): bump the Vortex pin and guard the task-cancellation regression by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12548" target="_blank" rel="noopener noreferrer" class="">#12548</a></li>
<li class="">chore(deps): bump datafusion and table-providers for the DuckDB timezone and retention fixes by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12545" target="_blank" rel="noopener noreferrer" class="">#12545</a></li>
<li class="">fix(cayenne): surface the real error for partitioned Cayenne writes by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12535" target="_blank" rel="noopener noreferrer" class="">#12535</a></li>
<li class="">fix(postgres): re-snapshot in-memory Cayenne on slot resume, and match the slot's lifetime to the accelerator's by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12221" target="_blank" rel="noopener noreferrer" class="">#12221</a></li>
<li class="">fix(cli): bound the Spice.ai login poll instead of retrying forever (fixes #12506) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12523" target="_blank" rel="noopener noreferrer" class="">#12523</a></li>
<li class="">fix(runtime): name a UTC timestamp column's zone in a spelling DuckDB knows (fixes #12528) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12534" target="_blank" rel="noopener noreferrer" class="">#12534</a></li>
<li class="">fix(mysql): raise net_write_timeout on the shared binlog dump session (fixes #12527) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12586" target="_blank" rel="noopener noreferrer" class="">#12586</a></li>
<li class="">fix(google-genai): read a Gemini SSE stream as bytes, so a split character survives (fixes #12597) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12601" target="_blank" rel="noopener noreferrer" class="">#12601</a></li>
<li class="">fix(mssql): follow an availability group's read-only routing redirect (fixes #11453) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12607" target="_blank" rel="noopener noreferrer" class="">#12607</a></li>
<li class="">test(cayenne): measure small-file fan-out against the seeded appends, not a listed count (fixes #12602) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12613" target="_blank" rel="noopener noreferrer" class="">#12613</a></li>
<li class="">fix(ci): keep the build cache's S3 endpoint out of the runtime under test (fixes #12624) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12626" target="_blank" rel="noopener noreferrer" class="">#12626</a></li>
<li class="">perf(ci): verify the CLI binary instead of building it again by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12486" target="_blank" rel="noopener noreferrer" class="">#12486</a></li>
<li class="">fix(postgres): publish a member's held CDC envelope before a bulk transaction (fixes #12311) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12408" target="_blank" rel="noopener noreferrer" class="">#12408</a></li>
<li class="">fix(cayenne): consolidate the two partition creators, fixing the accelerator's missing directory sync (fixes #12212) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12619" target="_blank" rel="noopener noreferrer" class="">#12619</a></li>
<li class="">fix(cayenne): run a backend-parameterized test on a stack its plan fits in (fixes #12436) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12561" target="_blank" rel="noopener noreferrer" class="">#12561</a></li>
<li class="">fix(ci): let only the merge queue pass Attestation without a sign-off (fixes #12679) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12681" target="_blank" rel="noopener noreferrer" class="">#12681</a></li>
<li class="">fix(ci): take the trusted sign-off helpers from the workflow's own commit (fixes #12657) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12662" target="_blank" rel="noopener noreferrer" class="">#12662</a></li>
<li class="">fix(ci): name the E2E jobs that did not succeed (fixes #12643) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12649" target="_blank" rel="noopener noreferrer" class="">#12649</a></li>
<li class="">fix(ci): give the openai model job a ceiling above its own setup (fixes #12644) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12650" target="_blank" rel="noopener noreferrer" class="">#12650</a></li>
<li class="">fix(ci): recognise the Flight bind wording so a foreign ready cannot pass (fixes #12642) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12648" target="_blank" rel="noopener noreferrer" class="">#12648</a></li>
<li class="">fix(ci): call an unreachable compiler cache infrastructure, not a failing branch (fixes #12556) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12557" target="_blank" rel="noopener noreferrer" class="">#12557</a></li>
<li class="">fix(search): clear a replacing index instead of keeping rows the source dropped (fixes #12066) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12564" target="_blank" rel="noopener noreferrer" class="">#12564</a></li>
<li class="">fix(ci): retry the sign-off status post, and say so when it never lands (fixes #12701) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12704" target="_blank" rel="noopener noreferrer" class="">#12704</a></li>
<li class="">build(deps): bump aws-smithy-runtime from 1.12.0 to 1.12.1 in the aws-sdk 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/12358" target="_blank" rel="noopener noreferrer" class="">#12358</a></li>
<li class="">task: Add <code>#[derive(TypedParams)]</code> for LLMs. (fixes #12150) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12155" target="_blank" rel="noopener noreferrer" class="">#12155</a></li>
<li class="">fix(ci): let a nightly's later test suites survive an earlier one's failure (fixes #12625) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12627" target="_blank" rel="noopener noreferrer" class="">#12627</a></li>
<li class="">fix(tests): wait for a partition to persist before snapshotting its plan (fixes #12645) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12652" target="_blank" rel="noopener noreferrer" class="">#12652</a></li>
<li class="">fix(object-store): bound an FTP and SFTP connection attempt end to end (fixes #12647) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12655" target="_blank" rel="noopener noreferrer" class="">#12655</a></li>
<li class="">test(iceberg): decide the Hadoop catalog test's backends by environment (fixes #12646) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12665" target="_blank" rel="noopener noreferrer" class="">#12665</a></li>
<li class="">fix(ci): give each E2E model job its own spiced ports (fixes #12419) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12685" target="_blank" rel="noopener noreferrer" class="">#12685</a></li>
<li class="">fix(cache): evict the Pingora cache down to max_size instead of only recording it (fixes #12688) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12694" target="_blank" rel="noopener noreferrer" class="">#12694</a></li>
<li class="">fix(cayenne): bound protected-snapshot compaction by the compaction memory pool by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12541" target="_blank" rel="noopener noreferrer" class="">#12541</a></li>
<li class="">fix(ci): leave an incomplete sign-off pending, not failed (fixes #12741) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12742" target="_blank" rel="noopener noreferrer" class="">#12742</a></li>
<li class="">fix(telemetry): resolve duration histograms below a millisecond (fixes #12693) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12699" target="_blank" rel="noopener noreferrer" class="">#12699</a></li>
<li class="">fix(ci): bound every E2E job, so a wedged build cannot hold the queue (fixes #12717) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12719" target="_blank" rel="noopener noreferrer" class="">#12719</a></li>
<li class="">feat(testoperator): add new search benchmark datasets by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12237" target="_blank" rel="noopener noreferrer" class="">#12237</a></li>
<li class="">test(cayenne): name the small-file compaction tests after the path they take (fixes #12612) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12740" target="_blank" rel="noopener noreferrer" class="">#12740</a></li>
<li class="">fix(cli): bound an inference call by silence, not by total duration (fixes #12583) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12589" target="_blank" rel="noopener noreferrer" class="">#12589</a></li>
<li class="">fix(turso): store and read back the same set of types (fixes #12628) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12633" target="_blank" rel="noopener noreferrer" class="">#12633</a></li>
<li class="">fix(catalogs): keep a Glue database whose tables the include patterns select (fixes #12630) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12638" target="_blank" rel="noopener noreferrer" class="">#12638</a></li>
<li class="">fix(catalogs): apply a catalog's exclude patterns, not just its include (fixes #12636) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12641" target="_blank" rel="noopener noreferrer" class="">#12641</a></li>
<li class="">fix(cayenne): build a carry-forward rewrite from the classified manifest rows (fixes #12708) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12711" target="_blank" rel="noopener noreferrer" class="">#12711</a></li>
<li class="">fix(runtime): subtract an append dedup window as a multiset, not a set (fixes #12499) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12513" target="_blank" rel="noopener noreferrer" class="">#12513</a></li>
<li class="">bug: FTS exec drops absent columns and violates its declared schema (fixes #12228) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12245" target="_blank" rel="noopener noreferrer" class="">#12245</a></li>
<li class="">bug: rrf() linear recency decay divides the document age by the decay window twice (fixes #12232) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12385" target="_blank" rel="noopener noreferrer" class="">#12385</a></li>
<li class="">chore(deps): bump datafusion rev to spiceai-54 with outer-join unparser fix by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12683" target="_blank" rel="noopener noreferrer" class="">#12683</a></li>
<li class="">fix(ci): recognise sccache's startup-timeout wording as an unusable cache (fixes #12622) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12788" target="_blank" rel="noopener noreferrer" class="">#12788</a></li>
<li class="">fix(spiced): open the log with the startup banner by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12615" target="_blank" rel="noopener noreferrer" class="">#12615</a></li>
<li class="">fix(metrics): resolve S3 Vectors latency below a hundred milliseconds (fixes #12698) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12702" target="_blank" rel="noopener noreferrer" class="">#12702</a></li>
<li class="">fix(google-genai): bound one unterminated SSE event so a stalled endpoint cannot grow spiced (fixes #12600) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12690" target="_blank" rel="noopener noreferrer" class="">#12690</a></li>
<li class="">feat(cpu-budget): size a burstable pod from its CPU request, with an all-cores opt-out by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12581" target="_blank" rel="noopener noreferrer" class="">#12581</a></li>
<li class="">fix(ci): refuse a sign-off the branch's Makefile cannot run (fixes #12813) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12815" target="_blank" rel="noopener noreferrer" class="">#12815</a></li>
<li class="">test(postgres): say which readiness wait timed out and what it saw (fixes #12730) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12731" target="_blank" rel="noopener noreferrer" class="">#12731</a></li>
<li class="">fix(mssql): bound one connection attempt, so a stalled peer cannot pin a pool slot (fixes #12606) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12733" target="_blank" rel="noopener noreferrer" class="">#12733</a></li>
<li class="">fix(ci): ask whether the disk watcher runs before make writes to it (fixes #12734) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12736" target="_blank" rel="noopener noreferrer" class="">#12736</a></li>
<li class="">fix: delete three source files that no crate root declares (fixes #12735) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12738" target="_blank" rel="noopener noreferrer" class="">#12738</a></li>
<li class="">fix(telemetry): keep a startup-recorded gauge on the operator meter, so it reaches /metrics (fixes #12667) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12754" target="_blank" rel="noopener noreferrer" class="">#12754</a></li>
<li class="">fix(cloud-connect): pin rustls where the release call presents its identity (fixes #12760) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12764" target="_blank" rel="noopener noreferrer" class="">#12764</a></li>
<li class="">test(cloud-client): assert the redirect policy by behaviour against a live server (fixes #12509) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12767" target="_blank" rel="noopener noreferrer" class="">#12767</a></li>
<li class="">fix(search): decline a warm vector tier the accelerator cannot refill (fixes #12102) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12768" target="_blank" rel="noopener noreferrer" class="">#12768</a></li>
<li class="">fix(ci): build without the compiler cache when it cannot be reached (fixes #12770) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12771" target="_blank" rel="noopener noreferrer" class="">#12771</a></li>
<li class="">fix(json): end an array element where serde did, so bare scalars read (fixes #12782) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12785" target="_blank" rel="noopener noreferrer" class="">#12785</a></li>
<li class="">fix(cache): count an invalidation as an eviction, and export the counters before one fires (fixes #12687) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12791" target="_blank" rel="noopener noreferrer" class="">#12791</a></li>
<li class="">fix(ci): ask whether the runner can hold the build before starting one (fixes #12798) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12799" target="_blank" rel="noopener noreferrer" class="">#12799</a></li>
<li class="">fix(ci): size the cayenne property-test ceiling above the pool, not at it (fixes #12811) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12814" target="_blank" rel="noopener noreferrer" class="">#12814</a></li>
<li class="">fix(ci): bound every merge-queue-required job with timeout-minutes by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12817" target="_blank" rel="noopener noreferrer" class="">#12817</a></li>
<li class="">deps: bump datafusion-table-providers to 894e279 (fixes #12585) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12663" target="_blank" rel="noopener noreferrer" class="">#12663</a></li>
<li class="">fix(ci): take stale build output off the runners, not just report a full one (fixes #12800) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12801" target="_blank" rel="noopener noreferrer" class="">#12801</a></li>
<li class="">fix(cayenne): give the Turso metastore sidecars one pool over cayenne.db (fixes #12727) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12804" target="_blank" rel="noopener noreferrer" class="">#12804</a></li>
<li class="">fix(deps): drop the unreferenced ctor dev-dependency from data_components (fixes #12664) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12819" target="_blank" rel="noopener noreferrer" class="">#12819</a></li>
<li class="">fix(ci): decline a verdict when the sign-off run itself was signalled (fixes #12710) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12724" target="_blank" rel="noopener noreferrer" class="">#12724</a></li>
<li class="">fix(postgres): hold a resuming shared slot's ack floor for tables with no member by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12676" target="_blank" rel="noopener noreferrer" class="">#12676</a></li>
<li class="">refactor(layering): split the table-provider layers out of runtime by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12661" target="_blank" rel="noopener noreferrer" class="">#12661</a></li>
<li class="">build(deps): bump the github-actions-dependencies group across 3 directories with 7 updates 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/12842" target="_blank" rel="noopener noreferrer" class="">#12842</a></li>
<li class="">fix(spiced): make the crash handler 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/12834" target="_blank" rel="noopener noreferrer" class="">#12834</a></li>
<li class="">fix(catalogs): apply the Cayenne catalog's include and exclude patterns (fixes #12766) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12833" target="_blank" rel="noopener noreferrer" class="">#12833</a></li>
<li class="">fix(search): decide a compound index's write fatality per half, not by OR (fixes #12826) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12828" target="_blank" rel="noopener noreferrer" class="">#12828</a></li>
<li class="">feat(cloud): organization context for spice cloud 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/12515" target="_blank" rel="noopener noreferrer" class="">#12515</a></li>
<li class="">perf(postgres catalog): skip metadata queries for schemas no include pattern can reach by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12651" target="_blank" rel="noopener noreferrer" class="">#12651</a></li>
<li class="">bug: S3 vector metadata conversion silently drops filterable metadata (fixes #12240) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12387" target="_blank" rel="noopener noreferrer" class="">#12387</a></li>
<li class="">build(deps): bump nvidia/cuda from 13.3.0-cudnn-runtime-ubuntu24.04 to 13.3.1-cudnn-runtime-ubuntu24.04 in the docker-dependencies group 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/12356" target="_blank" rel="noopener noreferrer" class="">#12356</a></li>
<li class="">fix(runtime): keep serving when the working directory cannot be walked (fixes #6301) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12803" target="_blank" rel="noopener noreferrer" class="">#12803</a></li>
<li class="">fix(connectors): report an object-store timeout as a timeout, not as bad credentials (fixes #12793) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12797" target="_blank" rel="noopener noreferrer" class="">#12797</a></li>
<li class="">test(runtime): say which components were not ready when the wait times out (refs #12396) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12827" target="_blank" rel="noopener noreferrer" class="">#12827</a></li>
<li class="">fix(cayenne): measure tuner memory pressure as unreclaimable demand (fixes #12531) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12623" target="_blank" rel="noopener noreferrer" class="">#12623</a></li>
<li class="">Include v2.1.3 and 2.1.4 in SECURITY.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/12497" target="_blank" rel="noopener noreferrer" class="">#12497</a></li>
<li class="">fix(search): leave the stored rows in place when a delete cannot be applied (fixes #12822) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12825" target="_blank" rel="noopener noreferrer" class="">#12825</a></li>
<li class="">fix(google-genai): resume the SSE scan where it stopped, not at the buffer start (fixes #12689) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12713" target="_blank" rel="noopener noreferrer" class="">#12713</a></li>
<li class="">fix(json): report a malformed JSON array element instead of dropping the rest of the file (fixes #12755) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12777" target="_blank" rel="noopener noreferrer" class="">#12777</a></li>
<li class="">fix(runtime): honour a declared type's precision instead of narrowing it (fixes #12756) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12774" target="_blank" rel="noopener noreferrer" class="">#12774</a></li>
<li class="">fix(cayenne): drop the partition-value guard that key encoding made unreachable (fixes #12616) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12753" target="_blank" rel="noopener noreferrer" class="">#12753</a></li>
<li class="">fix(runtime): pin the catalog-acceleration contract in both feature configurations (fixes #12743) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12752" target="_blank" rel="noopener noreferrer" class="">#12752</a></li>
<li class="">fix(cli): report an answer the model stopped early, instead of printing it as whole (fixes #12596) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12715" target="_blank" rel="noopener noreferrer" class="">#12715</a></li>
<li class="">fix(runtime): scope query jobs and active queries to the principal that submitted them by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12841" target="_blank" rel="noopener noreferrer" class="">#12841</a></li>
<li class="">Compute all <code>metrics@k</code> for all <code>0 &lt; k &lt;= n</code> during search quality metrics. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12521" target="_blank" rel="noopener noreferrer" class="">#12521</a></li>
<li class="">task: Add a <code>truncate</code> to huggingface and file embedding providers by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12620" target="_blank" rel="noopener noreferrer" class="">#12620</a></li>
<li class="">fix(cache): never serve a result whose tables changed after it read them by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12703" target="_blank" rel="noopener noreferrer" class="">#12703</a></li>
<li class="">test(cayenne): cover datalake-tier statistics, pruning, and promotion triggers by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12847" target="_blank" rel="noopener noreferrer" class="">#12847</a></li>
<li class="">docs(ci): warn that re-running enforce-pull-with-spice replays a stale payload (fixes #12809) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12810" target="_blank" rel="noopener noreferrer" class="">#12810</a></li>
<li class="">fix(cayenne): bound the maintained-aggregate index by memory budget, and let a stale registry recover by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12573" target="_blank" rel="noopener noreferrer" class="">#12573</a></li>
<li class="">fix(runtime): only initialize accelerators for the datasets a reload applies by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12872" target="_blank" rel="noopener noreferrer" class="">#12872</a></li>
<li class="">feat: promote BYOC and Cloud Connect changes to trunk by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12852" target="_blank" rel="noopener noreferrer" class="">#12852</a></li>
<li class="">fix(flight): resolve per-request settings from the live app by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12873" target="_blank" rel="noopener noreferrer" class="">#12873</a></li>
<li class="">fix(cli): keep polling when the token exchange has not seen the auth code yet by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12871" target="_blank" rel="noopener noreferrer" class="">#12871</a></li>
<li class="">feat(cayenne): inline a small whole-table refresh into the 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/12367" target="_blank" rel="noopener noreferrer" class="">#12367</a></li>
<li class="">ci: upgrade spiceio setup action to v0.8.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/12885" target="_blank" rel="noopener noreferrer" class="">#12885</a></li>
<li class="">fix(runtime): measure the CDC prefetch backlog, and stop its byte counter wrapping by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12675" target="_blank" rel="noopener noreferrer" class="">#12675</a></li>
<li class="">fix(turso): keep a reloaded file-accelerated dataset queryable by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12882" target="_blank" rel="noopener noreferrer" class="">#12882</a></li>
<li class="">fix(query): preserve expression ordering across partition wrappers by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12854" target="_blank" rel="noopener noreferrer" class="">#12854</a></li>
<li class="">fix(runtime): report every start-time-only <code>runtime.*</code> section a reload changes by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12874" target="_blank" rel="noopener noreferrer" class="">#12874</a></li>
<li class="">fix(search): handle null embeddings in vector writes and JIT 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/12855" target="_blank" rel="noopener noreferrer" class="">#12855</a></li>
<li class="">test(embeddings): truncate over-length inputs in the MiniLM embed 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/12856" target="_blank" rel="noopener noreferrer" class="">#12856</a></li>
<li class="">fix(search): Improve search benchmarking DX and fix some vector index names by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12892" target="_blank" rel="noopener noreferrer" class="">#12892</a></li>
<li class="">test(search): dispatch all MTEB search 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/12850" target="_blank" rel="noopener noreferrer" class="">#12850</a></li>
<li class="">fix(runtime): stop a superseded scheduler incarnation from claiming the heartbeat key by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12851" target="_blank" rel="noopener noreferrer" class="">#12851</a></li>
<li class="">fix: Ensure OTel ingest materializes missing/null dimension columns by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/12087" target="_blank" rel="noopener noreferrer" class="">#12087</a></li>
<li class="">feat(cloud-connect): apply a component-only Spicepod deployment in place by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12895" target="_blank" rel="noopener noreferrer" class="">#12895</a></li>
<li class="">feat(cli): typed login sessions and explicit connect organization selection by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12912" target="_blank" rel="noopener noreferrer" class="">#12912</a></li>
<li class="">refactor: make each table wrapper a typed layer that answers where a walk goes by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12891" target="_blank" rel="noopener noreferrer" class="">#12891</a></li>
<li class="">feat(runtime): put every query's trace id on its log records by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12610" target="_blank" rel="noopener noreferrer" class="">#12610</a></li>
<li class="">feat(cayenne): bound the SUM of the per-table PK keyset caches by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12802" target="_blank" rel="noopener noreferrer" class="">#12802</a></li>
<li class="">fix(cache): read and expire a Pingora entry under one hold of its shard (fixes #12832) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12839" target="_blank" rel="noopener noreferrer" class="">#12839</a></li>
<li class="">fix: Update Search integration test snapshots by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12707" target="_blank" rel="noopener noreferrer" class="">#12707</a></li>
<li class="">fix(runtime): invalidate localpod children's cached results on parent refresh by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12897" target="_blank" rel="noopener noreferrer" class="">#12897</a></li>
<li class="">fix(cayenne): use valid snapshot IDs for deferred appends by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12853" target="_blank" rel="noopener noreferrer" class="">#12853</a></li>
<li class="">fix(ci): New branch for each <code>push-snap-changes</code> (only affects integration_search.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/12684" target="_blank" rel="noopener noreferrer" class="">#12684</a></li>
<li class="">fix(search): make chunked embedding and offset columns nullable (#12778) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12783" target="_blank" rel="noopener noreferrer" class="">#12783</a></li>
<li class="">feat(cayenne): charge scan materialization to the query memory pool by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12759" target="_blank" rel="noopener noreferrer" class="">#12759</a></li>
<li class="">fix(cache): run the Pingora invalidation scan off the calling runtime worker (fixes #12806) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12808" target="_blank" rel="noopener noreferrer" class="">#12808</a></li>
<li class="">fix(cache): count the removals the Pingora engine performs itself (fixes #12792) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12830" target="_blank" rel="noopener noreferrer" class="">#12830</a></li>
<li class="">fix(cayenne): reserve append sequence for partitioned upsert appends (#12779) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12784" target="_blank" rel="noopener noreferrer" class="">#12784</a></li>
<li class="">test(cayenne): prove the keyset degrade releases each shard as it converts by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12790" target="_blank" rel="noopener noreferrer" class="">#12790</a></li>
<li class="">perf(postgres catalog): resolve a schema's table schemas in one query (#12106) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12886" target="_blank" rel="noopener noreferrer" class="">#12886</a></li>
<li class="">fix(vortex): expose segment cache metrics on scrape by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12944" target="_blank" rel="noopener noreferrer" class="">#12944</a></li>
<li class="">refactor: point connector imports at the crates that actually own them by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12925" target="_blank" rel="noopener noreferrer" class="">#12925</a></li>
<li class="">fix(postgres): rebuild the acceleration when a replication slot's history is gone by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12922" target="_blank" rel="noopener noreferrer" class="">#12922</a></li>
<li class="">fix(cayenne)!: only an explicit <code>cayenne_tuning: adaptive</code> enables the closed loop by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12949" target="_blank" rel="noopener noreferrer" class="">#12949</a></li>
<li class="">fix(dev-tools): show merge-queue and conflict state as labels in scripts/signoff mine by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12924" target="_blank" rel="noopener noreferrer" class="">#12924</a></li>
<li class="">test: cover warm-index delete paths across backends (#11964) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12635" target="_blank" rel="noopener noreferrer" class="">#12635</a></li>
<li class="">fix(cayenne): fractional proptest scaling + batch timestamp-partition test inserts by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12796" target="_blank" rel="noopener noreferrer" class="">#12796</a></li>
<li class="">Helpful tool to track what users/bots have got done lately by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12603" target="_blank" rel="noopener noreferrer" class="">#12603</a></li>
<li class="">Release notes housekeeping by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12977" target="_blank" rel="noopener noreferrer" class="">#12977</a></li>
<li class="">build(deps): bump serde_with from 3.20.0 to 3.21.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/11969" target="_blank" rel="noopener noreferrer" class="">#11969</a></li>
<li class="">refactor: make runtime's re-export shims crate-visible by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12969" target="_blank" rel="noopener noreferrer" class="">#12969</a></li>
<li class="">fix(runtime): surface OTel metric tables with duplicate columns, and count unsupported metric types as rejected by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/12923" target="_blank" rel="noopener noreferrer" class="">#12923</a></li>
<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/12979" target="_blank" rel="noopener noreferrer" class="">#12979</a></li>
<li class="">Make <code>signoff.yml</code> more searchable. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12392" target="_blank" rel="noopener noreferrer" class="">#12392</a></li>
<li class="">bug: Support search UDTFs in SQL function 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/12919" target="_blank" rel="noopener noreferrer" class="">#12919</a></li>
<li class="">docs: document the stacked-PR workflow, with a tested restack helper by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12951" target="_blank" rel="noopener noreferrer" class="">#12951</a></li>
<li class="">fix(llms): fall back to pytorch_model.bin for embeddings without safetensors by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12971" target="_blank" rel="noopener noreferrer" class="">#12971</a></li>
<li class="">feat(monitoring): improve the Datadog dashboard for multi-replica and Kubernetes deployments by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12972" target="_blank" rel="noopener noreferrer" class="">#12972</a></li>
<li class="">Charge the query memory pool for concurrent Vortex split decodes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12940" target="_blank" rel="noopener noreferrer" class="">#12940</a></li>
<li class="">docs(release-notes): write release notes in Simplified Technical English by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12947" target="_blank" rel="noopener noreferrer" class="">#12947</a></li>
<li class="">refactor: narrow the DataConnector trait off the runtime's types by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12993" target="_blank" rel="noopener noreferrer" class="">#12993</a></li>
<li class="">fix(cayenne): compact a DDL-created partition on an interval, not only on write (fixes #12617) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12757" target="_blank" rel="noopener noreferrer" class="">#12757</a></li>
<li class="">fix(cayenne): hand out a pooled Turso connection in autocommit (refs #12820) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12821" target="_blank" rel="noopener noreferrer" class="">#12821</a></li>
<li class="">fix: fail the lint gate on a source file no crate root declares (fixes #12737) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12744" target="_blank" rel="noopener noreferrer" class="">#12744</a></li>
<li class="">fix(search): stage a full refresh of the memory vector tier, so dropped rows leave it (refs #12413) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12823" target="_blank" rel="noopener noreferrer" class="">#12823</a></li>
<li class="">fix(graphql): keep the configured schema when a page has no rows (fixes #13004) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13016" target="_blank" rel="noopener noreferrer" class="">#13016</a></li>
<li class="">fix(runtime): register task_history before embeddings/rerankers load by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12978" target="_blank" rel="noopener noreferrer" class="">#12978</a></li>
<li class="">test(postgres): converge the catalog on source DDL, and warn when it selects nothing by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12988" target="_blank" rel="noopener noreferrer" class="">#12988</a></li>
<li class="">fix(cayenne): budget for catalogs in the Cayenne memory classification by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13027" target="_blank" rel="noopener noreferrer" class="">#13027</a></li>
<li class="">fix(cayenne): hold primary keys committed while the existence index is checked out by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/13019" target="_blank" rel="noopener noreferrer" class="">#13019</a></li>
<li class="">feat(search): push SQL filters down into tantivy full-text 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/12812" target="_blank" rel="noopener noreferrer" class="">#12812</a></li>
<li class="">fix(cayenne): serve the maintained count Inexact while its delta is queued (fixes #12824) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12829" target="_blank" rel="noopener noreferrer" class="">#12829</a></li>
<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/13060" target="_blank" rel="noopener noreferrer" class="">#13060</a></li>
<li class="">fix(testoperator benchmarks): benchmark 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/13012" target="_blank" rel="noopener noreferrer" class="">#13012</a></li>
<li class="">fix(runtime): stop query_active_count drifting up when queries share a request (fixes #12883) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13034" target="_blank" rel="noopener noreferrer" class="">#13034</a></li>
<li class="">chore(deps): bump model2vec-rs for fast WordPiece tokenizer by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12986" target="_blank" rel="noopener noreferrer" class="">#12986</a></li>
<li class="">ci(cayenne-doc): render diagrams locally with mermaid-cli, and fix the diagram that has been failing the build for a month by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13063" target="_blank" rel="noopener noreferrer" class="">#13063</a></li>
<li class="">feat(monitoring): improve results cache panels on the Datadog dashboard by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/13066" target="_blank" rel="noopener noreferrer" class="">#13066</a></li>
<li class="">feat(cayenne)!: one process-wide Vortex segment cache instead of a cache per table by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12983" target="_blank" rel="noopener noreferrer" class="">#12983</a></li>
<li class="">fix(connectors): keep the projected schema when a query returns no rows (fixes #13015) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13078" target="_blank" rel="noopener noreferrer" class="">#13078</a></li>
<li class="">fix(deps): bump the datafusion pin past the merged unparser fixes (fixes #12406) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13083" target="_blank" rel="noopener noreferrer" class="">#13083</a></li>
<li class="">fix(cache): compact a sliced result before caching it (fixes #12921) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13043" target="_blank" rel="noopener noreferrer" class="">#13043</a></li>
<li class="">refactor(cdc): give the sidecar checkpoint stores a below-runtime interface by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13045" target="_blank" rel="noopener noreferrer" class="">#13045</a></li>
<li class="">fix(cayenne): re-baseline the maintained row count when a promotion folds a delete tombstone (fixes #12846) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/12998" target="_blank" rel="noopener noreferrer" class="">#12998</a></li>
<li class="">fix(acceleration): stop an engine-required type rewrite reading as a stale acceleration schema (fixes #13014) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13074" target="_blank" rel="noopener noreferrer" class="">#13074</a></li>
<li class="">fix(udfs): return NULL for a vector distance that is not defined (refs #11263) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13091" target="_blank" rel="noopener noreferrer" class="">#13091</a></li>
<li class="">fix(cayenne): refuse a data directory that contains the metastore (fixes #13055) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13101" target="_blank" rel="noopener noreferrer" class="">#13101</a></li>
<li class="">fix(json): report content after a JSON array instead of dropping it (fixes #12786) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13097" target="_blank" rel="noopener noreferrer" class="">#13097</a></li>
<li class="">fix(runtime): bound the spicepod apply so an unloadable dataset cannot wedge it (fixes #12862) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13095" target="_blank" rel="noopener noreferrer" class="">#13095</a></li>
<li class="">fix(catalogs): apply the Glue catalog's exclude patterns (fixes #12634) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13103" target="_blank" rel="noopener noreferrer" class="">#13103</a></li>
<li class="">fix(metrics): make component metrics and 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/13094" target="_blank" rel="noopener noreferrer" class="">#13094</a></li>
<li class="">feat(cache)!: ship the Pingora cache engine as an Enterprise-only 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/13000" target="_blank" rel="noopener noreferrer" class="">#13000</a></li>
<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/13056" target="_blank" rel="noopener noreferrer" class="">#13056</a></li>
<li class="">fix(postgres): compare CDC positions against what the slot can stream, not what it retains by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12990" target="_blank" rel="noopener noreferrer" class="">#12990</a></li>
<li class="">docs(cayenne): compress the changelog, and give it a rule for what earns a row by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13067" target="_blank" rel="noopener noreferrer" class="">#13067</a></li>
<li class="">test: remove a test's container when it is done with it, including on failure by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13123" target="_blank" rel="noopener noreferrer" class="">#13123</a></li>
<li class="">fix(flight): record one metric sample per Flight RPC (fixes #12844) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13112" target="_blank" rel="noopener noreferrer" class="">#13112</a></li>
<li class="">feat(drasi): forward CDC changes and runtime tables to a Drasi source (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/12653" target="_blank" rel="noopener noreferrer" class="">#12653</a></li>
<li class="">fix(bench): time the engine instead of the results cache, and validate ClickBench by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/13150" target="_blank" rel="noopener noreferrer" class="">#13150</a></li>
<li class="">refactor(connector): retype the DataConnector surface to DatasetSpec by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13096" target="_blank" rel="noopener noreferrer" class="">#13096</a></li>
<li class="">bug: SQL-tier function body does not support named arguments (=&gt;) for search UDTFs (fixes #12898) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12920" target="_blank" rel="noopener noreferrer" class="">#12920</a></li>
<li class="">fix(cache): compact the sliced and wide results that compaction previously skipped by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/13176" target="_blank" rel="noopener noreferrer" class="">#13176</a></li>
<li class="">docs(stacked-prs): correct when a restack forfeits the sign-off by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13130" target="_blank" rel="noopener noreferrer" class="">#13130</a></li>
<li class="">fix(postgres): load a provably empty CDC acceleration through its snapshot bootstrap by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13175" target="_blank" rel="noopener noreferrer" class="">#13175</a></li>
<li class="">fix(cayenne): keep Arrow timestamp units (Vortex supports ns) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/13180" target="_blank" rel="noopener noreferrer" class="">#13180</a></li>
<li class="">Cloud Connect: enrollment and identity foundation by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13181" target="_blank" rel="noopener noreferrer" class="">#13181</a></li>
<li class="">refactor(model): give the model-provider contracts a home below llms by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13201" target="_blank" rel="noopener noreferrer" class="">#13201</a></li>
<li class="">Fix runtime lint with zero 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/13208" target="_blank" rel="noopener noreferrer" class="">#13208</a></li>
<li class="">fix(benchmarks): BigQuery + Snowflake fixes + updated 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/13136" target="_blank" rel="noopener noreferrer" class="">#13136</a></li>
<li class="">Revert "fix(search): decline a warm vector tier the accelerator cannot refill (fixes #12102)" (#12768) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/13041" target="_blank" rel="noopener noreferrer" class="">#13041</a></li>
<li class="">fix(snapshots): don't bootstrap the snapshot file_create just discarded by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/13179" target="_blank" rel="noopener noreferrer" class="">#13179</a></li>
<li class="">Declare the CPU entitlement to Vortex at 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/13173" target="_blank" rel="noopener noreferrer" class="">#13173</a></li>
<li class="">fix(mysql): fix net_write_timeout session syntax and extend transient replication errors by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/13178" target="_blank" rel="noopener noreferrer" class="">#13178</a></li>
<li class="">fix(postgres): classify EOF and server termination errors as transient in CDC replication by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/13163" target="_blank" rel="noopener noreferrer" class="">#13163</a></li>
<li class="">feat(testoperator): support customer-supplied datasets in 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/12982" target="_blank" rel="noopener noreferrer" class="">#12982</a></li>
<li class="">Add PDF page splitter and FinanceBench staging job (#12858) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12984" target="_blank" rel="noopener noreferrer" class="">#12984</a></li>
<li class="">fix(cayenne): frame the persisted PK bloom with the probe function that filled it (fixes #13137) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13153" target="_blank" rel="noopener noreferrer" class="">#13153</a></li>
<li class="">refactor(layering): move the connectors below the runtime by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13166" target="_blank" rel="noopener noreferrer" class="">#13166</a></li>
<li class="">feat(cli): manage the Cloud Connect service with launchd on macOS by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13203" target="_blank" rel="noopener noreferrer" class="">#13203</a></li>
<li class="">Support local rerankers from <code>text-embeddings-inference</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/12929" target="_blank" rel="noopener noreferrer" class="">#12929</a></li>
<li class="">fix(catalog): make the PostgreSQL catalog's errors and warnings actionable by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13199" target="_blank" rel="noopener noreferrer" class="">#13199</a></li>
<li class="">fix(cloud-connect): look again when a lock create reports the entry missing by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13231" target="_blank" rel="noopener noreferrer" class="">#13231</a></li>
<li class="">Skip DynamoDB in scheduled benchmarks by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/13222" target="_blank" rel="noopener noreferrer" class="">#13222</a></li>
<li class="">Populate the file metadata cache with Vortex footers at write time by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/13228" target="_blank" rel="noopener noreferrer" class="">#13228</a></li>
<li class="">perf(cayenne): give the PK filter a cache-line layout, and the bit count it asks for by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13219" target="_blank" rel="noopener noreferrer" class="">#13219</a></li>
<li class="">fix(mysql): rebuild a purged-position acceleration atomically instead of emptying it (fixes #12967) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13023" target="_blank" rel="noopener noreferrer" class="">#13023</a></li>
<li class="">fix(cloud-connect): heartbeat restart-required, attachment by app id, and this crate's integration tests in the gate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13234" target="_blank" rel="noopener noreferrer" class="">#13234</a></li>
<li class="">fix(search): join all of a dataset's vector indexes on one VectorScanTableProvider by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/13209" target="_blank" rel="noopener noreferrer" class="">#13209</a></li>
<li class="">Validate vector search parameters before SQL query by <a href="https://github.com/lesbass" target="_blank" rel="noopener noreferrer" class="">@lesbass</a> in <a href="https://github.com/spiceai/spiceai/pull/12253" target="_blank" rel="noopener noreferrer" class="">#12253</a></li>
<li class="">feat(helm): support customizing Deployment strategy and StatefulSet updateStrategy by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/13249" target="_blank" rel="noopener noreferrer" class="">#13249</a></li>
<li class="">fix(postgres): recover from a replication slot lost while streaming, and state what each slot costs by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13221" target="_blank" rel="noopener noreferrer" class="">#13221</a></li>
<li class="">fix(cayenne): stop a partitioned acceleration reporting a schema change it never applied (fixes #12999) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13057" target="_blank" rel="noopener noreferrer" class="">#13057</a></li>
<li class="">feat(cloud-connect): name the local spicepod a cloud-managed instance serves or ignores by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13262" target="_blank" rel="noopener noreferrer" class="">#13262</a></li>
<li class="">fix(snowflake): keep NUMBER precision and scale during schema discovery by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13272" target="_blank" rel="noopener noreferrer" class="">#13272</a></li>
<li class="">fix(secrets): check secret references where the components resolve them by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/13265" target="_blank" rel="noopener noreferrer" class="">#13265</a></li>
<li class="">docs(criteria): sign off the PostgreSQL Catalog Connector at Beta by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13235" target="_blank" rel="noopener noreferrer" class="">#13235</a></li>
<li class="">fix(cloud-connect): resolve locked service state through the retained directory descriptor (fixes #13204) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/13292" target="_blank" rel="noopener noreferrer" class="">#13292</a></li>
<li class="">chore(deps): upgrade iceberg-rust to v0.10.0 by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/13189" target="_blank" rel="noopener noreferrer" class="">#13189</a></li>
<li class="">fix(cloud-connect): fix Windows build of identity state-file helpers by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/13308" target="_blank" rel="noopener noreferrer" class="">#13308</a></li>
<li class="">fix(cayenne): normalize append de-duplication types by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/13200" target="_blank" rel="noopener noreferrer" class="">#13200</a></li>
<li class="">feat(cli): unify Spice Cloud enrollment and service workflows by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13326" target="_blank" rel="noopener noreferrer" class="">#13326</a></li>
<li class="">feat(postgres): native upsert delivery for durable write-back by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/13323" target="_blank" rel="noopener noreferrer" class="">#13323</a></li>
<li class="">feat(cli): create an unattached Cloud Connect project by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/13333" target="_blank" rel="noopener noreferrer" class="">#13333</a></li>
<li class="">fix(cayenne): exclude protected snapshots above the delete fence from subset compaction by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/13343" target="_blank" rel="noopener noreferrer" class="">#13343</a></li>
<li class="">fix(cli): resolve a Cloud Connect project's data-plane region from its 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/13370" target="_blank" rel="noopener noreferrer" class="">#13370</a></li>
<li class="">fix(cli): keep a granted Spice Cloud login when the identity endpoint is silent by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/13376" target="_blank" rel="noopener noreferrer" class="">#13376</a></li>
<li class="">fix(duckdb): fix concurrent-query failures after a replace_file swap with multiple DuckDB files by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/13383" target="_blank" rel="noopener noreferrer" class="">#13383</a></li>
</ul>
<p>*<strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.1.0...v2.2.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.1.0...v2.2.0</a></p>]]></content:encoded>
            <category>release</category>
            <category>CDC</category>
            <category>mysql</category>
            <category>PostgreSQL</category>
            <category>search</category>
            <category>BYOC</category>
            <category>Debezium Kafka</category>
            <category>Observability</category>
            <category>Dashboard</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.1.5 (Aug 12, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.1.5</link>
            <guid>https://spiceai.org/releases/v2.1.5</guid>
            <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.1.5 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v2.1.5 is now available! 🛠️</p>
<p>Spice v2.1.5 is a patch release focused on dependable cached data and predictable operation under load. Cached queries now reflect data changes more reliably, Cayenne workloads stay within configured memory limits, health checks remain responsive while cached results are updated, and cache dashboards provide a more complete view of activity.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v215">What's New in v2.1.5<a href="https://spiceai.org/releases/v2.1.5#whats-new-in-v215" class="hash-link" aria-label="Direct link to What's New in v2.1.5" title="Direct link to What's New in v2.1.5" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cached-queries-stay-fresh-as-data-changes">Cached Queries Stay Fresh as Data Changes<a href="https://spiceai.org/releases/v2.1.5#cached-queries-stay-fresh-as-data-changes" class="hash-link" aria-label="Direct link to Cached Queries Stay Fresh as Data Changes" title="Direct link to Cached Queries Stay Fresh as Data Changes" translate="no">​</a></h3>
<p>Cached results are now cleared reliably after refreshes, writes, retention changes, and updates to dependent local datasets. Expired entries are removed promptly, and entries for data that is no longer part of a Cayenne dataset are not reused by later queries.</p>
<p>These improvements prevent a completed data change from being followed by an older cached answer. No configuration changes are required.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="more-predictable-cayenne-behavior-under-heavy-load">More Predictable Cayenne Behavior Under Heavy Load<a href="https://spiceai.org/releases/v2.1.5#more-predictable-cayenne-behavior-under-heavy-load" class="hash-link" aria-label="Direct link to More Predictable Cayenne Behavior Under Heavy Load" title="Direct link to More Predictable Cayenne Behavior Under Heavy Load" translate="no">​</a></h3>
<p>Cayenne now keeps track of the memory needed to prepare query results, including when several parts of a query are prepared at once. Multiple accelerated tables also share available memory instead of each planning as though it were the only table in the deployment.</p>
<p>Large and concurrent workloads are therefore less likely to exhaust the available memory. When a query cannot fit within the configured limit, it fails cleanly instead of putting the entire service at risk. Operators can also limit how much work one dataset does at once when it needs a smaller memory footprint, without slowing every query.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="health-checks-remain-responsive-during-cache-updates">Health Checks Remain Responsive During Cache Updates<a href="https://spiceai.org/releases/v2.1.5#health-checks-remain-responsive-during-cache-updates" class="hash-link" aria-label="Direct link to Health Checks Remain Responsive During Cache Updates" title="Direct link to Health Checks Remain Responsive During Cache Updates" translate="no">​</a></h3>
<p>Refreshing or writing a dataset with many cached results no longer holds up Spice while it finds old answers that need to be cleared. Health checks and other requests can continue during this work, reducing avoidable service restarts under load.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="more-trustworthy-cache-dashboards">More Trustworthy Cache Dashboards<a href="https://spiceai.org/releases/v2.1.5#more-trustworthy-cache-dashboards" class="hash-link" aria-label="Direct link to More Trustworthy Cache Dashboards" title="Direct link to More Trustworthy Cache Dashboards" translate="no">​</a></h3>
<p>Cache dashboards now show total space, space in use, stored results, requests, and successful reuse whenever the dashboard is refreshed, including for new or lightly used datasets. Counts for expired results, automatic size cleanup, and cleanup after data changes are also reported consistently, so a zero value represents no activity rather than missing information.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.1.5#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.1.5#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.1.5#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.1.5#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.1.5, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.1.5</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.1.5</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.1.5</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.1.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.1.5#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">fix: arrow IndexedMemTable serves stale results after DML/retention/sync (fixes #11262) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11532" target="_blank" rel="noopener noreferrer" class="">#11532</a></li>
<li class="">fix(cache): evict the Pingora cache down to max_size instead of only recording it (fixes #12688) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12694" target="_blank" rel="noopener noreferrer" class="">#12694</a></li>
<li class="">fix(cache): count an invalidation as an eviction, and export the counters before one fires (fixes #12687) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12791" target="_blank" rel="noopener noreferrer" class="">#12791</a></li>
<li class="">fix(cache): never serve a result whose tables changed after it read them by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12703" target="_blank" rel="noopener noreferrer" class="">#12703</a></li>
<li class="">Remove unnecessary allocations from results-cache and hot conversion paths by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11895" target="_blank" rel="noopener noreferrer" class="">#11895</a></li>
<li class="">fix(cache): read and expire a Pingora entry under one hold of its shard (fixes #12832) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12839" target="_blank" rel="noopener noreferrer" class="">#12839</a></li>
<li class="">fix(runtime): invalidate localpod children's cached results on parent refresh by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/12897" target="_blank" rel="noopener noreferrer" class="">#12897</a></li>
<li class="">fix(cache): run the Pingora invalidation scan off the calling runtime worker (fixes #12806) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12808" target="_blank" rel="noopener noreferrer" class="">#12808</a></li>
<li class="">fix(cache): count the removals the Pingora engine performs itself (fixes #12792) by <a href="https://github.com/grokspice" target="_blank" rel="noopener noreferrer" class="">@grokspice</a> in <a href="https://github.com/spiceai/spiceai/pull/12830" target="_blank" rel="noopener noreferrer" class="">#12830</a></li>
<li class="">feat(cayenne): charge scan materialization to the query memory pool by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12759" target="_blank" rel="noopener noreferrer" class="">#12759</a></li>
<li class="">feat(cayenne): bound the SUM of the per-table PK keyset caches by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12802" target="_blank" rel="noopener noreferrer" class="">#12802</a></li>
<li class="">Charge the query memory pool for concurrent Vortex split decodes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12940" target="_blank" rel="noopener noreferrer" class="">#12940</a></li>
<li class="">fix(vortex): invalidate retired segment cache entries by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12943" target="_blank" rel="noopener noreferrer" class="">#12943</a></li>
<li class="">fix(vortex): expose segment cache metrics on scrape by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12944" target="_blank" rel="noopener noreferrer" class="">#12944</a></li>
</ul>
<p>*<strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.1.4...v2.1.5" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.1.4...v2.1.5</a></p>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>caching</category>
            <category>Dashboard</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.1.4 (Aug 5, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.1.4</link>
            <guid>https://spiceai.org/releases/v2.1.4</guid>
            <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.1.4 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v2.1.4 is now available! 🛠️</p>
<p>Spice v2.1.4 is a patch release that improves DuckDB acceleration and runtime stability: datasets with UTC timestamp columns, such as Iceberg tables, now load successfully when accelerated with DuckDB, retention policies run reliably, and the runtime is more resilient under heavy query load.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v214">What's New in v2.1.4<a href="https://spiceai.org/releases/v2.1.4#whats-new-in-v214" class="hash-link" aria-label="Direct link to What's New in v2.1.4" title="Direct link to What's New in v2.1.4" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-acceleration-works-with-iceberg-timestamps">DuckDB Acceleration Works with Iceberg Timestamps<a href="https://spiceai.org/releases/v2.1.4#duckdb-acceleration-works-with-iceberg-timestamps" class="hash-link" aria-label="Direct link to DuckDB Acceleration Works with Iceberg Timestamps" title="Direct link to DuckDB Acceleration Works with Iceberg Timestamps" translate="no">​</a></h3>
<p>A dataset with a UTC timestamp column — for example, any Iceberg <code>timestamptz</code> column — could previously fail to load when accelerated with DuckDB, leaving the dataset unhealthy and unqueryable. These datasets now load and become ready normally, with no configuration changes needed.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="reliable-retention-policies-on-duckdb">Reliable Retention Policies on DuckDB<a href="https://spiceai.org/releases/v2.1.4#reliable-retention-policies-on-duckdb" class="hash-link" aria-label="Direct link to Reliable Retention Policies on DuckDB" title="Direct link to Reliable Retention Policies on DuckDB" translate="no">​</a></h3>
<p>Retention policies now apply cleanly on DuckDB-accelerated datasets, including policies that combine a time window with an additional condition. Expired rows are evicted on every retention interval, keeping accelerated data fresh and storage bounded.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="improved-runtime-stability">Improved Runtime Stability<a href="https://spiceai.org/releases/v2.1.4#improved-runtime-stability" class="hash-link" aria-label="Direct link to Improved Runtime Stability" title="Direct link to Improved Runtime Stability" translate="no">​</a></h3>
<p>The runtime is now more robust when queries are cancelled — whether by a client disconnecting, a timeout, or a new refresh superseding an in-flight read. A rare crash in this path has been eliminated.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.1.4#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.1.4#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.1.4#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.1.4#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.1.4, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.1.4</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.1.4</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.1.4</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.1.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.1.4#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">chore(deps): bump datafusion and table-providers for the DuckDB timezone and retention fixes (2.1 backport) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/12546" target="_blank" rel="noopener noreferrer" class="">#12546</a></li>
<li class="">fix(deps): bump the Vortex pin to pick up the task-cancellation 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/12547" target="_blank" rel="noopener noreferrer" class="">#12547</a></li>
</ul>
<p>*<strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.1.3...v2.1.4" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.1.3...v2.1.4</a></p>]]></content:encoded>
            <category>release</category>
            <category>duckdb</category>
            <category>acceleration</category>
            <category>iceberg</category>
            <category>Stability</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.1.3 (Aug 4, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.1.3</link>
            <guid>https://spiceai.org/releases/v2.1.3</guid>
            <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.1.3 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v2.1.3 is now available! 🛠️</p>
<p>Spice v2.1.3 is a patch release focused on resource efficiency: explicit CPU sizing with the new <code>runtime.cpu.cores</code> setting, more query memory for Cayenne deployments, and improved memory and crash diagnostics. It also fixes Cayenne acceleration of Iceberg datasets with <code>timestamptz</code> columns and restores <code>WHERE</code> filters on federated <code>LEFT</code>/<code>RIGHT JOIN</code> queries.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v213">What's New in v2.1.3<a href="https://spiceai.org/releases/v2.1.3#whats-new-in-v213" class="hash-link" aria-label="Direct link to What's New in v2.1.3" title="Direct link to What's New in v2.1.3" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cpu-sizing-with-runtimecpucores">CPU Sizing with <code>runtime.cpu.cores</code><a href="https://spiceai.org/releases/v2.1.3#cpu-sizing-with-runtimecpucores" class="hash-link" aria-label="Direct link to cpu-sizing-with-runtimecpucores" title="Direct link to cpu-sizing-with-runtimecpucores" translate="no">​</a></h3>
<p>The new <code>runtime.cpu.cores</code> setting controls how many cores the runtime targets. Thread pools, query partitioning, and accelerator concurrency are all derived from it.</p>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">cpu</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">cores</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%)">4</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># `auto` (default) detects. Accepts 4, 3.5, 3500m</span><br></div></code></pre></div></div>
<p>Also available as <code>--cpu-cores</code> and <code>SPICE_CPU_CORES</code> (precedence: flag &gt; environment &gt; Spicepod).</p>
<p>This is most useful on large, shared nodes. A pod that sets <code>resources.requests.cpu</code> without a CPU limit exposes no cgroup quota, so the runtime sizes itself for every core on the node rather than its allocated share. Setting the entitlement aligns parallelism and memory footprint with the CPU the pod actually receives.</p>
<p>The effective value, its source, and the derived sizing are logged at startup and exported as the <code>spiced_cpu_budget_cores</code> gauge.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="more-query-memory-for-cayenne-deployments">More Query Memory for Cayenne Deployments<a href="https://spiceai.org/releases/v2.1.3#more-query-memory-for-cayenne-deployments" class="hash-link" aria-label="Direct link to More Query Memory for Cayenne Deployments" title="Direct link to More Query Memory for Cayenne Deployments" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne</a> compaction memory pool is now reserved only for accelerations that can compact into it: file mode with a small-write refresh profile. Other deployments, including <code>refresh_mode: full</code>, keep the full memory limit available to queries — up to 6.4 GiB on a 32 GiB limit, with no configuration change.</p>
<p>Memory budgets are now derived from the process's own cgroup limit rather than total host memory.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="diagnostics">Diagnostics<a href="https://spiceai.org/releases/v2.1.3#diagnostics" class="hash-link" aria-label="Direct link to Diagnostics" title="Direct link to Diagnostics" translate="no">​</a></h3>
<p>Three new gauges report memory in use: <code>query_memory_pool_used_bytes</code>, <code>cayenne_compaction_memory_pool_used_bytes</code>, and <code>process_resident_memory_bytes</code>.</p>
<p>Memory pool refusals now return <code>ResourcesExhausted</code> and HTTP <code>503</code>, distinguishing them from query errors.</p>
<p>Fatal native signals (<code>SIGSEGV</code>, <code>SIGBUS</code>, <code>SIGILL</code>, <code>SIGFPE</code>) report the signal, faulting address, and thread before exit, so a crash can be diagnosed from logs.</p>
<p>Fixed a bug where setting <code>runtime.task_history.enabled: false</code> also disabled every query metric — <code>query_duration_ms</code>, <code>query_execution_duration_ms</code>, <code>query_executions</code>, <code>query_failures</code>, <code>query_returned_rows</code>, and <code>query_returned_bytes</code>. These are now reported regardless of the task history setting.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-acceleration-of-iceberg-timestamptz-columns">Cayenne Acceleration of Iceberg <code>timestamptz</code> Columns<a href="https://spiceai.org/releases/v2.1.3#cayenne-acceleration-of-iceberg-timestamptz-columns" class="hash-link" aria-label="Direct link to cayenne-acceleration-of-iceberg-timestamptz-columns" title="Direct link to cayenne-acceleration-of-iceberg-timestamptz-columns" translate="no">​</a></h3>
<p>Accelerating an Iceberg dataset with a <code>timestamptz</code> column using the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne</a> engine previously failed during the refresh write with an error resolving the time zone <code>+00:00</code>. Iceberg maps every <code>timestamptz</code> column to the fixed-offset Arrow time zone <code>+00:00</code>, which the file writer could not resolve when building column statistics. Fixed-offset time zones (<code>±HH:MM</code>, <code>±HHMM</code>, and <code>±HH</code>) are now resolved wherever time zones are handled, so these datasets accelerate correctly.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="federated-outer-join-filters">Federated Outer Join Filters<a href="https://spiceai.org/releases/v2.1.3#federated-outer-join-filters" class="hash-link" aria-label="Direct link to Federated Outer Join Filters" title="Direct link to Federated Outer Join Filters" translate="no">​</a></h3>
<p>A federated query combining a <code>LEFT JOIN</code> with a <code>WHERE</code> filter on the left table previously returned all rows instead of the filtered rows: when the query was pushed down to the data source or accelerator, the filter was folded into the <code>JOIN ON</code> clause, where it no longer filters the left side (<code>RIGHT JOIN</code> was affected symmetrically). Filters now stay on the side of the join they came from, so these queries return the correct rows.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.1.3#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.1.3#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.1.3#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.1.3#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.1.3, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.1.3</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.1.3</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.1.3</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.1.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.1.3#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">feat(runtime): size every CPU-derived pool from the CPU entitlement by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/12276" target="_blank" rel="noopener noreferrer" class="">#12276</a></li>
<li class="">fix(runtime): carve the Cayenne compaction memory pool only when a dataset can compact into it by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12326" target="_blank" rel="noopener noreferrer" class="">#12326</a></li>
<li class="">fix(runtime): size memory budgets from the process's own cgroup limit by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12263" target="_blank" rel="noopener noreferrer" class="">#12263</a></li>
<li class="">fix(telemetry): read the cgroup CPU quota along the whole cgroup path by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12300" target="_blank" rel="noopener noreferrer" class="">#12300</a></li>
<li class="">feat(runtime): expose the memory numbers that explain an OOM as gauges by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12195" target="_blank" rel="noopener noreferrer" class="">#12195</a></li>
<li class="">fix(runtime): report a memory-pool refusal as ResourcesExhausted and answer it with 503 by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12289" target="_blank" rel="noopener noreferrer" class="">#12289</a></li>
<li class="">fix(cayenne): the write-concurrency raise must respect the memory brake by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12317" target="_blank" rel="noopener noreferrer" class="">#12317</a></li>
<li class="">feat(spiced): report fatal signals before exit by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12334" target="_blank" rel="noopener noreferrer" class="">#12334</a></li>
<li class="">fix: report query metrics when task history is disabled by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12227" target="_blank" rel="noopener noreferrer" class="">#12227</a></li>
<li class="">chore(deps): repoint vortex at the 2.1 fixed-offset timezone 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/12455" target="_blank" rel="noopener noreferrer" class="">#12455</a></li>
<li class="">chore(deps): bump datafusion rev for outer-join unparser fix by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/12460" target="_blank" rel="noopener noreferrer" class="">#12460</a></li>
</ul>
<p>*<strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.1.2...v2.1.3" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.1.2...v2.1.3</a></p>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>acceleration</category>
            <category>iceberg</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.1.2 (Jul 28, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.1.2</link>
            <guid>https://spiceai.org/releases/v2.1.2</guid>
            <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.1.2 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v2.1.2 is now available! 🛠️</p>
<p>Spice v2.1.2 is a patch release focused on improving the DuckDB data accelerator. It upgrades the DuckDB engine to v1.5.5 and introduces the <code>on_full_refresh</code> parameter, giving file-mode DuckDB accelerations compact, predictable disk usage across repeated full refreshes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v212">What's New in v2.1.2<a href="https://spiceai.org/releases/v2.1.2#whats-new-in-v212" class="hash-link" aria-label="Direct link to What's New in v2.1.2" title="Direct link to What's New in v2.1.2" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="bounded-duckdb-acceleration-file-growth-with-on_full_refresh">Bounded DuckDB Acceleration File Growth with <code>on_full_refresh</code><a href="https://spiceai.org/releases/v2.1.2#bounded-duckdb-acceleration-file-growth-with-on_full_refresh" class="hash-link" aria-label="Direct link to bounded-duckdb-acceleration-file-growth-with-on_full_refresh" title="Direct link to bounded-duckdb-acceleration-file-growth-with-on_full_refresh" translate="no">​</a></h3>
<p>File-mode <a href="https://spiceai.org/docs/components/data-accelerators/duckdb" target="_blank" rel="noopener noreferrer" class="">DuckDB</a> accelerations using <code>refresh_mode: full</code> now reclaim disk space on every refresh, keeping the database file compact and disk usage predictable for long-running deployments. Each full refresh bulk-loads a fresh copy of the data, and the new <code>on_full_refresh</code> modes ensure the space held by prior copies is returned rather than accumulating in the file.</p>
<p>The new <code>on_full_refresh</code> acceleration parameter controls how disk space is reclaimed after each full refresh:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /data/shared.duckdb</span><br></div><div class="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_full_refresh</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> replace_file </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># default: reuse_file</span><br></div></code></pre></div></div>
<ul>
<li class=""><code>reuse_file</code> (default): Existing behavior — refresh into the existing database file.</li>
<li class=""><code>replace_file</code>: Each full refresh streams data into a fresh staging database file, carries over every other object sharing the file (other datasets' tables, views, indexes, and Spice metadata), checkpoints it, and atomically replaces the configured file. Queries are never interrupted — in-flight queries drain against the old file while new queries see the new file — and space is fully reclaimed on every refresh.</li>
<li class=""><code>checkpoint_file</code>: After each refresh, run a <code>CHECKPOINT</code> in place, escalating to <code>FORCE CHECKPOINT</code> when concurrent transactions block the plain attempt (waiting for in-flight transactions; never aborting them).</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-155">DuckDB 1.5.5<a href="https://spiceai.org/releases/v2.1.2#duckdb-155" class="hash-link" aria-label="Direct link to DuckDB 1.5.5" title="Direct link to DuckDB 1.5.5" translate="no">​</a></h3>
<p>The DuckDB engine is upgraded from v1.5.3 to <a href="https://github.com/duckdb/duckdb/releases/tag/v1.5.5" target="_blank" rel="noopener noreferrer" class="">v1.5.5</a>, bringing the latest upstream stability fixes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.1.2#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.1.2#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.1.2#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.1.2#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.1.2, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.1.2</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.1.2</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.1.2</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.1.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.1.2#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">feat(duckdb): <code>on_full_refresh: replace_file</code> — full refresh into a new database file, atomically replaced by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/12135" target="_blank" rel="noopener noreferrer" class="">#12135</a></li>
<li class="">feat(duckdb): 'on_full_refresh: checkpoint_file' to bound acceleration file growth by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/12139" target="_blank" rel="noopener noreferrer" class="">#12139</a></li>
</ul>
<p>*<strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.1.1...v2.1.2" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.1.1...v2.1.2</a></p>]]></content:encoded>
            <category>release</category>
            <category>duckdb</category>
            <category>acceleration</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.1.1 (Jul 21, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.1.1</link>
            <guid>https://spiceai.org/releases/v2.1.1</guid>
            <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.1.1 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v2.1.1 is now available! 🛠️</p>
<p>Spice v2.1.1 is a patch release focused on reliability and performance. It resolves a possible deadlock that affected datasets with partitioned Cayenne accelerators, caches empty SQL result sets so repeat queries are served from cache, speeds up repeated queries on multi-file datasets, and restores Bedrock embedding provider parameters.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v211">What's New in v2.1.1<a href="https://spiceai.org/releases/v2.1.1#whats-new-in-v211" class="hash-link" aria-label="Direct link to What's New in v2.1.1" title="Direct link to What's New in v2.1.1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-partitioned-dataset-deadlock-fix">Cayenne Partitioned Dataset Deadlock Fix<a href="https://spiceai.org/releases/v2.1.1#cayenne-partitioned-dataset-deadlock-fix" class="hash-link" aria-label="Direct link to Cayenne Partitioned Dataset Deadlock Fix" title="Direct link to Cayenne Partitioned Dataset Deadlock Fix" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne</a> datasets configured with <code>partition_by</code> could deadlock during their initial refresh and never become ready. Non-partitioned tables and small partitioned tables were unaffected. The root cause was a deadlock between the partition routing and the global Vortex encode budget introduced in v2.1.0.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-zero-row-append-refresh-stability">Cayenne Zero-Row Append Refresh Stability<a href="https://spiceai.org/releases/v2.1.1#cayenne-zero-row-append-refresh-stability" class="hash-link" aria-label="Direct link to Cayenne Zero-Row Append Refresh Stability" title="Direct link to Cayenne Zero-Row Append Refresh Stability" translate="no">​</a></h3>
<p>An idle append refresh, one where no source rows are newer than the current <code>max(time_column)</code>, wrote no Vortex files, so the expected snapshot directory was never created. The subsequent <code>fsync</code> on that directory failed with <code>ENOENT</code>, marking the dataset unhealthy. The fix skips the snapshot sequence record and protected-snapshot publish when the write carried no rows.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="caching-of-empty-result-sets">Caching of Empty Result Sets<a href="https://spiceai.org/releases/v2.1.1#caching-of-empty-result-sets" class="hash-link" aria-label="Direct link to Caching of Empty Result Sets" title="Direct link to Caching of Empty Result Sets" translate="no">​</a></h3>
<p>The SQL results cache now stores empty (zero-row) result sets. Queries that legitimately return no rows (e.g. <code>WHERE 1=0</code>, <code>LIMIT 0</code>) are now served from the results cache on subsequent requests instead of being re-executed against the source, reducing planning and query latency for these patterns.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="faster-repeated-queries-on-multi-file-datasets">Faster Repeated Queries on Multi-File Datasets<a href="https://spiceai.org/releases/v2.1.1#faster-repeated-queries-on-multi-file-datasets" class="hash-link" aria-label="Direct link to Faster Repeated Queries on Multi-File Datasets" title="Direct link to Faster Repeated Queries on Multi-File Datasets" translate="no">​</a></h3>
<p>Object store datasets using parquet now cache Parquet footer statistics across queries. This reduces the frequency of Parquet footer parsing during planning, subsequently heavily reducing planning latency for certain query patterns (e.g. <code>COUNT(*)</code>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="embedding-parameter-regression-fixes">Embedding Parameter Regression Fixes<a href="https://spiceai.org/releases/v2.1.1#embedding-parameter-regression-fixes" class="hash-link" aria-label="Direct link to Embedding Parameter Regression Fixes" title="Direct link to Embedding Parameter Regression Fixes" translate="no">​</a></h3>
<p>v2.1.0 introduced explicit definitions across embedding component parameters (i.e. <code>.embeddings[].params</code>). This introduced regressions for AWS Bedrock parameters <code>truncation</code> and <code>truncation_mode</code> that caused panics.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.1.1#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.1.1#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.1.1#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.1.1#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.1.1, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.1.1</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.1.1</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.1.1</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.1.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.1.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">fix(cache): cache empty (zero-row) SQL result sets by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11699" target="_blank" rel="noopener noreferrer" class="">#11699</a></li>
<li class="">fix(cayenne): zero-row append refresh fails with "No such file or directory" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11710" target="_blank" rel="noopener noreferrer" class="">#11710</a></li>
<li class="">feat(file): cache <code>ListingTable</code> file statistics to avoid per-query footer re-parse by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11793" target="_blank" rel="noopener noreferrer" class="">#11793</a></li>
<li class="">fix(embeddings): restore params broken by #10853 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11788" target="_blank" rel="noopener noreferrer" class="">#11788</a></li>
<li class="">fix(cayenne): partitioned datasets deadlock against the global encode budget and never become ready by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11825" target="_blank" rel="noopener noreferrer" class="">#11825</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.1.0...v2.1.1" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.1.0...v2.1.1</a></p>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>caching</category>
            <category>embeddings</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.1.0 (Jul 9, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.1.0</link>
            <guid>https://spiceai.org/releases/v2.1.0</guid>
            <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.1.0 is now available! 🎉]]></description>
            <content:encoded><![CDATA[<p>Spice v2.1.0 is now available! 🎉</p>
<p>Spice v2.1.0 is the next minor release of Spice, headlined by <strong>high-throughput Cayenne CDC</strong>, scaling and resilience improvements to <strong>PostgreSQL logical replication</strong>, expanded <strong>distributed query</strong> with Iceberg catalog scans and broadcast joins, and the upgrade to <strong>DataFusion v54</strong> (including v53), Arrow v58.3, and Vortex v0.74. The release also adds experimental adaptive self-tuning for the Cayenne accelerator, distributed GLM inference, and a range of security, search, and connector improvements.</p>
<p>Highlights in v2.1.0 include:</p>
<ul>
<li class=""><strong><a href="https://spiceai.org/releases/v2.1.0#high-throughput-cayenne-cdc" class="">High-Throughput Cayenne CDC</a></strong> — in-memory CDC tier, dedicated compaction runtime, and write-path optimizations that cut replication lag on high-volume CDC workloads</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.1.0#change-data-capture--htap" class="">PostgreSQL Replication at Scale</a></strong> — multiple <code>changes</code>-mode datasets share a single replication slot, unchanged-TOAST recovery, and resilient reconnects across rolling deploys</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.1.0#distributed-query" class="">Distributed Query</a></strong> — distributed Ballista scans of Iceberg catalog tables, broadcast joins for small dimension tables, and shared scheduler job state with failover</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.1.0#performance--query-engine" class="">DataFusion v54</a></strong> — upgrade to DataFusion v54 (folding in v53), Arrow v58.3, and Vortex v0.74, bringing faster joins, scans, and planning</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.1.0#adaptive-self-tuning-experimental" class="">Adaptive Self-Tuning (Experimental)</a></strong> — opt-in closed-loop tuning and maintained aggregates that adapt Cayenne to hardware, schema, and live workload</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v210">What's New in v2.1.0<a href="https://spiceai.org/releases/v2.1.0#whats-new-in-v210" class="hash-link" aria-label="Direct link to What's New in v2.1.0" title="Direct link to What's New in v2.1.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="high-throughput-cayenne-cdc">High-Throughput Cayenne CDC<a href="https://spiceai.org/releases/v2.1.0#high-throughput-cayenne-cdc" class="hash-link" aria-label="Direct link to High-Throughput Cayenne CDC" title="Direct link to High-Throughput Cayenne CDC" translate="no">​</a></h3>
<p>A major focus of v2.1 is <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Spice Cayenne</a> write-path throughput for change-data-capture (HTAP) workloads:</p>
<ul>
<li class=""><strong>In-Memory CDC Tier</strong>: A new in-memory CDC tier and follow-ups cut replication lag on hot upsert tables, with bounded mem-tier checkpointing and O(1) per-scan deletion views, plus a two-phase off-fence checkpoint on the ingest path.</li>
<li class=""><strong>Dedicated Compaction Runtime</strong>: A dedicated compaction runtime with CDC pipelining and protected snapshots isolates compaction from query and ingest paths, with parallelized deletion-vector writes, per-batch directory-barrier coalescing, and size-aware parallel encode for protected-snapshot compaction.</li>
<li class=""><strong>Incremental Protected Snapshot Compaction</strong>: Incremental compaction of protected snapshots (used in Cayenne's merge-on-read deletion index) reduces disk usage and improves query performance.</li>
<li class=""><strong>Smaller WAL &amp; Metadata-Only Publish</strong>: <code>cayenne_insert_record</code> table IDs are stored as 16-byte raw-UUID BLOBs, cutting CDC WAL volume ~34%; upsert commits publish metadata-only, dropping per-key insert records; transient staged CDC deltas are light-encoded.</li>
<li class=""><strong>Delta-Write Encoding Levels</strong>: A new <code>cayenne_delta_encoding</code> setting (default <code>auto</code>) selects delta-write encoding, and <code>cayenne_compression_strategy: zstd</code> is now fully wired.</li>
<li class=""><strong>In-Memory CDC Sharding</strong>: PK-hash intra-apply sharding parallelizes in-memory CDC apply.</li>
<li class=""><strong>Scan Safety Under Write</strong>: In-flight scans are ref-counted so snapshot GC can't delete Vortex files mid-read; in-RAM scan parallelism, query admission control, and sound scan output ordering improve read behavior under sustained CDC.</li>
</ul>
<p>Delta-write encoding effort and Vortex compression are tunable per accelerator. <code>cayenne_delta_encoding: auto</code> (the default) size-gates fresh CDC/append writes — small deltas use a light scheme and are re-encoded during compaction — or pin an explicit level <code>0..10</code> (<code>7</code> is the full default cascade); <code>cayenne_compression_strategy</code> selects the Vortex compression:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><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></div><div class="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></div><div class="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></div><div class="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></div><div class="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_delta_encoding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> auto </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># 'auto' (default), or pin a level 0..10 (7 = full cascade)</span><span class="token plain"></span><br></div><div class="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%)"># 'btrblocks' (default) or 'zstd'</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="change-data-capture--htap">Change Data Capture &amp; HTAP<a href="https://spiceai.org/releases/v2.1.0#change-data-capture--htap" class="hash-link" aria-label="Direct link to Change Data Capture &amp; HTAP" title="Direct link to Change Data Capture &amp; HTAP" translate="no">​</a></h3>
<p>PostgreSQL logical replication (CDC, <code>refresh_mode: changes</code>, <a href="https://spiceai.org/docs/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">introduced in v2.0</a>) gets significant scaling and resilience work in v2.1:</p>
<ul>
<li class=""><strong>Shared Replication Slot</strong>: Multiple <code>refresh_mode: changes</code> <a href="https://spiceai.org/docs/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a> datasets on the same connection can name the same <code>pg_replication_slot</code> to share a single replication slot, walsender decoder, and publication, with decoded changes multiplexed by <code>(schema, table)</code> to each dataset. This collapses the slot count from one-per-dataset to one — staying well under Postgres's default <code>max_replication_slots = 10</code>.</li>
</ul>
<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"><div 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></div><div 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">public.orders</span><br></div><div class="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></div><div class="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></div><div class="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"> mydb</span><br></div><div class="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_replication_slot</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> spice_cdc </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># shared slot name</span><span class="token plain"></span><br></div><div class="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></div><div class="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></div><div 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">public.customers</span><br></div><div class="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"> customers</span><br></div><div class="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></div><div class="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"> mydb</span><br></div><div class="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_replication_slot</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> spice_cdc </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># same name -&gt; one slot, walsender &amp; publication</span><span class="token plain"></span><br></div><div class="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></div><div class="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></div></code></pre></div></div>
<ul>
<li class=""><strong>Unchanged-TOAST Recovery</strong>: Under <code>REPLICA IDENTITY FULL</code>, when an <code>UPDATE</code> leaves a large TOASTed column unchanged, pgoutput sends an "unchanged" marker; Spice now fills that value from the old tuple — its old value is its current value — so updates no longer error or drop columns. Without an old tuple, the error persists with a hint to enable <code>REPLICA IDENTITY FULL</code>.</li>
<li class=""><strong>Transient Walsender Contention</strong>: Slot-contention errors during rolling deploys — <code>SQLSTATE 55006</code> ("replication slot is active for PID") and <code>53300</code> ("requested standby connections exceeds max_wal_senders") — are now classified as transient and retried with backoff instead of fatally terminating the stream. Replication connections are also released at shutdown start (not process exit), freeing walsender seats for replacement instances.</li>
<li class=""><strong>Strict CDC Param Validation</strong>: PostgreSQL CDC parameters are strictly validated rather than silently defaulted.</li>
<li class=""><strong>Debezium Schema Evolution</strong>: Fixes for Debezium schema-evolution support, including tombstone-message handling and sign-extension of minimal-width base64 decimals.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="distributed-query">Distributed Query<a href="https://spiceai.org/releases/v2.1.0#distributed-query" class="hash-link" aria-label="Direct link to Distributed Query" title="Direct link to Distributed Query" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/features/distributed-query" target="_blank" rel="noopener noreferrer" class="">Distributed Query</a> gains:</p>
<ul>
<li class=""><strong>Distributed Iceberg Catalog Scans</strong>: Ballista distributes scans of Iceberg catalog tables across executors.</li>
<li class=""><strong>Broadcast Joins</strong>: Small dimension tables are broadcast to executors for distributed joins.</li>
<li class=""><strong>Shared Scheduler Job State with Failover</strong>: Ballista job state is shared so the scheduler can fail over without losing in-flight work.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="performance--query-engine">Performance &amp; Query Engine<a href="https://spiceai.org/releases/v2.1.0#performance--query-engine" class="hash-link" aria-label="Direct link to Performance &amp; Query Engine" title="Direct link to Performance &amp; Query Engine" translate="no">​</a></h3>
<p><a href="https://datafusion.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion</a> is upgraded to <strong>v54</strong>, folding in v53, alongside <strong>Arrow v58.3</strong> and <strong>Vortex v0.74</strong> (with a pin bump adding intra-file decode split and a per-execution kernel cache). Two DataFusion releases land in this upgrade:</p>
<ul>
<li class=""><strong>DataFusion v54</strong> (<a href="https://datafusion.apache.org/blog/2026/06/12/datafusion-54.0.0/" target="_blank" rel="noopener noreferrer" class="">release notes</a>): adds <code>LATERAL</code> joins, SQL lambda functions (<code>x -&gt; expr</code> with <code>array_transform</code>/<code>array_filter</code>/<code>array_any_match</code>), spilling nested-loop joins, and a faster <code>arrow-avro</code> reader. Performance work includes morsel-driven Parquet scans (up to ~2x faster for skewed scans), 20-50x faster sort-merge semi/anti/mark joins, redundant-sort-key pruning, NDV-based cardinality estimation, and <code>inner_product</code>/<code>cosine_distance</code> functions.</li>
<li class=""><strong>DataFusion v53</strong> (<a href="https://datafusion.apache.org/blog/2026/04/02/datafusion-53.0.0/" target="_blank" rel="noopener noreferrer" class="">release notes</a>): adds <code>LIMIT</code>-aware Parquet row-group pruning, broader filter pushdown through joins and <code>UNION</code>, nested-field pushdown (<code>get_field</code> into the scan), faster query planning (some plans dropping from ~4-5ms to ~100us), and 42 faster built-in functions.</li>
</ul>
<p>Federation deny-list enforcement and catalog DDL are restored after the DataFusion upgrades, and a cost-based left-deep join reordering rule is added for Cayenne acceleration.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="ai--llm">AI &amp; LLM<a href="https://spiceai.org/releases/v2.1.0#ai--llm" class="hash-link" aria-label="Direct link to AI &amp; LLM" title="Direct link to AI &amp; LLM" translate="no">​</a></h3>
<ul>
<li class=""><strong>Native GLM Support with Distributed Inference</strong>: Native GLM model support with surfaced <code>reasoning_content</code>, including tensor-parallel GLM inference. Load a GLM model with <code>model_type: glm4</code> (<code>glm4moe</code> and <code>glm4moelite</code> are also supported):</li>
</ul>
<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"><div 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></div><div 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"> glm</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><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"> huggingface</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">huggingface.co/THUDM/glm</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">4</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">9b</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">chat</span><br></div><div class="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></div><div class="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_type</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> glm4</span><br></div></code></pre></div></div>
<p>For large models, GLM inference can be distributed across nodes (tensor parallelism) via the mistral.rs pure-TCP <code>ring</code> all-reduce backend — no NCCL/system dependency. This is a <a href="https://docs.spice.ai/docs/enterprise" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a> feature requiring the <code>distributed</code> build. Run the same model on each node, changing only <code>node_rank</code>:</p>
<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"><div 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></div><div 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"> glm</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><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"> huggingface</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">huggingface.co/THUDM/glm</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">4</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">9b</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">chat</span><br></div><div class="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></div><div class="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_type</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> glm4</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">distributed_backend</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> ring</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">nodes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10.0.4.21</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain">10.0.4.22 </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># ordered host/IP per rank; the ring backend currently requires exactly 2</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">node_rank</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%)">0</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># rank of THIS node in [0, world_size); rank 0 serves the API. Set node_rank: 1 on 10.0.4.22</span><br></div></code></pre></div></div>
<ul>
<li class=""><strong>NSQL Context Endpoint</strong>: A new <code>GET /v1/nsql/context</code> endpoint returns the SQL dialect, dataset schemas (with optional sample rows), and registered functions that Spice injects into natural-language-to-SQL (<code>POST /v1/nsql</code>) requests — useful for inspecting or caching exactly what the model sees:</li>
</ul>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Inspect the context injected into /v1/nsql requests (examples_limit default 3, max 100)</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token function" style="color:hsl(221, 87%, 60%)">curl</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"http://localhost:8090/v1/nsql/context?include_examples=true&amp;examples_limit=3"</span><br></div></code></pre></div></div>
<p>Returns the dialect, per-dataset schema (keys, indexes, searchable columns), the registered function inventory, and sample rows (abbreviated):</p>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"context"</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%)">"# Spice.ai NSQL Context"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"instructions"</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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token string" style="color:hsl(119, 34%, 47%)">"Write SQL for the Spice runtime, which uses Apache DataFusion with the SQL parser configured for the PostgreSQL dialect."</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token string" style="color:hsl(119, 34%, 47%)">"Use table and column descriptions, primary keys, foreign keys, unique constraints, and indexes when choosing joins and filters."</span><span class="token plain"></span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"sql"</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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"engine"</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%)">"Apache DataFusion"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"version"</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%)">"54.0.0"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"dialect"</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%)">"PostgreSQL"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"parser"</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%)">"DataFusion SQL parser configured with PostgreSQL dialect"</span><span class="token plain"></span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"datasets"</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></div><div 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></div><div 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%)">"sales.orders"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"table"</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%)">"orders"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"description"</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%)">"Customer orders"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"columns"</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></div><div 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 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%)">"order_id"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"data_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%)">"Int64"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"nullable"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"primary_key"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"indexed"</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 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></div><div 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 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%)">"customer_id"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"data_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%)">"Utf8"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"nullable"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"vector_search"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"full_text_search"</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 plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"primary_key"</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 string" style="color:hsl(119, 34%, 47%)">"order_id"</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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"foreign_keys"</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></div><div 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 property" style="color:hsl(5, 74%, 59%)">"columns"</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 string" style="color:hsl(119, 34%, 47%)">"customer_id"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"foreign_table"</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%)">"spice.sales.customers"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"foreign_columns"</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 string" style="color:hsl(119, 34%, 47%)">"id"</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"></span><br></div><div 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></div><div 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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"functions"</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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"summary"</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%)">"Spice SQL runs on Apache DataFusion ... Run SELECT * FROM list_udfs() to inspect the full registered function inventory"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"search"</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></div><div 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 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%)">"vector_search"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"syntax"</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%)">"vector_search(dataset, 'query text'[, column])"</span><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></div><div 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 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%)">"text_search"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"syntax"</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%)">"text_search(dataset, 'query text'[, column])"</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div 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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"samples"</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></div><div 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 property" style="color:hsl(5, 74%, 59%)">"title"</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%)">"Example rows for `sales.orders`"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"content"</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%)">"| order_id | customer_id |\n| --- | --- |\n| 42 | CUST-1 |"</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div 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></div><div 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></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="search--vectors">Search &amp; Vectors<a href="https://spiceai.org/releases/v2.1.0#search--vectors" class="hash-link" aria-label="Direct link to Search &amp; Vectors" title="Direct link to Search &amp; Vectors" translate="no">​</a></h3>
<ul>
<li class=""><strong>S3 Vectors Pagination</strong>: <code>QueryVectors</code> paginates for top-K up to 10,000.</li>
<li class=""><strong>Elasticsearch kNN Candidate Pool</strong>: The default kNN candidate pool is raised from 10 to 1000 for better recall.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="sql--query-engine">SQL &amp; Query Engine<a href="https://spiceai.org/releases/v2.1.0#sql--query-engine" class="hash-link" aria-label="Direct link to SQL &amp; Query Engine" title="Direct link to SQL &amp; Query Engine" translate="no">​</a></h3>
<ul>
<li class=""><strong>FlightSQL Substrait Plans</strong>: <code>CommandStatementSubstraitPlan</code> support.</li>
<li class=""><strong>Large Result Streaming</strong>: Flight streaming is optimized for large result sets.</li>
<li class=""><strong>Write Authorization</strong>: The SQL tool allows writes for ReadWrite API keys.</li>
<li class=""><strong>Schema Evolution Policies</strong>: <code>on_schema_change</code> supports widening-only evolution and a <code>drop_and_recreate</code> policy.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security--connectors">Security &amp; Connectors<a href="https://spiceai.org/releases/v2.1.0#security--connectors" class="hash-link" aria-label="Direct link to Security &amp; Connectors" title="Direct link to Security &amp; Connectors" translate="no">​</a></h3>
<ul>
<li class=""><strong>Kafka mTLS</strong>: Mutual TLS configuration is surfaced in the Kafka data connector.</li>
<li class=""><strong>Secret Resolution at Startup</strong>: Secret references are checked and reported at startup.</li>
<li class=""><strong>DuckDB HNSW</strong>: Upgrade to DuckDB v1.5.3 with the statically linked VSS (HNSW) vector extension.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="adaptive-self-tuning-experimental">Adaptive Self-Tuning (Experimental)<a href="https://spiceai.org/releases/v2.1.0#adaptive-self-tuning-experimental" class="hash-link" aria-label="Direct link to Adaptive Self-Tuning (Experimental)" title="Direct link to Adaptive Self-Tuning (Experimental)" translate="no">​</a></h3>
<p>The Spice Cayenne accelerator gains experimental opt-in self-tuning. <code>cayenne_tuning: auto</code> derives configuration from the detected hardware and inferred schema, while <code>adaptive</code> additionally runs a per-table closed-feedback controller that adapts flush caps, the in-memory CDC tier, compaction cadence, and write concurrency toward operator SLOs (replication lag, freshness, query latency, queries-per-hour). Cayenne can also maintain aggregates incrementally — with predicate-aware delta serving and incremental retraction — and fold whole-table <code>SUM</code>/<code>AVG</code>/<code>COUNT</code>/<code>MIN</code>/<code>MAX</code> from statistics. These features are experimental and disabled by default.</p>
<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"><div 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></div><div 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">public.orders</span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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_tuning</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> adaptive </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># 'auto' (static, env- + schema-derived) or 'adaptive' (closed-loop)</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="observability">Observability<a href="https://spiceai.org/releases/v2.1.0#observability" class="hash-link" aria-label="Direct link to Observability" title="Direct link to Observability" translate="no">​</a></h3>
<ul>
<li class=""><strong>Per-Dataset Query Attribution</strong>: The <code>query_executions</code> metric gains a <code>datasets</code> dimension.</li>
<li class=""><strong>HTAP Diagnostics</strong>: Improved HTAP replication diagnostics on non-convergence.</li>
<li class=""><strong>Cayenne Write Observability</strong>: Write-phase observability for the in-memory CDC tier.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="notable-bug-fixes">Notable Bug Fixes<a href="https://spiceai.org/releases/v2.1.0#notable-bug-fixes" class="hash-link" aria-label="Direct link to Notable Bug Fixes" title="Direct link to Notable Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Cayenne Utf8View</strong>: The Utf8View read schema avoids a hash-join offset overflow.</li>
<li class=""><strong>Cayenne metastore</strong>: <code>cayenne_metastore: turso</code> is honored for partitioned tables and the dataset checkpoint.</li>
<li class=""><strong>Dual-write detection</strong>: Dual-write accelerated tables are detected behind the metadata-enrichment wrapper.</li>
<li class=""><strong><code>digest_many</code> collisions</strong>: Values are length-prefixed so column boundaries can't collide.</li>
<li class=""><strong>Turso WAL checkpoint</strong>: WAL checkpoints route through the native Turso connection.</li>
<li class=""><strong>TLS status probe</strong>: The status check probes the metrics endpoint over HTTPS when TLS is enabled.</li>
<li class=""><strong>Search snippet offsets</strong>: Character chunk offsets persist so search snippets aren't shifted or garbled.</li>
<li class=""><strong>Async query chunk offsets</strong>: <code>/v1/queries</code> chunk <code>row_offset</code> uses the cumulative offset rather than <code>chunk_index * chunk_size</code>.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependency-updates">Dependency Updates<a href="https://spiceai.org/releases/v2.1.0#dependency-updates" class="hash-link" aria-label="Direct link to Dependency Updates" title="Direct link to Dependency Updates" translate="no">​</a></h3>
<table><thead><tr><th>Dependency / Component</th><th>Version</th></tr></thead><tbody><tr><td><strong>DataFusion</strong></td><td>v54</td></tr><tr><td><strong>Arrow (arrow-rs)</strong></td><td>v58.3</td></tr><tr><td><strong>Vortex</strong></td><td>v0.74</td></tr><tr><td><strong>iceberg-rust</strong></td><td>v0.9.1</td></tr><tr><td><strong>DuckDB</strong></td><td>v1.5.3</td></tr><tr><td><strong>Rust toolchain</strong></td><td>v1.95.0</td></tr></tbody></table>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.1.0#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/melks" target="_blank" rel="noopener noreferrer" class="">@melks</a></li>
<li class=""><a href="https://github.com/mvanhorn" target="_blank" rel="noopener noreferrer" class="">@mvanhorn</a></li>
<li class=""><a href="https://github.com/Oxygen56" target="_blank" rel="noopener noreferrer" class="">@Oxygen56</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/v1gnesh" target="_blank" rel="noopener noreferrer" class="">@v1gnesh</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.1.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.1.0#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.1.0#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.1.0, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.1.0</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.1.0</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.1.0</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.1.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.1.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Make DuckDB schema cast 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/10991" target="_blank" rel="noopener noreferrer" class="">#10991</a></li>
<li class="">perf(cayenne): reduce allocation overheads in hot 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/10950" target="_blank" rel="noopener noreferrer" class="">#10950</a></li>
<li class="">improve error message for 'params.spiceai_region' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10954" target="_blank" rel="noopener noreferrer" class="">#10954</a></li>
<li class="">fix(acceleration): rename WriteMode variants to fix #10960 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10974" target="_blank" rel="noopener noreferrer" class="">#10974</a></li>
<li class="">add Scylla, bigquery and turso to throughput benchmarking by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11006" target="_blank" rel="noopener noreferrer" class="">#11006</a></li>
<li class="">deps(ballista): pull in shuffle-on-object-store correctness fixes (datafusion-ballista PRs #42 + #43) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10919" target="_blank" rel="noopener noreferrer" class="">#10919</a></li>
<li class="">fix(kafka): seek to sidecar offsets via post_rebalance callback on restart by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11007" target="_blank" rel="noopener noreferrer" class="">#11007</a></li>
<li class="">Propagate source comments into schema 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/10944" target="_blank" rel="noopener noreferrer" class="">#10944</a></li>
<li class="">feat(chbench-driver): better alignment to BenchBase by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11012" target="_blank" rel="noopener noreferrer" class="">#11012</a></li>
<li class="">fix: handle EXISTS/NOT EXISTS subqueries in federation analyzer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10996" target="_blank" rel="noopener noreferrer" class="">#10996</a></li>
<li class="">Enable filter pushdown in spicepod defined UDTFs by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11004" target="_blank" rel="noopener noreferrer" class="">#11004</a></li>
<li class="">Refactor spice dataset configuration command by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10999" target="_blank" rel="noopener noreferrer" class="">#10999</a></li>
<li class="">fix: ensure HashJoinExec partition counts match when join input is statically empty by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11025" target="_blank" rel="noopener noreferrer" class="">#11025</a></li>
<li class="">feat(chbench): Improve OLTP throughput and reduce PostgreSQL CDC overhead by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11018" target="_blank" rel="noopener noreferrer" class="">#11018</a></li>
<li class="">feat(cluster): add distributed query observability metrics by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10990" target="_blank" rel="noopener noreferrer" class="">#10990</a></li>
<li class="">fix: delegate truncate in PolyTableProvider to inner write provider by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11036" target="_blank" rel="noopener noreferrer" class="">#11036</a></li>
<li class="">Remove default runtime features - enable explicitly 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/11037" target="_blank" rel="noopener noreferrer" class="">#11037</a></li>
<li class="">fix: preserve field and schema metadata in Vortex physical schema calculation by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11013" target="_blank" rel="noopener noreferrer" class="">#11013</a></li>
<li class="">Expose metadata descriptions via PostgreSQL UDFs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11032" target="_blank" rel="noopener noreferrer" class="">#11032</a></li>
<li class="">fix: route Turso WAL checkpoint through native turso connection (fixes #10657) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11048" target="_blank" rel="noopener noreferrer" class="">#11048</a></li>
<li class="">fix: add missing truncate delegation and guards for wrapper TableProviders by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11014" target="_blank" rel="noopener noreferrer" class="">#11014</a></li>
<li class="">Update DataConnector statuses by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11052" target="_blank" rel="noopener noreferrer" class="">#11052</a></li>
<li class="">remove redundant readonly checks by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10975" target="_blank" rel="noopener noreferrer" class="">#10975</a></li>
<li class="">Fix Unity Catalog connector compatibility with OSS Unity Catalog by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11026" target="_blank" rel="noopener noreferrer" class="">#11026</a></li>
<li class="">refactor(cdc): reduce CDC sub-batch splits for interleaved upsert/delete workloads by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11051" target="_blank" rel="noopener noreferrer" class="">#11051</a></li>
<li class="">feat(cayenne): allow inline writes with pending deletions (deletes/upserts) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11031" target="_blank" rel="noopener noreferrer" class="">#11031</a></li>
<li class="">fix(sql-tool): defer read-only gate to caller's API key role by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11040" target="_blank" rel="noopener noreferrer" class="">#11040</a></li>
<li class="">fix: map Gemini Recitation finish reason to ContentFilter by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11046" target="_blank" rel="noopener noreferrer" class="">#11046</a></li>
<li class="">feat(cayenne): fast-path CDC deletes by extracting PK values from filters by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11049" target="_blank" rel="noopener noreferrer" class="">#11049</a></li>
<li class="">fix(cluster): gate scheduler readiness on executor partition loads by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10992" target="_blank" rel="noopener noreferrer" class="">#10992</a></li>
<li class="">fix(snowflake): enforce function deny-list in federation pushdown by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11057" target="_blank" rel="noopener noreferrer" class="">#11057</a></li>
<li class="">perf(cdc): Last-write-wins dedup in <code>group_into_sub_batches</code> to reduce sub-batch splits by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11059" target="_blank" rel="noopener noreferrer" class="">#11059</a></li>
<li class="">[Bug] Timing between reconnect and AllocateInitialPartitions leaves connection without flight_sql_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/10805" target="_blank" rel="noopener noreferrer" class="">#10805</a></li>
<li class="">Define 'trait QueryEngine' to refactor runtime 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/11028" target="_blank" rel="noopener noreferrer" class="">#11028</a></li>
<li class="">fix(snowflake): apply Spice function deny-list in extracted connector crate by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11071" target="_blank" rel="noopener noreferrer" class="">#11071</a></li>
<li class="">perf(cayenne): keep CDC upsert PK keysets resident to avoid per-batch full-table rebuilds by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11074" target="_blank" rel="noopener noreferrer" class="">#11074</a></li>
<li class="">fix(postgres-replication): emit recovery log + reduce reconnect-warn volume by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11084" target="_blank" rel="noopener noreferrer" class="">#11084</a></li>
<li class="">fix metadata on search indexing by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11080" target="_blank" rel="noopener noreferrer" class="">#11080</a></li>
<li class="">perf(cayenne): scale CDC inline flush caps with memory + storage class by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11087" target="_blank" rel="noopener noreferrer" class="">#11087</a></li>
<li class="">feat(cayenne): merge-on-read position deletes for PK upsert tables + memory-pool accounting by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11085" target="_blank" rel="noopener noreferrer" class="">#11085</a></li>
<li class="">Support tuple-IN composite PK extraction in Cayenne delete fast-path by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11093" target="_blank" rel="noopener noreferrer" class="">#11093</a></li>
<li class="">feat(cluster): report per-executor table statistics so distributed JoinSelection can size joins by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11089" target="_blank" rel="noopener noreferrer" class="">#11089</a></li>
<li class="">feat(cluster): NDV-aware executor stats so CDC q18 join swap fires by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11098" target="_blank" rel="noopener noreferrer" class="">#11098</a></li>
<li class="">Improve HTAP replication diagnostics on non-convergence by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11100" target="_blank" rel="noopener noreferrer" class="">#11100</a></li>
<li class="">Normalize <code>DataType::Null</code> to <code>Int32</code> in acceleration schema for duckdb by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11062" target="_blank" rel="noopener noreferrer" class="">#11062</a></li>
<li class="">Fix debezium schema evolution support by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11095" target="_blank" rel="noopener noreferrer" class="">#11095</a></li>
<li class="">feat(cayenne): incremental write-path executor statistics for distributed join sizing by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11104" target="_blank" rel="noopener noreferrer" class="">#11104</a></li>
<li class="">fix(cache): periodic moka maintenance to drain invalidation predicates (#11077) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11106" target="_blank" rel="noopener noreferrer" class="">#11106</a></li>
<li class="">fix: validate Snowflake account identifiers and auth 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/11024" target="_blank" rel="noopener noreferrer" class="">#11024</a></li>
<li class="">fix: trace external mcp server tool calls by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11058" target="_blank" rel="noopener noreferrer" class="">#11058</a></li>
<li class="">Remove unwrap from test code; drop clippy::unwrap_used suppressions by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11108" target="_blank" rel="noopener noreferrer" class="">#11108</a></li>
<li class="">Upgrade to DuckDB 1.5.3 + statically link the VSS (HNSW) extension by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11107" target="_blank" rel="noopener noreferrer" class="">#11107</a></li>
<li class="">Fix fetched_at for HTTP connector by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11116" target="_blank" rel="noopener noreferrer" class="">#11116</a></li>
<li class="">fix(search): propagate LIMIT to base TableScan in VectorScanTableProvider (fixes #8368) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11124" target="_blank" rel="noopener noreferrer" class="">#11124</a></li>
<li class="">feat(runtime): add spicebench feature to register the Cayenne catalog 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/11122" target="_blank" rel="noopener noreferrer" class="">#11122</a></li>
<li class="">fix(cayenne): tombstone inline-checkpointed rows on upsert to prevent 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/11129" target="_blank" rel="noopener noreferrer" class="">#11129</a></li>
<li class="">Remove possibility of a deadlock in <code>RuntimeStatus</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/11114" target="_blank" rel="noopener noreferrer" class="">#11114</a></li>
<li class="">Fix Windows build: vendored-vss duckdb-rs + adapt to table-providers mongodb 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/11140" target="_blank" rel="noopener noreferrer" class="">#11140</a></li>
<li class="">localpod: synchronize child refreshes when parent uses in-memory (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/11139" target="_blank" rel="noopener noreferrer" class="">#11139</a></li>
<li class="">Add <code>datasets</code> dimension to the <code>query_executions</code> 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/11138" target="_blank" rel="noopener noreferrer" class="">#11138</a></li>
<li class="">fix(spiceai): keep correlated subqueries out of JOIN ON for Spice Cloud federation by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11143" target="_blank" rel="noopener noreferrer" class="">#11143</a></li>
<li class="">fix(duckdb): normalize timestamp columns to microsecond precision (fixes #10627) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11145" target="_blank" rel="noopener noreferrer" class="">#11145</a></li>
<li class="">feat(cayenne): sharded parallel Vortex encode with key/time clustering by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11144" target="_blank" rel="noopener noreferrer" class="">#11144</a></li>
<li class="">fix(cluster): prevent DoPut write pipeline self-deadlock under ingest backpressure by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11160" target="_blank" rel="noopener noreferrer" class="">#11160</a></li>
<li class="">feat(chbench): configurable HTAP concurrency, DuckDB query overrides, and OLTP rate control by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11162" target="_blank" rel="noopener noreferrer" class="">#11162</a></li>
<li class="">fix(http): preserve non-JSON response rows instead of crashing nested decomposition (fixes #11155) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11161" target="_blank" rel="noopener noreferrer" class="">#11161</a></li>
<li class="">Use declared schema in DynamoDB/MongoDB/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/11066" target="_blank" rel="noopener noreferrer" class="">#11066</a></li>
<li class="">fix(cluster): prevent partitioned datasets from staying Refreshing by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11157" target="_blank" rel="noopener noreferrer" class="">#11157</a></li>
<li class="">fix(runtime): don't list <code>postgres</code> as a valid accelerator engine when <code>postgres-accel</code> is disabled by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11169" target="_blank" rel="noopener noreferrer" class="">#11169</a></li>
<li class="">fix(spark): recover stale or broken Spark Connect sessions on 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/11171" target="_blank" rel="noopener noreferrer" class="">#11171</a></li>
<li class="">fix(secrets): don't abort secret lookup precedence walk on a failing store by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11175" target="_blank" rel="noopener noreferrer" class="">#11175</a></li>
<li class="">feat(cayenne): bound aggregate write concurrency, conservative defaults, and write/read observability by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11170" target="_blank" rel="noopener noreferrer" class="">#11170</a></li>
<li class="">feat(unity_catalog): support Unity Catalog credential vending for Delta Lake tables by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11180" target="_blank" rel="noopener noreferrer" class="">#11180</a></li>
<li class="">fix(secrets): keep failed secret stores registered so lookups report the init root cause by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11181" target="_blank" rel="noopener noreferrer" class="">#11181</a></li>
<li class="">fix(debezium): sign-extend minimal-width base64 decimals instead of zero-padding by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11184" target="_blank" rel="noopener noreferrer" class="">#11184</a></li>
<li class="">fix(deps): update hickory-resolver to 0.26 (evicts hickory-proto 0.25.x) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11183" target="_blank" rel="noopener noreferrer" class="">#11183</a></li>
<li class="">refactor(secrets): derive secret store metadata from a single registry table by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11188" target="_blank" rel="noopener noreferrer" class="">#11188</a></li>
<li class="">perf(cayenne): cut CDC replication lag on hot upsert tables by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11191" target="_blank" rel="noopener noreferrer" class="">#11191</a></li>
<li class="">feat(cayenne): async inline-fallback (per-tombstone published flag) + 64c/256GB tuning by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11194" target="_blank" rel="noopener noreferrer" class="">#11194</a></li>
<li class="">Add HTTP connector mTLS 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/11127" target="_blank" rel="noopener noreferrer" class="">#11127</a></li>
<li class="">feat(snowflake): push AT TIME ZONE as CONVERT_TIMEZONE and pin session to UTC by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11190" target="_blank" rel="noopener noreferrer" class="">#11190</a></li>
<li class="">feat(cdc): make cdc_max_coalesce_age_ms a real apply-loop linger by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11196" target="_blank" rel="noopener noreferrer" class="">#11196</a></li>
<li class="">feat(cayenne): delta-write encoding levels (cayenne_delta_encoding, default auto) + make compression_strategy=zstd real by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11199" target="_blank" rel="noopener noreferrer" class="">#11199</a></li>
<li class="">Add NSQL context 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/11075" target="_blank" rel="noopener noreferrer" class="">#11075</a></li>
<li class="">fix(federation): respect the Spice function deny-list across all SQL connectors; dialect-aware DuckDB pushdown by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11186" target="_blank" rel="noopener noreferrer" class="">#11186</a></li>
<li class="">fix: surface unknown/applied cayenne_* runtime.params at startup (fixes #10970) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11133" target="_blank" rel="noopener noreferrer" class="">#11133</a></li>
<li class="">perf(cayenne): plain-fsync ordering tier on the staged-commit hot 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/11198" target="_blank" rel="noopener noreferrer" class="">#11198</a></li>
<li class="">fix(kafka): decode JSON payloads to Arrow directly — fixes lossy Decimal128 + removes double-parse (#11192) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11207" target="_blank" rel="noopener noreferrer" class="">#11207</a></li>
<li class="">feat(cayenne): self-tuning accelerator — hardware + schema + closed-loop adaptive (auto/adaptive modes) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11213" target="_blank" rel="noopener noreferrer" class="">#11213</a></li>
<li class="">perf(cayenne): CDC throughput — SF-100 @10K txn/s toward &lt;5s lag + 5K QPH by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11206" target="_blank" rel="noopener noreferrer" class="">#11206</a></li>
<li class="">fix(cluster): distribute accelerated tables wrapped by metadata/index 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/11226" target="_blank" rel="noopener noreferrer" class="">#11226</a></li>
<li class="">Improve Cayenne adaptive tuning and schema safety by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11237" target="_blank" rel="noopener noreferrer" class="">#11237</a></li>
<li class="">feat: Add cayenne_file_pruning param by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11239" target="_blank" rel="noopener noreferrer" class="">#11239</a></li>
<li class="">Debezium connector - handle tombstone messages in kafka topic, with schema evolution enabled by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11197" target="_blank" rel="noopener noreferrer" class="">#11197</a></li>
<li class="">feat(cayenne): broadcast small-dimension joins to 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/11245" target="_blank" rel="noopener noreferrer" class="">#11245</a></li>
<li class="">fix: scope request context across the managed query 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/11253" target="_blank" rel="noopener noreferrer" class="">#11253</a></li>
<li class="">fix: Strip inference columns from table schema on query by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11251" target="_blank" rel="noopener noreferrer" class="">#11251</a></li>
<li class="">fix(flightsql): don't drop un-pushed FilterExec predicates in distributed pushdown rules by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11256" target="_blank" rel="noopener noreferrer" class="">#11256</a></li>
<li class="">feat(postgres): share one replication slot across multiple changes-mode 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/11255" target="_blank" rel="noopener noreferrer" class="">#11255</a></li>
<li class="">Upgrade to DataFusion v53.1, Arrow v58.3, Vortex v0.74, 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/11118" target="_blank" rel="noopener noreferrer" class="">#11118</a></li>
<li class="">feat(connectors): support file_format: vortex everywhere parquet is supported by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11282" target="_blank" rel="noopener noreferrer" class="">#11282</a></li>
<li class="">perf(cayenne): metadata-only publish — drop per-key insert records on upsert commit by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11260" target="_blank" rel="noopener noreferrer" class="">#11260</a></li>
<li class="">fix(kafka): harden fetch_latest_message for multi-partition topics by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11285" target="_blank" rel="noopener noreferrer" class="">#11285</a></li>
<li class="">perf(cayenne): bound mem-tier checkpoint churn + O(1) per-scan deletion view by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11249" target="_blank" rel="noopener noreferrer" class="">#11249</a></li>
<li class="">fix(udfs): length-prefix digest_many values so column boundaries can't collide (fixes #11272) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11288" target="_blank" rel="noopener noreferrer" class="">#11288</a></li>
<li class="">fix: restore federation deny-list enforcement regressed by the DataFusion 53 upgrade by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11294" target="_blank" rel="noopener noreferrer" class="">#11294</a></li>
<li class="">fix(postgres): recover unchanged-TOAST columns from the old tuple; classify walsender contention as transient by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11293" target="_blank" rel="noopener noreferrer" class="">#11293</a></li>
<li class="">feat: deepen extended schema inference and wire it into cayenne compaction sharding/sorting by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11284" target="_blank" rel="noopener noreferrer" class="">#11284</a></li>
<li class="">perf(cayenne): in-memory CDC tier follow-ups + write-phase observability by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11278" target="_blank" rel="noopener noreferrer" class="">#11278</a></li>
<li class="">Support per-dataset CDC tunable 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/11295" target="_blank" rel="noopener noreferrer" class="">#11295</a></li>
<li class="">feat(cayenne): harden adaptive auto-tuner (controller hygiene, mem-tier actuator, delete/burst signals, single opt-in) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11302" target="_blank" rel="noopener noreferrer" class="">#11302</a></li>
<li class="">fix(cayenne): scan inlined-view capture starvation under sustained CDC (analytical QPH) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11299" target="_blank" rel="noopener noreferrer" class="">#11299</a></li>
<li class="">fix(vortex): don't row-evaluate hash-join dynamic filters in the 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/11307" target="_blank" rel="noopener noreferrer" class="">#11307</a></li>
<li class="">fix(deps): bump rust-postgres crates (RUSTSEC-2026-0178/0179) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11313" target="_blank" rel="noopener noreferrer" class="">#11313</a></li>
<li class="">fix: strict validation of Postgres CDC params instead of silent defaults (fixes #11274) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11304" target="_blank" rel="noopener noreferrer" class="">#11304</a></li>
<li class="">fix(duckdb): always quote on-refresh sort columns so reserved-word names don't break refresh by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11305" target="_blank" rel="noopener noreferrer" class="">#11305</a></li>
<li class="">feat(flightsql): fall back to original connection when endpoint location is unreachable by <a href="https://github.com/melks" target="_blank" rel="noopener noreferrer" class="">@melks</a> in <a href="https://github.com/spiceai/spiceai/pull/11287" target="_blank" rel="noopener noreferrer" class="">#11287</a></li>
<li class="">perf(cayenne): light-encode transient staged CDC deltas by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11311" target="_blank" rel="noopener noreferrer" class="">#11311</a></li>
<li class="">feat(acceleration): widening-only schema evolution via on_schema_change by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11261" target="_blank" rel="noopener noreferrer" class="">#11261</a></li>
<li class="">deps(vortex): bump pin to spiceai-53 HEAD — intra-file decode split + per-execution kernel cache by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11314" target="_blank" rel="noopener noreferrer" class="">#11314</a></li>
<li class="">feat(github): enhance GitHub component validation 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/11259" target="_blank" rel="noopener noreferrer" class="">#11259</a></li>
<li class="">feat(cayenne): goal-driven adaptive tuning toward operator SLOs (lag, freshness, query latency, QPH) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11310" target="_blank" rel="noopener noreferrer" class="">#11310</a></li>
<li class="">fix(cayenne): broadcast-join rewrite must bail on ambiguous columns, NULL-equal joins, and residual filters by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11252" target="_blank" rel="noopener noreferrer" class="">#11252</a></li>
<li class="">Add Cayenne maintained aggregates by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11235" target="_blank" rel="noopener noreferrer" class="">#11235</a></li>
<li class="">perf(cayenne): single-hash composite deletion filter via KeyDeletionIndex::get_batch by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11325" target="_blank" rel="noopener noreferrer" class="">#11325</a></li>
<li class="">fix(Vortex): decline only the <code>InList</code> membership conjunct of hash-join dynamic filters by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11335" target="_blank" rel="noopener noreferrer" class="">#11335</a></li>
<li class="">fix: scope SQL UDF arg inlining to args-table columns (fixes #11273) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11337" target="_blank" rel="noopener noreferrer" class="">#11337</a></li>
<li class="">fix(refresh): restore S3 ETag/Version refresh-skip behind provider wrappers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11339" target="_blank" rel="noopener noreferrer" class="">#11339</a></li>
<li class="">fix(cayenne): ref-count in-flight scans so GC can't delete Vortex files mid-read by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11321" target="_blank" rel="noopener noreferrer" class="">#11321</a></li>
<li class="">fix(runtime): retry object-store dataset load when source files are not yet available by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11342" target="_blank" rel="noopener noreferrer" class="">#11342</a></li>
<li class="">feat(s3): default to path-style for dotted bucket names on standard AWS by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11347" target="_blank" rel="noopener noreferrer" class="">#11347</a></li>
<li class="">fix(runtime): resolve accelerated table through metadata-enrichment wrapper by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11345" target="_blank" rel="noopener noreferrer" class="">#11345</a></li>
<li class="">fix: detect dual-write accelerated tables behind the metadata-enrichment wrapper by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11351" target="_blank" rel="noopener noreferrer" class="">#11351</a></li>
<li class="">feat(cayenne): incremental seq-prefix bake — shrink the merge-on-read deletion index by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11326" target="_blank" rel="noopener noreferrer" class="">#11326</a></li>
<li class="">fix(adbc): prevent Spice-specific UDFs from being pushed down to ADBC sources by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11297" target="_blank" rel="noopener noreferrer" class="">#11297</a></li>
<li class="">fix: Query Redshift schema details from svv_redshift 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/11362" target="_blank" rel="noopener noreferrer" class="">#11362</a></li>
<li class="">perf(cayenne): tune Turso connection PRAGMAs + jitter metastore retries by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11359" target="_blank" rel="noopener noreferrer" class="">#11359</a></li>
<li class="">Upgrade to DataFusion 54 by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11360" target="_blank" rel="noopener noreferrer" class="">#11360</a></li>
<li class="">feat(runtime): dedicated CDC-apply tokio runtime + per-runtime tokio 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/11370" target="_blank" rel="noopener noreferrer" class="">#11370</a></li>
<li class="">fix(cayenne): spill oversized hash joins via sort-merge to avoid OOM by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11371" target="_blank" rel="noopener noreferrer" class="">#11371</a></li>
<li class="">fix(cayenne): honor cayenne_metastore: turso for partitioned tables and the dataset checkpoint by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11365" target="_blank" rel="noopener noreferrer" class="">#11365</a></li>
<li class="">perf(cayenne): in-RAM scan parallelism, query admission control, skip no-op deletion encode, sound scan output_ordering by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11332" target="_blank" rel="noopener noreferrer" class="">#11332</a></li>
<li class="">fix(catalog): restore DDL after DataFusion 54 broke transparent catalog-provider downcasts by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11375" target="_blank" rel="noopener noreferrer" class="">#11375</a></li>
<li class="">feat(flightsql): infer schema via SELECT * LIMIT 1 when GetTables is unimplemented by <a href="https://github.com/melks" target="_blank" rel="noopener noreferrer" class="">@melks</a> in <a href="https://github.com/spiceai/spiceai/pull/11286" target="_blank" rel="noopener noreferrer" class="">#11286</a></li>
<li class="">fix(cayenne): Utf8View read schema avoids hash-join offset 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/11379" target="_blank" rel="noopener noreferrer" class="">#11379</a></li>
<li class="">feat(cluster): support distributed (Ballista) scans of Iceberg tables by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11378" target="_blank" rel="noopener noreferrer" class="">#11378</a></li>
<li class="">feat(optimizer): cost-based left-deep join reordering for Cayenne 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/11377" target="_blank" rel="noopener noreferrer" class="">#11377</a></li>
<li class="">cli - fix service-account auth in <code>spice cloud *</code> commands by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11316" target="_blank" rel="noopener noreferrer" class="">#11316</a></li>
<li class="">fix: Support external Redshift table schema inference and Hive external type parsing by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11399" target="_blank" rel="noopener noreferrer" class="">#11399</a></li>
<li class="">feat(llms): native GLM support — opt-in flash-attn + surface reasoning_content by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11400" target="_blank" rel="noopener noreferrer" class="">#11400</a></li>
<li class="">feat(s3_vectors): paginate QueryVectors for topK up to 10,000 by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11405" target="_blank" rel="noopener noreferrer" class="">#11405</a></li>
<li class="">fix: surface .env parse errors with line numbers instead of silently skipping by <a href="https://github.com/Oxygen56" target="_blank" rel="noopener noreferrer" class="">@Oxygen56</a> in <a href="https://github.com/spiceai/spiceai/pull/11306" target="_blank" rel="noopener noreferrer" class="">#11306</a></li>
<li class="">fix(status): probe metrics endpoint over https when TLS is 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/11393" target="_blank" rel="noopener noreferrer" class="">#11393</a></li>
<li class="">fix(mcp): record task_history spans for tool calls proxied through /v1/mcp by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11397" target="_blank" rel="noopener noreferrer" class="">#11397</a></li>
<li class="">Properly handle date_trunc in BigQueryDialect by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11416" target="_blank" rel="noopener noreferrer" class="">#11416</a></li>
<li class="">fix(snowflake): honor column scale in Int64 timestamp arm and cast TIME by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11418" target="_blank" rel="noopener noreferrer" class="">#11418</a></li>
<li class="">fix: /v1/queries chunk row_offset uses cumulative offset, not chunk_index * chunk_size (fixes #11271) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11398" target="_blank" rel="noopener noreferrer" class="">#11398</a></li>
<li class="">feat(cayenne): incremental retraction for maintained aggregates + anchor 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/11389" target="_blank" rel="noopener noreferrer" class="">#11389</a></li>
<li class="">feat(cluster): support distributed (Ballista) scans of Iceberg catalog tables by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11419" target="_blank" rel="noopener noreferrer" class="">#11419</a></li>
<li class="">Simplify chat/responses 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/10997" target="_blank" rel="noopener noreferrer" class="">#10997</a></li>
<li class="">feat(llms): distributed tensor-parallel GLM inference via mistral.rs ring 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/11406" target="_blank" rel="noopener noreferrer" class="">#11406</a></li>
<li class="">Optimize Flight streaming for large result sets by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11420" target="_blank" rel="noopener noreferrer" class="">#11420</a></li>
<li class="">fix(deps): evict rustls 0.21 / rustls-webpki 0.101.7 (GHSA-82j2-j2ch-gfr8) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11428" target="_blank" rel="noopener noreferrer" class="">#11428</a></li>
<li class="">feat(cayenne): in-memory CDC intra-apply sharding (PK-hash shards) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11421" target="_blank" rel="noopener noreferrer" class="">#11421</a></li>
<li class="">fix(cayenne): shard CDC upserts with pending deletions so the N&gt;1 slot-ack advances by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11445" target="_blank" rel="noopener noreferrer" class="">#11445</a></li>
<li class="">fix(cluster): keep built-in avg over Spark avg (distributed aggregate state schema mismatch) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11434" target="_blank" rel="noopener noreferrer" class="">#11434</a></li>
<li class="">feat(views): support params.file_format for embedding chunking by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11424" target="_blank" rel="noopener noreferrer" class="">#11424</a></li>
<li class="">fix: offload blocking sync calls off the primary async 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/11435" target="_blank" rel="noopener noreferrer" class="">#11435</a></li>
<li class="">fix(udfs): rebind dot_product alias to Spice's inner_product on DataFusion 54 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11443" target="_blank" rel="noopener noreferrer" class="">#11443</a></li>
<li class="">feat(secrets): add full-fidelity reference iteration and a resolution-status 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/11195" target="_blank" rel="noopener noreferrer" class="">#11195</a></li>
<li class="">fix: Deny unsupported array functions for Postgres 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/11450" target="_blank" rel="noopener noreferrer" class="">#11450</a></li>
<li class="">fix(cli): spice query honors --http-endpoint instead of failing on a Flight connect by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11452" target="_blank" rel="noopener noreferrer" class="">#11452</a></li>
<li class="">fix(cayenne): coordinate query-pool + in-memory CDC tier budgets to prevent adaptive OOM by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11449" target="_blank" rel="noopener noreferrer" class="">#11449</a></li>
<li class="">Surface mTLS config in Kafka data connector by <a href="https://github.com/v1gnesh" target="_blank" rel="noopener noreferrer" class="">@v1gnesh</a> in <a href="https://github.com/spiceai/spiceai/pull/11372" target="_blank" rel="noopener noreferrer" class="">#11372</a></li>
<li class="">feat(secrets): check and report secret references at startup by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11457" target="_blank" rel="noopener noreferrer" class="">#11457</a></li>
<li class="">Default cayenne_force_view_types to false by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11459" target="_blank" rel="noopener noreferrer" class="">#11459</a></li>
<li class="">fix: resolve table-reference qualification in results-cache invalidation (fixes #11266) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11460" target="_blank" rel="noopener noreferrer" class="">#11460</a></li>
<li class="">feat(cayenne): metadata aggregate pushdown — fold whole-table SUM/AVG/COUNT/MIN/MAX from statistics by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11414" target="_blank" rel="noopener noreferrer" class="">#11414</a></li>
<li class="">fix(search): restore numeric trunc and fix SortPreservingMergeExec planning error (DF54) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11415" target="_blank" rel="noopener noreferrer" class="">#11415</a></li>
<li class="">fix(cluster): route Ballista shuffle/temp to the data PVC by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11454" target="_blank" rel="noopener noreferrer" class="">#11454</a></li>
<li class="">fix(search): default Elasticsearch kNN candidate pool to 1000 instead of 10 (fixes #11264) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11467" target="_blank" rel="noopener noreferrer" class="">#11467</a></li>
<li class="">feat(acceleration): add on_schema_change drop_and_recreate 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/11462" target="_blank" rel="noopener noreferrer" class="">#11462</a></li>
<li class="">feat(cayenne): predicate-aware maintained aggregates serve filtered analytical queries from the CDC delta by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11458" target="_blank" rel="noopener noreferrer" class="">#11458</a></li>
<li class="">feat(cluster): shared Ballista job state with scheduler failover by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11436" target="_blank" rel="noopener noreferrer" class="">#11436</a></li>
<li class="">feat(cayenne): extend HLL NDV sketching to string and date columns by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11468" target="_blank" rel="noopener noreferrer" class="">#11468</a></li>
<li class="">fix(search): persist character chunk offsets so search snippets aren't shifted/garbled (fixes #11269) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11479" target="_blank" rel="noopener noreferrer" class="">#11479</a></li>
<li class="">feat(cayenne): storage-aware adaptive CDC tuning — calibration probe, IMDS, I/O-cliff fast path, infeasible-SLO feedback by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11463" target="_blank" rel="noopener noreferrer" class="">#11463</a></li>
<li class="">fix(cayenne): LIMIT N under-delivers on key-deletion tables by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11490" target="_blank" rel="noopener noreferrer" class="">#11490</a></li>
<li class="">fix(cayenne): live/tier-accurate join build-side stats (merge-on-read deletes + never-shrink NDV) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11496" target="_blank" rel="noopener noreferrer" class="">#11496</a></li>
<li class="">perf(cayenne): kernel-space I/O hygiene — compaction fadvise + staged-commit barrier reduction by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11495" target="_blank" rel="noopener noreferrer" class="">#11495</a></li>
<li class="">feat(cayenne): feed maintained-aggregate IVM from the staged-disk CDC 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/11491" target="_blank" rel="noopener noreferrer" class="">#11491</a></li>
<li class="">feat(cayenne): global adaptive-tuning SLOs with per-dataset overrides; QPH global-only by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11497" target="_blank" rel="noopener noreferrer" class="">#11497</a></li>
<li class="">Update search 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/11473" target="_blank" rel="noopener noreferrer" class="">#11473</a></li>
<li class="">fix: Support reading column types longer than 128 chars in Redshift by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11500" target="_blank" rel="noopener noreferrer" class="">#11500</a></li>
<li class="">fix(cluster): distributed (Ballista) query-execution config + scheduled SF10 bench by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11478" target="_blank" rel="noopener noreferrer" class="">#11478</a></li>
<li class="">fix(http): retry transient response-body read failures; de-flake backoff test by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11482" target="_blank" rel="noopener noreferrer" class="">#11482</a></li>
<li class="">Re-land orphaned deletion-vector cleanup during retention deletes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11501" target="_blank" rel="noopener noreferrer" class="">#11501</a></li>
<li class="">fix(cayenne): re-upsert over a pending delete tombstone records an insert-record (overwrite resurrection) by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11469" target="_blank" rel="noopener noreferrer" class="">#11469</a></li>
<li class="">fix: Flight DoPut silently dropped client batches on early sink completion by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11507" target="_blank" rel="noopener noreferrer" class="">#11507</a></li>
<li class="">Upgrade OpenTelemetry to 0.32 and reqwest to 0.13 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11506" target="_blank" rel="noopener noreferrer" class="">#11506</a></li>
<li class="">fix(queries): run async /v1/queries jobs under the submitting request context by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11505" target="_blank" rel="noopener noreferrer" class="">#11505</a></li>
<li class="">fix(cayenne): restore append-only current-snapshot compaction by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11439" target="_blank" rel="noopener noreferrer" class="">#11439</a></li>
<li class="">perf(cayenne): orphaned deletion-vector cleanup off the write path, behind a knob by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11517" target="_blank" rel="noopener noreferrer" class="">#11517</a></li>
<li class="">fix(datafusion): accurate projected scan byte size so hash joins build the smaller side by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11503" target="_blank" rel="noopener noreferrer" class="">#11503</a></li>
<li class="">fix(cayenne): user-visible DELETE WHERE pk IN (...) reports the real row 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/11514" target="_blank" rel="noopener noreferrer" class="">#11514</a></li>
<li class="">fix(cayenne): seed persisted <code>num_rows</code> for hash-join sizing by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11515" target="_blank" rel="noopener noreferrer" class="">#11515</a></li>
<li class="">fix(cayenne): correctness &amp; memory_limit fixes from perf audit (2 P0, 3 P1) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11516" target="_blank" rel="noopener noreferrer" class="">#11516</a></li>
<li class="">feat(cayenne): wire orphaned-DV cleanup knob to spicepod params + doc sync by <a href="https://github.com/bjchambers" target="_blank" rel="noopener noreferrer" class="">@bjchambers</a> in <a href="https://github.com/spiceai/spiceai/pull/11523" target="_blank" rel="noopener noreferrer" class="">#11523</a></li>
<li class="">Fix s3 vectors API by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11536" target="_blank" rel="noopener noreferrer" class="">#11536</a></li>
<li class="">fix: Placeholder table initialization lock swap by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/11540" target="_blank" rel="noopener noreferrer" class="">#11540</a></li>
<li class="">chore(cluster): bump ballista pin for the null-aware anti-join 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/11544" target="_blank" rel="noopener noreferrer" class="">#11544</a></li>
<li class="">fix(runtime-tools): fix memory table identifier validation rejecting valid names by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11546" target="_blank" rel="noopener noreferrer" class="">#11546</a></li>
<li class="">Bump datafusion to include spiceai/datafusion#181 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11563" target="_blank" rel="noopener noreferrer" class="">#11563</a></li>
<li class="">Update deny.toml by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/11571" target="_blank" rel="noopener noreferrer" class="">#11571</a></li>
<li class="">Bump datafusion (spiceai/datafusion#182) and datafusion-table-providers (#27): fix q16 CollectLeft planning error and SQLite q6 wrong revenue by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11598" target="_blank" rel="noopener noreferrer" class="">#11598</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.0.0...v2.1.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.0.0...v2.1.0</a></p>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>CDC</category>
            <category>postgres</category>
            <category>distributed-query</category>
            <category>datafusion</category>
            <category>iceberg</category>
            <category>ballista</category>
            <category>ai</category>
            <category>search</category>
            <category>security</category>
            <category>kafka</category>
            <category>duckdb</category>
            <category>arrow</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0.1 (Jun 17, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0.1</link>
            <guid>https://spiceai.org/releases/v2.0.1</guid>
            <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.0.1 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v2.0.1 is now available! 🛠️</p>
<p>Spice v2.0.1 is a patch release focused on reliability and performance. It speeds up Apache Iceberg reads and fixes bugs across AWS S3 and object-store datasets, data acceleration, distributed query, and authenticated access.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v201">What's New in v2.0.1<a href="https://spiceai.org/releases/v2.0.1#whats-new-in-v201" class="hash-link" aria-label="Direct link to What's New in v2.0.1" title="Direct link to What's New in v2.0.1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="faster-iceberg-reads-with-parallel-file-scanning">Faster Iceberg Reads with Parallel File Scanning<a href="https://spiceai.org/releases/v2.0.1#faster-iceberg-reads-with-parallel-file-scanning" class="hash-link" aria-label="Direct link to Faster Iceberg Reads with Parallel File Scanning" title="Direct link to Faster Iceberg Reads with Parallel File Scanning" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/catalogs/iceberg" target="_blank" rel="noopener noreferrer" class="">Apache Iceberg</a> reader now scans data files in parallel (<a href="https://github.com/spiceai/spiceai/pull/11331" target="_blank" rel="noopener noreferrer" class="">#11331</a>), improving read throughput and latency for Iceberg tables that span many files.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="aws-s3--object-store-reliability">AWS S3 &amp; Object-Store Reliability<a href="https://spiceai.org/releases/v2.0.1#aws-s3--object-store-reliability" class="hash-link" aria-label="Direct link to AWS S3 &amp; Object-Store Reliability" title="Direct link to AWS S3 &amp; Object-Store Reliability" translate="no">​</a></h3>
<p>Three fixes improve <a href="https://spiceai.org/docs/components/data-connectors/s3" target="_blank" rel="noopener noreferrer" class="">S3</a> and object-store dataset behavior:</p>
<ul>
<li class=""><strong>Refresh-skip restored</strong> (<a href="https://github.com/spiceai/spiceai/pull/11339" target="_blank" rel="noopener noreferrer" class="">#11339</a>): ETag/Version-based refresh-skip works reliably again, so unchanged S3 objects are no longer re-downloaded on every refresh.</li>
<li class=""><strong>Retry when source files are not yet available</strong> (<a href="https://github.com/spiceai/spiceai/pull/11342" target="_blank" rel="noopener noreferrer" class="">#11342</a>): an object-store dataset whose source files are not present at startup now retries and becomes ready once the data appears, instead of failing permanently.</li>
<li class=""><strong>Path-style addressing for dotted bucket names</strong> (<a href="https://github.com/spiceai/spiceai/pull/11347" target="_blank" rel="noopener noreferrer" class="">#11347</a>): on standard AWS, buckets whose names contain dots now default to path-style addressing, avoiding TLS wildcard certificate errors under virtual-hosted-style HTTPS.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="data-acceleration--distributed-query-fixes">Data Acceleration &amp; Distributed Query Fixes<a href="https://spiceai.org/releases/v2.0.1#data-acceleration--distributed-query-fixes" class="hash-link" aria-label="Direct link to Data Acceleration &amp; Distributed Query Fixes" title="Direct link to Data Acceleration &amp; Distributed Query Fixes" translate="no">​</a></h3>
<p>Two fixes ensure <a href="https://spiceai.org/docs/components/data-accelerators" target="_blank" rel="noopener noreferrer" class="">accelerated</a> datasets behave correctly in more configurations:</p>
<ul>
<li class=""><strong>Acceleration endpoints</strong> (<a href="https://github.com/spiceai/spiceai/pull/11345" target="_blank" rel="noopener noreferrer" class="">#11345</a>): <code>/v1/datasets/{name}/acceleration/refresh</code> (and the related update-refresh-sql, partition-filters, and snapshots endpoints) now work for all accelerated datasets, fixing cases where some incorrectly reported <code>Table is not accelerated</code>.</li>
<li class=""><strong>Distributed clusters</strong> (<a href="https://github.com/spiceai/spiceai/pull/11226" target="_blank" rel="noopener noreferrer" class="">#11226</a>): the <a href="https://spiceai.org/docs/features/distributed-query" target="_blank" rel="noopener noreferrer" class="">distributed query</a> coordinator now serves accelerated data from executors for all accelerated datasets, instead of falling back to reading from the source for some.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="authenticated-query-fixes">Authenticated Query Fixes<a href="https://spiceai.org/releases/v2.0.1#authenticated-query-fixes" class="hash-link" aria-label="Direct link to Authenticated Query Fixes" title="Direct link to Authenticated Query Fixes" translate="no">​</a></h3>
<p>With authentication enabled, queries now consistently run as the requesting user (<a href="https://github.com/spiceai/spiceai/pull/11253" target="_blank" rel="noopener noreferrer" class="">#11253</a>), so per-user behavior such as results caching is correctly scoped to each user.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.0.1#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.0.1#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.0.1#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.0.1#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.0.1, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.1</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.1</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.0.1</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.0.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.0.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">fix(ci): key testoperator &amp; validator artifacts by checked-out commit by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11281" target="_blank" rel="noopener noreferrer" class="">#11281</a></li>
<li class="">chore(deps): fix cargo-deny advisory failures on release/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/11333" target="_blank" rel="noopener noreferrer" class="">#11333</a></li>
<li class="">chore(deps): bump iceberg-rust to parallel file scanning fork (release/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/11331" target="_blank" rel="noopener noreferrer" class="">#11331</a></li>
<li class="">fix(refresh): restore S3 ETag/Version refresh-skip behind provider wrappers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11339" target="_blank" rel="noopener noreferrer" class="">#11339</a></li>
<li class="">fix(runtime): retry object-store dataset load when source files are not yet available by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11342" target="_blank" rel="noopener noreferrer" class="">#11342</a></li>
<li class="">feat(s3): default to path-style for dotted bucket names on standard AWS by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11347" target="_blank" rel="noopener noreferrer" class="">#11347</a></li>
<li class="">fix(runtime): resolve accelerated table through metadata-enrichment wrapper by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11345" target="_blank" rel="noopener noreferrer" class="">#11345</a></li>
<li class="">fix(cluster): distribute accelerated tables wrapped by metadata/index 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/11226" target="_blank" rel="noopener noreferrer" class="">#11226</a></li>
<li class="">fix: scope request context across the managed query 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/11253" target="_blank" rel="noopener noreferrer" class="">#11253</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.0.0...v2.0.1" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.0.0...v2.0.1</a></p>]]></content:encoded>
            <category>release</category>
            <category>distributed-query</category>
            <category>iceberg</category>
            <category>s3</category>
            <category>acceleration</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0-stable (Jun 5, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0-stable</link>
            <guid>https://spiceai.org/releases/v2.0-stable</guid>
            <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[53 releases since Spice 1.0-stable, Spice.ai OSS has reached the 2.0-stable milestone! 🎉]]></description>
            <content:encoded><![CDATA[<p>53 releases since Spice 1.0-stable, Spice.ai OSS has reached the 2.0-stable milestone! 🎉</p>
<p>Spice v2.0.0 is the next major release of Spice and a major milestone in the project's development, advancing Spice from a single-node engine into a distributed data and query platform built for enterprise AI agents. These agents need low-latency, governed access to data spread across many production systems, and because they generate their own queries autonomously, that access has to be sandboxed, observable, and able to absorb occasional heavy analytical queries without overwhelming the underlying systems. The release is headlined by <strong>multi-node distributed query</strong>, now generally available — multi-active, highly-available, and object-store-native, built on Apache Ballista — distributing both query execution and ingestion across executors with data-local routing and per-executor statistics for distributed join planning. Alongside it, the <strong>Spice Cayenne data accelerator is generally available</strong>, built on the Vortex compressed columnar format, with a high-throughput CDC write path, MERGE INTO, SQL-defined partitioning, inline writes, a dedicated compaction runtime, and write-path statistics for distributed join sizing. The engine also moves to <strong>DataFusion v52</strong> with sort pushdown, a rewritten merge join, and dynamic filters, and the <strong>Spice CLI is rewritten in Rust</strong> as a single self-contained binary.</p>
<p>v2.0 also expands real-time and write-path capabilities across the platform: native <strong>CDC from MongoDB Change Streams and PostgreSQL WAL logical replication</strong>, durable <strong>Kafka CDC offsets</strong>, <strong>DML write-back</strong> for PostgreSQL, Snowflake, DynamoDB, Arrow, and DuckLake, <strong>DDL and MERGE INTO</strong> for Iceberg catalogs, <strong>mutual TLS</strong> across server endpoints and outbound connectors, <strong>HashiCorp Vault and Azure Key Vault secret stores</strong>, <strong>user-defined functions</strong>, hybrid <strong>search with Elasticsearch and DuckDB HNSW vector indexes</strong>, provider-aware <strong>LLM prompt caching</strong>, and the <strong>Responses API across all model providers</strong>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="highlights-in-v200-include">Highlights in v2.0.0 include:<a href="https://spiceai.org/releases/v2.0-stable#highlights-in-v200-include" class="hash-link" aria-label="Direct link to Highlights in v2.0.0 include:" title="Direct link to Highlights in v2.0.0 include:" translate="no">​</a></h2>
<ul>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#spice-cayenne-reaches-general-availability" class="">Spice Cayenne (GA)</a></strong> — generally available on the Vortex compressed columnar format, with WAL-staged writes, inline low-latency writes, fast-path CDC deletes, merge-on-read position deletes, composite &amp; SQL-defined partitioning, MERGE INTO, dedicated compaction runtime, and join-sizing statistics maintained on the write path</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#multi-active-ha-distributed-query-ga" class="">Multi-Active HA Distributed Query (GA)</a></strong> — multi-node distributed query built on Apache Ballista, with object-store-native clustering, dynamic cluster sizing, distributed ingestion, data-local query routing, per-executor table statistics for distributed join planning, and async queries via <code>/v1/queries</code></li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#security-mutual-tls-secret-stores-and-hardening" class="">Mutual TLS (mTLS)</a></strong> — public mTLS for HTTP and Flight, TLS cert hot-reload, and mTLS client certificates for FlightSQL and Spice.ai connectors</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#security-mutual-tls-secret-stores-and-hardening" class="">Enterprise Authentication &amp; Authorization</a></strong> — OIDC bearer-token verification and Cedar-based authorization policy with per-principal row- and column-level filtering</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#security-mutual-tls-secret-stores-and-hardening" class="">New Secret Stores</a></strong> — HashiCorp Vault and Azure Key Vault</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#change-data-capture-cdc-sources" class="">CDC Sources</a></strong> — native MongoDB Change Streams, PostgreSQL WAL logical replication, and durable Kafka CDC offsets — no Debezium or Kafka middleware required</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#dml-ddl-and-write-back" class="">DML &amp; DDL</a></strong> — INSERT/UPDATE/DELETE write-back for PostgreSQL, Snowflake, DynamoDB, and Arrow; <code>CREATE TABLE</code>/<code>DROP TABLE</code> and <code>MERGE INTO</code> for Iceberg catalogs</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#sql--user-defined-functions" class="">User-Defined Functions</a></strong> — SQL UDFs in spicepods, remote UDFs over HTTP, and optional geospatial <code>ST_*</code> UDFs</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#runtime-features" class="">On-Demand Dataset Loading &amp; Unified Query Cancellation</a></strong> — faster startup and end-to-end cancellation across HTTP, Flight, FlightSQL, and MCP</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#data-connectors--catalogs" class="">Dynamic HTTP Connector</a></strong> — OAuth2 refresh tokens, pagination, dynamic headers, subquery-driven parameters, and rate-control state persisted across restarts</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#runtime-features" class="">Storage-Profile Accelerator Tuning &amp; <code>refresh_mode: snapshot</code></a></strong> — storage-aware acceleration defaults and point-in-time snapshot acceleration</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#search--vectors" class="">Search &amp; Vectors</a></strong> — Elasticsearch data connector with native hybrid search, DuckDB HNSW vector engine with a statically linked VSS extension, multi-vector MaxSim embeddings, and a <code>rerank()</code> UDTF</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#ai--llm" class="">AI &amp; LLM</a></strong> — provider-aware prompt caching, Responses API across all providers, MCP Streamable HTTP transport, and a searchable LLM tool registry</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#data-connectors--catalogs" class="">New Data Connectors</a></strong> — Elasticsearch (Alpha), GCS (Alpha), Azure Cosmos DB (Alpha), Git (RC), ADBC, DuckLake (Beta), and catalog connectors for PostgreSQL, MySQL, MSSQL, and Snowflake</li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#rust-cli" class="">Rust CLI</a></strong> — single-binary <code>spice</code> CLI with <code>spice query</code> async REPL, shell completions, and <code>--output=json</code></li>
<li class=""><strong><a href="https://spiceai.org/releases/v2.0-stable#dependency-updates" class="">Dependency upgrades</a></strong> including <strong>DataFusion v52.5</strong>, <strong>DuckDB v1.5.3</strong>, <strong>Arrow v57.2</strong>, <strong>iceberg-rust v0.9.1</strong>, <strong>Turso v0.6.1</strong>, and <strong>Vortex v0.69</strong></li>
</ul>
<p>Spice v2.0 includes several <a href="https://spiceai.org/releases/v2.0-stable#breaking-changes" class="">breaking changes</a>. Review the breaking changes section before upgrading.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="distribution-changes">Distribution Changes<a href="https://spiceai.org/releases/v2.0-stable#distribution-changes" class="hash-link" aria-label="Direct link to Distribution Changes" title="Direct link to Distribution Changes" translate="no">​</a></h2>
<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>
<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>
<p>A new Network Attached Storage (NAS) distribution with built-in SMB and NFS data connector support is also available in nightly builds and with <a href="https://spice.ai/pricing" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a>.</p>
<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>
<p>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. For more details, see the <a class="" href="https://spiceai.org/docs/reference/distributions">Distributions documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v200">What's New in v2.0.0<a href="https://spiceai.org/releases/v2.0-stable#whats-new-in-v200" class="hash-link" aria-label="Direct link to What's New in v2.0.0" title="Direct link to What's New in v2.0.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-cayenne-reaches-general-availability">Spice Cayenne Reaches General Availability<a href="https://spiceai.org/releases/v2.0-stable#spice-cayenne-reaches-general-availability" class="hash-link" aria-label="Direct link to Spice Cayenne Reaches General Availability" title="Direct link to Spice Cayenne Reaches General Availability" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Spice Cayenne data accelerator</a> is generally available in v2.0, with a major focus across the release candidates on write-path throughput, correctness, and distributed operation.</p>
<p><strong>Write path &amp; ingest</strong>:</p>
<ul>
<li class=""><strong>Staged Append Writes</strong>: WAL-based staged append writes prevent partial writes and data loss on stream errors — batches commit atomically.</li>
<li class=""><strong>Inline Writes</strong>: Small writes are serialized as Arrow IPC and committed directly into the Cayenne metastore, bypassing the staged Vortex write path for low-latency ingest. Inline upserts atomically rewrite existing inline rows, inline data stays query-visible via an in-memory union scan, and rows are checkpointed to Vortex when thresholds are reached. Inline writes now also proceed with pending deletions in flight, and inline flush caps scale with available memory and storage class.</li>
<li class=""><strong>Fast-Path CDC Deletes</strong>: <code>DELETE</code> statements whose filters identify primary keys directly — including composite keys expressed as <code>(k1, k2) IN ((...), (...))</code> — skip the table scan entirely.</li>
<li class=""><strong>Merge-On-Read Position Deletes</strong>: Primary-key upsert tables use position deletes with memory-pool accounting, avoiding full-table rewrites on update-heavy workloads.</li>
<li class=""><strong>Resident Upsert Keysets</strong>: CDC upsert primary-key keysets stay resident between batches, avoiding per-batch full-table rebuilds.</li>
<li class=""><strong>CDC Sub-Batch Efficiency</strong>: Interleaved upsert/delete workloads produce fewer sub-batch splits, with last-write-wins deduplication applied within batches.</li>
<li class=""><strong>Dedicated Compaction Runtime</strong>: Background compaction runs on a dedicated thread pool with CDC pipelining and protected snapshots, isolating compaction work from query and ingest paths.</li>
</ul>
<p><strong>Query &amp; planning</strong>:</p>
<ul>
<li class=""><strong>Join Filter Propagation</strong>: Filters propagate across equi-join keys, with range fallback for large join filters and IN-list rewrites.</li>
<li class=""><strong>Write-Path Join-Sizing Statistics</strong>: Cayenne maintains live row counts and HyperLogLog-based distinct-value estimates on the write path, so distributed <code>JoinSelection</code> can correctly size joins without rescans.</li>
<li class=""><strong>Scan-Result Cache</strong>: A new scan-result cache accelerates hot reads, with parallel Vortex partition writes and lock-free deletion caches with bloom-prefiltered probes.</li>
</ul>
<p><strong>SQL &amp; catalog</strong>:</p>
<ul>
<li class=""><strong>MERGE INTO</strong>: Upsert-style <code>MERGE INTO</code> for Cayenne catalog tables, distributed across executors in cluster mode.</li>
<li class=""><strong><code>PARTITION BY</code> in SQL</strong>: Define partitioning directly in <code>CREATE TABLE ... PARTITION BY (...)</code>; metadata is persisted in the catalog and survives restarts.</li>
<li class=""><strong>Composite Partitioning</strong>: <code>partition_by: [col1, col2]</code> with hierarchical path-like keys.</li>
<li class=""><strong>File-Based Retention Deletes</strong>: Time-based retention uses file-level deletes for both position-based and primary-key tables.</li>
</ul>
<p><strong>Correctness</strong>: Synchronized partition commits, correct <code>NULL</code>-sentinel handling for nullable partition expressions, tombstoned inline-checkpointed rows on upsert (preventing duplicate primary keys), and live reads through expired protected snapshots.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="multi-active-ha-distributed-query-ga">Multi-Active HA Distributed Query (GA)<a href="https://spiceai.org/releases/v2.0-stable#multi-active-ha-distributed-query-ga" class="hash-link" aria-label="Direct link to Multi-Active HA Distributed Query (GA)" title="Direct link to Multi-Active HA Distributed Query (GA)" translate="no">​</a></h3>
<blockquote>
<p><a href="https://docs.spice.ai/docs/enterprise" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a> feature. See <a href="https://docs.spice.ai/docs/enterprise/production/high-availability" target="_blank" rel="noopener noreferrer" class="">High Availability</a>.</p>
</blockquote>
<p><a href="https://spiceai.org/docs/features/distributed-query" target="_blank" rel="noopener noreferrer" class="">Distributed Query</a> is generally available. Built on Apache Ballista, it distributes query execution across multiple active executor nodes with no single point of failure, reading directly from object storage rather than relying on a central cluster.</p>
<p>Distributed query supports two execution modes:</p>
<ul>
<li class=""><strong>Synchronous</strong>: Queries for accelerated datasets are distributed across executors and results stream back in real-time — best for interactive, latency-sensitive queries.</li>
<li class=""><strong>Asynchronous</strong>: Queries submitted via the HTTP <code>/v1/queries</code> API materialize results to object storage for later retrieval — best for long-running analytical and batch workloads.</li>
</ul>
<p><strong>Key capabilities</strong>:</p>
<ul>
<li class=""><strong>Dynamic Cluster Sizing</strong>: The planner adjusts parallelism to the number of active executors as nodes join or leave.</li>
<li class=""><strong>Distributed Ingestion</strong>: Ingestion for partitioned accelerated tables is distributed across executors, with partition-aware write-through splitting scheduler-side Flight <code>DoPut</code> writes to the responsible executors.</li>
<li class=""><strong>Data-Local Query Routing</strong>: Cayenne catalog queries route to the executors holding the relevant partitions.</li>
<li class=""><strong>Per-Executor Table Statistics</strong>: Executors report table statistics — including NDV-aware estimates — so distributed <code>JoinSelection</code> can size joins correctly, fixing out-of-memory conditions on large semi-joins.</li>
<li class=""><strong>Readiness &amp; Failure Detection</strong>: <code>/v1/ready</code> gates on a configurable executor quorum for safe rolling deployments; scheduler readiness additionally waits for executor partition loads; executor heartbeat timeout reduced from 180s to 30s.</li>
<li class=""><strong>Distributed DML &amp; DDL</strong>: UPDATE/DELETE forwarding to all executors, executor DDL sync for late joiners, and distributed <code>MERGE INTO</code>.</li>
<li class=""><strong>Cluster Observability</strong>: New cluster metrics (including <code>scheduler_active_executors_count</code>), distributed <code>runtime.task_history</code> replication, and a Grafana dashboard.</li>
<li class=""><strong>Ballista S3 Shuffle</strong>: Async queries with <code>runtime.params.shuffle_location: s3://...</code> complete reliably with executor-environment-derived S3 clients.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security-mutual-tls-secret-stores-and-hardening">Security: Mutual TLS, Secret Stores, and Hardening<a href="https://spiceai.org/releases/v2.0-stable#security-mutual-tls-secret-stores-and-hardening" class="hash-link" aria-label="Direct link to Security: Mutual TLS, Secret Stores, and Hardening" title="Direct link to Security: Mutual TLS, Secret Stores, and Hardening" translate="no">​</a></h3>
<blockquote>
<p>Several capabilities in this section are <a href="https://docs.spice.ai/docs/enterprise" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a> features. See <a href="https://docs.spice.ai/docs/enterprise/production/security" target="_blank" rel="noopener noreferrer" class="">Enterprise Security</a>.</p>
</blockquote>
<p><strong>Mutual TLS</strong> across the platform:</p>
<ul>
<li class=""><strong>Public mTLS for HTTP and Flight</strong>: <code>client_auth_mode: request</code> (optional, for migration windows) or <code>required</code> (strict) client-certificate verification.</li>
<li class=""><strong>TLS Cert Hot-Reload</strong>: The runtime reloads TLS certificates on <code>SIGHUP</code> for zero-downtime rotation.</li>
<li class=""><strong>Outbound mTLS Client Certificates</strong>: FlightSQL and Spice.ai data connectors present client certificates to upstream services; the <code>spice sql</code> REPL supports mTLS client auth.</li>
</ul>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">tls</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">certificate_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /etc/spice/tls/server.crt</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">key_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /etc/spice/tls/server.key</span><br></div><div class="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_auth_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> required</span><br></div><div class="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_auth_ca_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /etc/spice/tls/client</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">ca.crt</span><br></div></code></pre></div></div>
<p><strong>Authentication &amp; Authorization</strong> (Spice.ai Enterprise):</p>
<ul>
<li class=""><strong>OIDC Authentication</strong>: Validate <a href="https://docs.spice.ai/docs/enterprise/features/authentication" target="_blank" rel="noopener noreferrer" class="">OIDC</a> bearer tokens (JWTs) issued by enterprise identity providers — Microsoft Entra ID, Okta, Auth0, AWS Cognito, and Google — for secure access to runtime endpoints, standalone or combined with API keys.</li>
<li class=""><strong>Principal-Based Policy Enforcement</strong>: Fine-grained, Cedar-based <a href="https://docs.spice.ai/docs/enterprise/features/policy" target="_blank" rel="noopener noreferrer" class="">authorization policy</a> configured under <code>runtime.authorization</code> governs allow/deny access across datasets, models, tools, and endpoints. Combined with identity SQL functions (<code>current_principal()</code>, <code>current_principal_email()</code>, <code>current_principal_groups()</code>), policies enforce per-principal row-level filtering and column masking.</li>
</ul>
<p><strong>New Secret Stores</strong>: <a href="https://spiceai.org/docs/components/secret-stores/hashicorp-vault" target="_blank" rel="noopener noreferrer" class="">HashiCorp Vault</a> (KV v1/v2; <code>token</code>, <code>approle</code>, <code>kubernetes</code>, and <code>jwt</code> auth with automatic lease renewal) and <a href="https://spiceai.org/docs/components/secret-stores/azure-keyvault" target="_blank" rel="noopener noreferrer" class="">Azure Key Vault</a> (service principal, managed identity, workload identity, Azure CLI, or auto-detect; sovereign cloud support).</p>
<p><strong>Hardening</strong>:</p>
<ul>
<li class=""><strong>Read-only API Key Enforcement</strong> on the Flight <code>DoGet</code> path and async query endpoints.</li>
<li class=""><strong>Per-Principal Cache Namespacing</strong>: SQL, search, and caching-accelerator caches are namespaced per authenticated principal so cached results never cross identity boundaries.</li>
<li class=""><strong>API Key Timing Leak &amp; Remote-UDF SSRF</strong>: Closed a timing-based position-disclosure leak in API key comparison and blocked SSRF via remote UDF endpoints.</li>
<li class=""><strong>Snowflake Function Deny-List</strong>: A function deny-list is enforced in Snowflake federation pushdown, and Snowflake account identifiers and auth configuration are validated at startup.</li>
<li class=""><strong>MCP <code>allowed_hosts</code></strong>: MCP servers can be restricted to an explicit allowlist of upstream hosts.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="change-data-capture-cdc-sources">Change Data Capture (CDC) Sources<a href="https://spiceai.org/releases/v2.0-stable#change-data-capture-cdc-sources" class="hash-link" aria-label="Direct link to Change Data Capture (CDC) Sources" title="Direct link to Change Data Capture (CDC) Sources" translate="no">​</a></h3>
<p>See <a href="https://spiceai.org/docs/features/cdc" target="_blank" rel="noopener noreferrer" class="">Change Data Capture (CDC)</a> for an overview of CDC in Spice.</p>
<ul>
<li class=""><strong>MongoDB Change Streams</strong>: <a href="https://spiceai.org/docs/components/data-connectors/mongodb" target="_blank" rel="noopener noreferrer" class="">MongoDB</a> datasets with <code>refresh_mode: changes</code> stream changes natively into any local accelerator — no Debezium or Kafka required.</li>
<li class=""><strong>PostgreSQL Native Replication (WAL)</strong>: <a href="https://spiceai.org/docs/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a> datasets stream INSERT/UPDATE/DELETE directly from logical replication using <code>pgoutput</code> decoding, with automatic per-replica slot management, an initial <code>REPEATABLE READ</code> bootstrap snapshot, and durable LSN acknowledgement.</li>
<li class=""><strong>Kafka CDC Offset Persistence</strong>: <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka</a> CDC offsets persist in sidecar tables for durable, resumable streams across restarts and failovers.</li>
<li class=""><strong>Pipelined CDC Ingestion</strong>: Source reads overlap with batch apply, with envelope coalescing and improved nullability propagation.</li>
<li class=""><strong>Debezium Schema Evolution</strong>: Schema changes in <a href="https://spiceai.org/docs/components/data-connectors/debezium" target="_blank" rel="noopener noreferrer" class="">Debezium</a>-sourced datasets no longer break dataset initialization on reload.</li>
</ul>
<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"><div 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></div><div 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">my_table</span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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"> mydb</span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dml-ddl-and-write-back">DML, DDL, and Write-Back<a href="https://spiceai.org/releases/v2.0-stable#dml-ddl-and-write-back" class="hash-link" aria-label="Direct link to DML, DDL, and Write-Back" title="Direct link to DML, DDL, and Write-Back" translate="no">​</a></h3>
<p>Spice v2.0 turns more connectors and catalogs into full read/write tables:</p>
<ul>
<li class=""><strong>PostgreSQL DML</strong>: <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> write-back on <a href="https://spiceai.org/docs/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a> datasets, with foreign-key metadata exposed via the PostgreSQL catalog connector.</li>
<li class=""><strong>Snowflake DML</strong>: <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> write-back on <a href="https://spiceai.org/docs/components/data-connectors/snowflake" target="_blank" rel="noopener noreferrer" class="">Snowflake</a> datasets.</li>
<li class=""><strong>DynamoDB DML</strong>: <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> for <a href="https://spiceai.org/docs/components/data-connectors/dynamodb" target="_blank" rel="noopener noreferrer" class="">DynamoDB</a>, complementing read and CDC streaming.</li>
<li class=""><strong>Arrow Primary Key Upserts</strong>: Native update-or-insert semantics for in-memory <a href="https://spiceai.org/docs/components/data-accelerators/arrow" target="_blank" rel="noopener noreferrer" class="">Arrow</a>-accelerated tables.</li>
<li class=""><strong>DDL for Iceberg</strong>: <code>CREATE TABLE</code> and <code>DROP TABLE</code> via FlightSQL and <code>/v1/sql</code> for <a href="https://iceberg.apache.org/" target="_blank" rel="noopener noreferrer" class="">Iceberg</a>, with <code>catalog.access: read_write_create</code>.</li>
<li class=""><strong>DuckLake INSERT</strong>: DuckLake catalog tables with <code>read_write</code> access support <code>INSERT</code>.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="sql--user-defined-functions">SQL &amp; User-Defined Functions<a href="https://spiceai.org/releases/v2.0-stable#sql--user-defined-functions" class="hash-link" aria-label="Direct link to SQL &amp; User-Defined Functions" title="Direct link to SQL &amp; User-Defined Functions" translate="no">​</a></h3>
<p>See the <a href="https://spiceai.org/docs/reference/sql" target="_blank" rel="noopener noreferrer" class="">SQL Reference</a> for the full SQL surface area.</p>
<ul>
<li class=""><strong>User-Defined Functions</strong>: Define reusable SQL UDFs as first-class spicepod components, or invoke remote functions over HTTP (Spice.ai Enterprise), plus table user functions.</li>
<li class=""><strong>Spatial SQL UDFs</strong>: Optional geospatial <code>ST_*</code> UDFs for geometry workloads.</li>
<li class=""><strong>JSON UDTFs</strong>: <code>flatten_json</code>, <code>json_tree</code>, and <code>flatten_json_properties</code> table-valued functions for JSON transformation and schema decomposition (with options such as <code>expand_maps</code>). See <a href="https://spiceai.org/docs/reference/sql/json" target="_blank" rel="noopener noreferrer" class="">JSON Functions and Operators</a>.</li>
<li class=""><strong>PostgreSQL Metadata UDFs</strong>: Dataset and column descriptions are exposed via PostgreSQL-compatible UDFs (<code>obj_description</code>, <code>col_description</code>), so BI tools and <code>psql</code> surface Spice metadata.</li>
<li class=""><strong>FlightSQL Substrait Plans</strong>: <code>CommandStatementSubstraitPlan</code> support for clients submitting Substrait-encoded plans.</li>
<li class=""><strong>SQL REPL Expanded View</strong>: Toggle <code>\x</code> for a vertical key-value layout on wide result sets.</li>
<li class=""><strong>Prepared statement, federation, and unparsing fixes</strong> across the engine, including keeping correlated subqueries out of <code>JOIN ON</code> conditions for Spice Cloud federation and correct <code>EXISTS</code>/<code>NOT EXISTS</code> subquery handling in the federation analyzer.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="runtime-features">Runtime Features<a href="https://spiceai.org/releases/v2.0-stable#runtime-features" class="hash-link" aria-label="Direct link to Runtime Features" title="Direct link to Runtime Features" translate="no">​</a></h3>
<ul>
<li class=""><strong>On-Demand Dataset Loading</strong>: Datasets can be deferred — registered with a declared schema at startup (<code>columns[].type</code>, <code>columns[].nullable</code>) and fully resolved on first reference, reducing startup time and memory for large spicepods.</li>
<li class=""><strong>Unified Query Cancellation</strong>: HTTP, Flight, FlightSQL, MCP, and internal execution paths honour a unified cancellation signal — disconnects, REPL <code>Ctrl-C</code>, and cancelled HTTP requests cancel the query end-to-end.</li>
<li class=""><strong>Storage-Profile Accelerator Tuning</strong>: <code>acceleration.storage_profile</code> (<code>auto</code>, <code>local_ssd</code>, <code>ebs</code>, <code>tmpfs</code>) applies storage-aware defaults across DuckDB, SQLite, Turso, and Cayenne file-mode accelerators; <code>auto</code> detects the backing storage.</li>
<li class=""><strong><code>refresh_mode: snapshot</code></strong> (Spice.ai Enterprise): Point-in-time snapshot acceleration with SQLite/Turso WAL flushing and Cayenne metastore slice integration, now reporting accurate readiness when no snapshot exists yet.</li>
<li class=""><strong>Structured Component Errors</strong>: <code>/v1/datasets?status=true</code> and <code>/v1/models?status=true</code> return structured <code>error</code> objects (<code>category</code>, <code>type</code>, <code>code</code>) and human-readable <code>error_message</code> fields; the CLI shows an <code>ERROR</code> column.</li>
<li class=""><strong>Actionable Config Errors</strong>: Parameter typos, missing secret references, and unknown engine names produce specific, actionable errors with suggestions.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spicepod-v2">Spicepod v2<a href="https://spiceai.org/releases/v2.0-stable#spicepod-v2" class="hash-link" aria-label="Direct link to Spicepod v2" title="Direct link to Spicepod v2" translate="no">​</a></h3>
<p>Spicepods now support <code>version: v2</code>, the default for <code>spice init</code>, while <code>v1</code> spicepods continue to work with automatic migration of deprecated fields.</p>
<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>
<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>
<p>New v2 fields include <code>runtime.ready_state</code>, <code>runtime.query.spill_compression</code>, <code>runtime.caching.sql_results.stale_while_revalidate_ttl</code>, <code>runtime.caching.sql_results.encoding</code>, scheduler partition-assignment configuration, and <code>catalog.access: read_write_create</code>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="data-connectors--catalogs">Data Connectors &amp; Catalogs<a href="https://spiceai.org/releases/v2.0-stable#data-connectors--catalogs" class="hash-link" aria-label="Direct link to Data Connectors &amp; Catalogs" title="Direct link to Data Connectors &amp; Catalogs" translate="no">​</a></h3>
<p><strong>New connectors</strong>:</p>
<ul>
<li class=""><strong>Elasticsearch (Alpha, Spice.ai Enterprise)</strong>: Query Elasticsearch indexes as SQL tables with native hybrid search — <code>vector_search()</code> kNN, <code>text_search()</code> BM25, and <code>rrf()</code> fusion — plus Elasticsearch as a backing vector engine, direct FTS engine configuration, and index lifecycle controls.</li>
<li class=""><strong>GCS (Alpha)</strong>: Federated queries against Google Cloud Storage, with Iceberg table support.</li>
<li class=""><strong>Azure Cosmos DB (Alpha)</strong>: Read-only NoSQL / Core SQL API connector with cross-partition scans and schema inference.</li>
<li class=""><strong>Git (RC)</strong>: HTTPS/SSH auth, Git LFS support, and per-repo connection resilience.</li>
<li class=""><strong>ADBC</strong>: Data connector and catalog with full query federation, BigQuery support, and schema/table discovery.</li>
<li class=""><strong>DuckLake (Beta)</strong>: Lakehouse-style data management with DuckDB as the metadata catalog and object storage for data — ACID transactions, time travel, and schema evolution on Parquet.</li>
<li class=""><strong>Self-Hosted Spice Connector</strong>: Connect Spice to another self-hosted Spice runtime as a federated source.</li>
</ul>
<p><strong>New catalog connectors</strong> for <a href="https://spiceai.org/docs/components/catalogs/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a>, <a href="https://spiceai.org/docs/components/catalogs/mysql" target="_blank" rel="noopener noreferrer" class="">MySQL</a>, <a href="https://spiceai.org/docs/components/catalogs/mssql" target="_blank" rel="noopener noreferrer" class="">MSSQL</a>, and <a href="https://spiceai.org/docs/components/catalogs/snowflake" target="_blank" rel="noopener noreferrer" class="">Snowflake</a>, using native metadata catalogs for schema and table discovery. <a href="https://spiceai.org/docs/components/catalogs/unity-catalog" target="_blank" rel="noopener noreferrer" class="">Unity Catalog</a> compatibility extends to OSS Unity Catalog deployments, and DDL-defined catalogs can expose and query views.</p>
<p><strong>HTTP connector</strong>: OAuth2 refresh-token authentication, query-parameter and no-limit pagination, dynamic request headers parameterised from query predicates, subquery-driven request parameters for fan-out queries, response metadata as queryable columns, map-to-array conversion, shared and persistent rate-control state across restarts and replicas, no caching of transient <code>429</code>/<code>5xx</code> errors, and a correctly populated <code>fetched_at</code> column.</p>
<p><strong>JSON ingestion</strong>: Single-object documents, JSONL, BOM-prefixed input, Socrata SODA responses, format auto-detection, and RFC 6901 <code>json_pointer</code> extraction of nested payloads.</p>
<p><strong>Databricks</strong>: Resilience controls, Unity Catalog-aware permission prechecks with structured advisory errors, Classic SQL Warehouse foreign-table compatibility, <code>connect_timeout</code>/<code>client_timeout</code> parameters, a Databricks SQL dialect for federation, and <a href="https://spiceai.org/docs/components/data-connectors/delta-lake" target="_blank" rel="noopener noreferrer" class="">Delta Lake column mapping</a> (Name and Id modes).</p>
<p><strong>Other connector improvements</strong>: MongoDB SRV support; MySQL <code>mysql_zero_date_behavior</code>; Snowflake <code>OBJECT</code>, <code>MAP</code>, <code>GEOGRAPHY</code>, <code>GEOMETRY</code>, <code>VECTOR</code>, and <code>TIMESTAMP_LTZ</code> types plus key-pair auth; ClickHouse <code>Date32</code>; S3 <code>s3_url_style</code> for path-style addressing and faster Parquet reads; GraphQL custom auth headers; Oracle and MSSQL sort/limit pushdown; GitHub GraphQL resilience; and improved Kafka reliability.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="ai--llm">AI &amp; LLM<a href="https://spiceai.org/releases/v2.0-stable#ai--llm" class="hash-link" aria-label="Direct link to AI &amp; LLM" title="Direct link to AI &amp; LLM" translate="no">​</a></h3>
<ul>
<li class=""><strong>Provider-Aware Prompt Caching</strong>: <a href="https://spiceai.org/docs/features/large-language-models" target="_blank" rel="noopener noreferrer" class="">LLM</a> calls automatically use provider-side prompt caching (e.g., Anthropic, OpenAI) for system prompts and tool descriptions, reducing latency and cost.</li>
<li class=""><strong>Responses API Across All Providers</strong>: The Responses API works with every configured model provider, including streaming <code>response.output_text.delta</code> events and <code>Authorization: Bearer</code> header support.</li>
<li class=""><strong>Multi-Vector Embeddings with MaxSim</strong>: List-of-string columns produce one embedding per element with MaxSim/mean/sum scoring for ColBERT-style late-interaction retrieval, plus a <code>_match</code> column identifying the best-matching element.</li>
<li class=""><strong><code>rerank()</code> UDTF</strong>: Reorder results from <code>vector_search</code>, <code>text_search</code>, or <code>rrf</code> using any registered chat model as a reranker, with automatic query propagation and pushdown support.</li>
<li class=""><strong>Searchable LLM Tool Registry</strong>: Agents discover tools via semantic search instead of enumerating every tool in the system prompt.</li>
<li class=""><strong>MCP Improvements</strong>: Streamable HTTP transport (<code>/v1/mcp</code>) on rmcp v1.5.0, native auth for streamable HTTP tools (<code>mcp_auth_token</code>, <code>mcp_headers</code>), external MCP server tool calls traced in task history, and configurable <code>allowed_hosts</code>.</li>
<li class=""><strong>Per-Model Rate-Limited AI UDF Execution</strong> for controlling concurrent AI function invocations.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="search--vectors">Search &amp; Vectors<a href="https://spiceai.org/releases/v2.0-stable#search--vectors" class="hash-link" aria-label="Direct link to Search &amp; Vectors" title="Direct link to Search &amp; Vectors" translate="no">​</a></h3>
<ul>
<li class=""><strong>DuckDB Vector Engine</strong>: <code>vector_engine: duckdb</code> uses DuckDB's HNSW index for fast approximate nearest-neighbor search without an external vector store. In v2.0.0, the DuckDB VSS extension is <strong>statically linked</strong> into the bundled DuckDB, so HNSW vector search works out-of-the-box on clean machines with no extension download. HNSW indexes are preserved across data refresh, and <code>cosine_distance</code> pushes down via <code>array_cosine_distance</code>.</li>
<li class=""><strong>Hybrid Search</strong>: Combine kNN vector search and BM25 full-text search with reciprocal rank fusion (<code>rrf()</code>), backed by Tantivy, Elasticsearch, or DuckDB.</li>
<li class=""><strong>Full-Text Search Performance</strong>: Significantly faster Tantivy ingestion with rollback-on-error, and search metadata is correctly preserved on indexing and in Vortex physical schema calculation.</li>
<li class=""><strong>Embedding Validation</strong>: <code>row_id</code> columns are validated during dataset initialization.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="caching">Caching<a href="https://spiceai.org/releases/v2.0-stable#caching" class="hash-link" aria-label="Direct link to Caching" title="Direct link to Caching" translate="no">​</a></h3>
<p>Improvements across <a href="https://spiceai.org/docs/features/caching" target="_blank" rel="noopener noreferrer" class="">Caching</a>:</p>
<ul>
<li class=""><strong>Stale-While-Revalidate</strong>: <code>runtime.caching.sql_results.stale_while_revalidate_ttl</code> serves stale results while revalidating in the background.</li>
<li class=""><strong>Cache Encoding</strong>: Optional compression (e.g., <code>zstd</code>) for SQL results cache entries.</li>
<li class=""><strong>Retention Policies</strong> for cached query results, and improved CDC-driven cache invalidation (including view plan invalidation on updates).</li>
<li class=""><strong>Idle Cache Maintenance</strong>: Periodic maintenance drains invalidation predicates on idle caches, fixing unbounded memory growth in rarely-read caches.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="performance--query-engine">Performance &amp; Query Engine<a href="https://spiceai.org/releases/v2.0-stable#performance--query-engine" class="hash-link" aria-label="Direct link to Performance &amp; Query Engine" title="Direct link to Performance &amp; Query Engine" translate="no">​</a></h3>
<p><a href="https://datafusion.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion</a> is upgraded to <strong>v52.5</strong> over the course of the release cycle, bringing:</p>
<ul>
<li class=""><strong>Sort Pushdown to Scans</strong>: ~30x faster top-K queries on pre-sorted data; Parquet scans reverse row-group order for <code>DESC</code> on <code>ASC</code>-sorted files.</li>
<li class=""><strong>Rewritten Sort-Merge Join</strong>: Up to three orders of magnitude faster in pathological cases (e.g., TPC-H Q21: minutes → milliseconds).</li>
<li class=""><strong>Dynamic Filters</strong>: <code>MIN</code>/<code>MAX</code> aggregates and hash-join build sides prune files, row groups, and rows during execution.</li>
<li class=""><strong>Faster <code>CASE</code> Expressions, statistics caching, and prefix-aware list-files caching</strong> for faster planning.</li>
<li class=""><strong><code>TableProvider</code> DELETE/UPDATE hooks and the <code>RelationPlanner</code> API</strong> for extensible SQL planning.</li>
<li class=""><strong>Strict Overflow Handling</strong>: <code>try_cast_to</code> errors on overflow instead of silently producing NULLs.</li>
</ul>
<p>Additional engine work: default query memory limit raised from 70% to 90% with <code>GreedyMemoryPool</code>, partial aggregation optimization for <code>FlightSQLExec</code>, improved partitioned query planning, and metastore transaction support to prevent concurrent conflicts.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="rust-cli">Rust CLI<a href="https://spiceai.org/releases/v2.0-stable#rust-cli" class="hash-link" aria-label="Direct link to Rust CLI" title="Direct link to Rust CLI" translate="no">​</a></h3>
<p>The Spice CLI is completely rewritten from Go to Rust — a single <code>spice</code> binary built from the same codebase as <code>spiced</code>, with full feature parity across 27+ commands.</p>
<ul>
<li class=""><strong><code>spice query</code></strong>: Interactive REPL for <a href="https://spiceai.org/docs/features/query-federation/async-queries" target="_blank" rel="noopener noreferrer" class="">async queries</a> with multi-line SQL, progress indication, and cancellation.</li>
<li class=""><strong><code>spice dataset configure</code></strong>: Non-interactive flag-based configuration (<code>--from</code>, <code>--description</code>, <code>--param KEY=VALUE</code>, <code>--set</code>) alongside interactive prompts.</li>
<li class=""><strong><code>spice completions</code></strong>: Shell completion script generation.</li>
<li class=""><strong><code>--output=json</code></strong>: Machine-readable output for scripting; <code>spice login --output</code> adds <code>env</code>, <code>json</code>, and <code>keychain</code> modes.</li>
<li class=""><strong><code>spice init</code></strong> writes a <code>yaml-language-server</code> schema directive for IDE completions.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="observability">Observability<a href="https://spiceai.org/releases/v2.0-stable#observability" class="hash-link" aria-label="Direct link to Observability" title="Direct link to Observability" translate="no">​</a></h3>
<ul>
<li class=""><strong>OpenTelemetry</strong>: Exporter fixes, authenticated metrics export, configurable metric name prefix (<code>runtime.telemetry.metric_prefix</code>), delta temporality by default, and OTLP resource attributes via <code>runtime.telemetry.properties</code>.</li>
<li class=""><strong>Query Metrics</strong>: The <code>query_executions</code> metric gains a <code>datasets</code> dimension for per-dataset query attribution.</li>
<li class=""><strong>Ingestion Metrics</strong>: <code>rows_written</code>, <code>bytes_written</code>, and <code>dataset_acceleration_size_bytes</code> for acceleration refresh and Flight <code>DoPut</code>/ADBC ingestion, and <code>EXPLAIN ANALYZE</code> metrics in <code>FlightSQLExec</code>.</li>
<li class=""><strong>Task History</strong>: Distributed task history in cluster mode and tracing for external MCP server tool calls.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="notable-bug-fixes">Notable Bug Fixes<a href="https://spiceai.org/releases/v2.0-stable#notable-bug-fixes" class="hash-link" aria-label="Direct link to Notable Bug Fixes" title="Direct link to Notable Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>localpod synchronization</strong>: <code>localpod</code> child datasets correctly track parent refreshes when the parent uses the in-memory Arrow accelerator.</li>
<li class=""><strong>Spice Cloud federation</strong>: Correlated subqueries are kept out of <code>JOIN ON</code> conditions, fixing rejected federated queries.</li>
<li class=""><strong><code>refresh_mode: snapshot</code></strong>: No longer reports Ready with empty data when no snapshot exists.</li>
<li class=""><strong>Search metadata</strong>: Field and schema metadata preserved on search indexing and in Vortex physical schema calculation.</li>
<li class=""><strong>HTTP connector</strong>: <code>fetched_at</code> column is correctly populated.</li>
<li class=""><strong>Connector correctness</strong>: DynamoDB Streams transient-error retries and typed-NULL DML handling; ScyllaDB physical filter pushdown disabled to fix incorrect results; MSSQL <code>TOP N</code> pushdown; DuckDB DELETE/UPDATE on <code>full</code> and <code>caching</code> refresh modes; Turso checked arithmetic for timestamp conversions; ODBC queries no longer silently return 0 rows on failure; Flight <code>GetFlightInfo</code>/<code>DoGet</code> schema parity.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependency-updates">Dependency Updates<a href="https://spiceai.org/releases/v2.0-stable#dependency-updates" class="hash-link" aria-label="Direct link to Dependency Updates" title="Direct link to Dependency Updates" translate="no">​</a></h3>
<table><thead><tr><th>Dependency / Component</th><th>Version</th></tr></thead><tbody><tr><td><strong>DataFusion</strong></td><td>v52.5</td></tr><tr><td><strong>Ballista</strong></td><td>v52</td></tr><tr><td><strong>Arrow (arrow-rs)</strong></td><td>v57.2</td></tr><tr><td><strong>DuckDB</strong></td><td>v1.5.3 (with statically linked VSS)</td></tr><tr><td><strong>iceberg-rust</strong></td><td>v0.9.1</td></tr><tr><td><strong>Turso (libsql)</strong></td><td>v0.6.1</td></tr><tr><td><strong>Vortex</strong></td><td>v0.69.0</td></tr><tr><td><strong>delta_kernel</strong></td><td>v0.18.2</td></tr><tr><td><strong>rmcp (MCP)</strong></td><td>v1.5.0</td></tr><tr><td><strong>mistral.rs</strong></td><td>v0.8.x (candle v0.10.1)</td></tr><tr><td><strong>ADBC Core</strong></td><td>v0.23</td></tr><tr><td><strong>Rust toolchain</strong></td><td>v1.94.1</td></tr></tbody></table>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.0-stable#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/cluster2600" target="_blank" rel="noopener noreferrer" class="">@cluster2600</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/penberg" target="_blank" rel="noopener noreferrer" class="">@penberg</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.0-stable#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<ul>
<li class="">
<p><strong>Models included by default</strong>: The separate <code>models</code> build variant has been removed. Local LLM inference is always included in the default build and image.</p>
</li>
<li class="">
<p><strong>Windows native builds removed</strong>: Use <a href="https://learn.microsoft.com/en-us/windows/wsl/" target="_blank" rel="noopener noreferrer" class="">WSL</a> for local development.</p>
</li>
<li class="">
<p><strong>Spicepod version defaults to <code>v2</code></strong>: <code>spice init</code> creates <code>version: v2</code> spicepods. <code>v1</code> remains supported with auto-migration; <code>v1beta1</code> is no longer accepted.</p>
</li>
<li class="">
<p><strong>Flattened <code>runtime.scheduler</code> configuration</strong>: The nested <code>runtime.scheduler.partition_management</code> block is flattened and renamed:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Before</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_management</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 30s</span><br></div><div class="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_assignments_per_cycle</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%)">16</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">discovery_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)"># After</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_assignment_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 30s</span><br></div><div class="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_assignments_per_interval</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%)">16</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_discovery_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></div></code></pre></div></div>
</li>
<li class="">
<p><strong>S3 metadata columns renamed</strong>: <code>location</code>, <code>last_modified</code>, <code>size</code> → <code>_location</code>, <code>_last_modified</code>, <code>_size</code>.</p>
</li>
<li class="">
<p><strong>Default query memory limit changed</strong>: Increased from 70% to 90%.</p>
</li>
<li class="">
<p><strong>Metric renames</strong>: <code>accelerated_refresh</code> metrics renamed to <code>acceleration_refresh</code>; <code>last_refresh_time</code> gauge renamed to include the milliseconds unit.</p>
</li>
<li class="">
<p><strong>DuckDB parameter rename</strong>: <code>partitioned_write_flush_threshold</code> → <code>partitioned_write_flush_threshold_rows</code>.</p>
</li>
<li class="">
<p><strong><code>/v1/search</code> API</strong>: Always returns an array in <code>matches</code>, even for single results.</p>
</li>
<li class="">
<p><strong><code>/v1/evals</code> API removed</strong>.</p>
</li>
<li class="">
<p><strong>Perplexity model provider removed</strong>.</p>
</li>
<li class="">
<p><strong>x.ai model endpoint</strong>: x.ai models exclusively use the <code>/v1/responses</code> endpoint.</p>
</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrade-guide-from-v1x">Upgrade Guide from v1.x<a href="https://spiceai.org/releases/v2.0-stable#upgrade-guide-from-v1x" class="hash-link" aria-label="Direct link to Upgrade Guide from v1.x" title="Direct link to Upgrade Guide from v1.x" translate="no">​</a></h2>
<p>Most v1 spicepods continue to work on v2.0 — <code>v1</code> remains supported and deprecated fields auto-migrate at load time — so many deployments can upgrade by updating the binary or image alone. The steps below cover the <a href="https://spiceai.org/releases/v2.0-stable#breaking-changes" class="">breaking changes</a> that may require manual action. Review each before upgrading a production deployment.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="1-build-image-and-platform-changes">1. Build, image, and platform changes<a href="https://spiceai.org/releases/v2.0-stable#1-build-image-and-platform-changes" class="hash-link" aria-label="Direct link to 1. Build, image, and platform changes" title="Direct link to 1. Build, image, and platform changes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Models are now included by default.</strong> The separate <code>models</code> build variant (and the corresponding <code>-models</code> image tags) has been removed; local LLM inference is always included in the default build and image. If your deployment pinned a <code>models</code> build or <code>-models</code>-tagged image, switch to the default build/image.</li>
<li class=""><strong>Native Windows builds are removed.</strong> Use <a href="https://learn.microsoft.com/en-us/windows/wsl/" target="_blank" rel="noopener noreferrer" class="">WSL</a> for local Windows development.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="2-adopt-spicepod-v2-recommended">2. Adopt Spicepod <code>v2</code> (recommended)<a href="https://spiceai.org/releases/v2.0-stable#2-adopt-spicepod-v2-recommended" class="hash-link" aria-label="Direct link to 2-adopt-spicepod-v2-recommended" title="Direct link to 2-adopt-spicepod-v2-recommended" translate="no">​</a></h3>
<p><code>spice init</code> now creates <code>version: v2</code> spicepods. <code>v1</code> spicepods remain supported with automatic migration, but <code>v1beta1</code> is no longer accepted. To move to <code>v2</code>, set <code>version: v2</code> and update the following fields — each auto-migrates from <code>v1</code>, but updating now clears the deprecation:</p>
<table><thead><tr><th>v1 (deprecated)</th><th>v2 (preferred)</th></tr></thead><tbody><tr><td><code>runtime.results_cache</code></td><td><code>runtime.caching.sql_results</code> (<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></tr><tr><td><code>runtime.temp_directory</code></td><td><code>runtime.query.temp_directory</code></td></tr><tr><td><code>dataset.invalid_type_action</code></td><td><code>dataset.unsupported_type_action</code></td></tr></tbody></table>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="3-update-changed-configuration">3. Update changed configuration<a href="https://spiceai.org/releases/v2.0-stable#3-update-changed-configuration" class="hash-link" aria-label="Direct link to 3. Update changed configuration" title="Direct link to 3. Update changed configuration" translate="no">​</a></h3>
<ul>
<li class=""><strong>DuckDB parameter rename:</strong> <code>partitioned_write_flush_threshold</code> → <code>partitioned_write_flush_threshold_rows</code>.</li>
<li class=""><strong>Default query memory limit raised from 70% to 90%.</strong> If you relied on the previous default to leave headroom for other processes on the host, set it explicitly via <code>runtime.query.memory_limit</code>.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="4-update-queries-and-api-clients">4. Update queries and API clients<a href="https://spiceai.org/releases/v2.0-stable#4-update-queries-and-api-clients" class="hash-link" aria-label="Direct link to 4. Update queries and API clients" title="Direct link to 4. Update queries and API clients" translate="no">​</a></h3>
<ul>
<li class=""><strong>S3 metadata columns renamed:</strong> <code>location</code>, <code>last_modified</code>, <code>size</code> → <code>_location</code>, <code>_last_modified</code>, <code>_size</code>. Update any queries that reference these columns.</li>
<li class=""><strong><code>/v1/search</code> always returns an array</strong> in <code>matches</code>, even for a single result. Update clients that assumed a scalar value.</li>
<li class=""><strong><code>/v1/evals</code> API removed.</strong> Remove integrations that depend on it.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="5-update-model-providers">5. Update model providers<a href="https://spiceai.org/releases/v2.0-stable#5-update-model-providers" class="hash-link" aria-label="Direct link to 5. Update model providers" title="Direct link to 5. Update model providers" translate="no">​</a></h3>
<ul>
<li class=""><strong>Perplexity model provider removed.</strong> Re-point affected models to another provider.</li>
<li class=""><strong>x.ai models use the <code>/v1/responses</code> endpoint exclusively.</strong> Ensure x.ai integrations target the Responses API.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="6-update-observability">6. Update observability<a href="https://spiceai.org/releases/v2.0-stable#6-update-observability" class="hash-link" aria-label="Direct link to 6. Update observability" title="Direct link to 6. Update observability" translate="no">​</a></h3>
<ul>
<li class=""><strong>Metric renames:</strong> <code>accelerated_refresh</code> → <code>acceleration_refresh</code>, and the <code>last_refresh_time</code> gauge is renamed to include the milliseconds unit. Update dashboards and alerts that reference these metric names.</li>
</ul>
<p>After updating, restart the runtime and verify datasets and models report ready via <code>/v1/datasets?status=true</code> and <code>/v1/models?status=true</code> (the CLI shows a <code>Ready</code>/<code>ERROR</code> column).</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.0-stable#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>New <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> recipes added during the v2.0 release cycle:</p>
<ul>
<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>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/catalogs/ducklake" target="_blank" rel="noopener noreferrer" class="">DuckLake Catalog</a></strong>: Lakehouse-style data management with ACID transactions and time travel.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/distributed" target="_blank" rel="noopener noreferrer" class="">Distributed Query</a></strong>: Run Spice in multi-active distributed cluster mode.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/mtls" target="_blank" rel="noopener noreferrer" class="">mTLS</a></strong>: Mutual TLS for HTTP and Flight endpoints.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/elasticsearch/connector" target="_blank" rel="noopener noreferrer" class="">Elasticsearch Connector</a></strong>: Query Elasticsearch indexes as SQL tables.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/mcp-server" target="_blank" rel="noopener noreferrer" class="">MCP Server</a></strong>: Use Spice as an MCP server over Streamable HTTP.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/snowflake/dml" target="_blank" rel="noopener noreferrer" class="">Snowflake DML</a></strong>: Write-back to Snowflake with INSERT/UPDATE/DELETE.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/catalogs/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a>, <a href="https://github.com/spiceai/cookbook/blob/trunk/catalogs/mysql" target="_blank" rel="noopener noreferrer" class="">MySQL</a>, and <a href="https://github.com/spiceai/cookbook/blob/trunk/catalogs/mssql" target="_blank" rel="noopener noreferrer" class="">MSSQL</a> Catalogs</strong>: Schema and table discovery for external databases.</li>
<li class=""><strong><a href="https://github.com/spiceai/cookbook/blob/trunk/full-text-search" target="_blank" rel="noopener noreferrer" class="">Full-Text Search</a></strong>: BM25 full-text search over accelerated datasets.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes more than 100 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.0-stable#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.0.0, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.0</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.0</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.0.0</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.0-stable#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.0-stable#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<li class="">Make time_format deserialization case-insensitive by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/9955" target="_blank" rel="noopener noreferrer" class="">#9955</a></li>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<li class="">fix: Full Text Search schema mismatch with 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/10235" target="_blank" rel="noopener noreferrer" class="">#10235</a></li>
<li class="">docs: Update v2.0.0-rc.2 release notes with latest 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/10238" target="_blank" rel="noopener noreferrer" class="">#10238</a></li>
<li class="">Fix append refresh dedup failure when refresh_sql selects column subset by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10225" target="_blank" rel="noopener noreferrer" class="">#10225</a></li>
<li class="">Revert "Properly mark dataset as Ready on Scheduler (#10215)" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10242" target="_blank" rel="noopener noreferrer" class="">#10242</a></li>
<li class="">Fix failing merge conflicts 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/10247" target="_blank" rel="noopener noreferrer" class="">#10247</a></li>
<li class="">fix(github): fetch commits for dynamic and slash refs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10233" target="_blank" rel="noopener noreferrer" class="">#10233</a></li>
<li class="">Upgrade DataFusion to v52.5.0-rc1 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10249" target="_blank" rel="noopener noreferrer" class="">#10249</a></li>
<li class="">Merge develop to trunk (2026-04-09) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10248" target="_blank" rel="noopener noreferrer" class="">#10248</a></li>
<li class="">fix: Validate embedding row_id columns during dataset init (fixes #8226) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10208" target="_blank" rel="noopener noreferrer" class="">#10208</a></li>
<li class="">fix: Update tpch benchmark snapshots for federated/glue[csv].yaml 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/10244" target="_blank" rel="noopener noreferrer" class="">#10244</a></li>
<li class="">feat(databricks): add resilience controls, UC awareness, and task history instrumentation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10246" target="_blank" rel="noopener noreferrer" class="">#10246</a></li>
<li class="">fix: Make PartitionManager resilient to bare vs fully qualified table references by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10257" target="_blank" rel="noopener noreferrer" class="">#10257</a></li>
<li class="">fix: Update tpch benchmark snapshots for accelerated/s3[parquet]-cayenne[file].yaml 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/10256" target="_blank" rel="noopener noreferrer" class="">#10256</a></li>
<li class="">Merge develop to trunk (2026-04-10) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10251" target="_blank" rel="noopener noreferrer" class="">#10251</a></li>
<li class="">Improve Snowflake/ADBC dataset registration performance and observability by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10266" target="_blank" rel="noopener noreferrer" class="">#10266</a></li>
<li class="">Fixes for kafka 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/10263" target="_blank" rel="noopener noreferrer" class="">#10263</a></li>
<li class="">fix(runtime): gate otel code tags, suppress aws sdk noise, and unblock connector init by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10260" target="_blank" rel="noopener noreferrer" class="">#10260</a></li>
<li class="">fix(runtime): avoid regionless AWS SDK loads by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10271" target="_blank" rel="noopener noreferrer" class="">#10271</a></li>
<li class="">Add versioned release install workflow 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/10276" target="_blank" rel="noopener noreferrer" class="">#10276</a></li>
<li class="">fix(runtime): handle HTTP JSON unions and spicepod reloads by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10277" target="_blank" rel="noopener noreferrer" class="">#10277</a></li>
<li class="">Databricks UC permission prechecks: explicit denial as permanent error, ambiguous cases advisory by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10274" target="_blank" rel="noopener noreferrer" class="">#10274</a></li>
<li class="">Revert component status changes re-introduced by develop merge (#10248) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10293" target="_blank" rel="noopener noreferrer" class="">#10293</a></li>
<li class="">Fix broken CI workflows by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10294" target="_blank" rel="noopener noreferrer" class="">#10294</a></li>
<li class="">Group dependabot updates by ecosystem by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10296" target="_blank" rel="noopener noreferrer" class="">#10296</a></li>
<li class="">fix(tests): Replace flaky S3 Vectors snapshot tests with structural 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/10301" target="_blank" rel="noopener noreferrer" class="">#10301</a></li>
<li class="">Update test_github_workflows snapshot by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10304" target="_blank" rel="noopener noreferrer" class="">#10304</a></li>
<li class="">fix(ci): fix Bedrock runner mismatch and snapshot auto-merge failure by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10306" target="_blank" rel="noopener noreferrer" class="">#10306</a></li>
<li class="">feat(http): Add map-to-array conversion and query-parameter pagination by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10295" target="_blank" rel="noopener noreferrer" class="">#10295</a></li>
<li class="">New crate: <code>datafusion-ddl</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/10205" target="_blank" rel="noopener noreferrer" class="">#10205</a></li>
<li class="">Make Databricks UC permission checks advisory with structured error reporting by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10283" target="_blank" rel="noopener noreferrer" class="">#10283</a></li>
<li class="">build(deps): bump the github-actions-dependencies group with 4 updates 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/10298" target="_blank" rel="noopener noreferrer" class="">#10298</a></li>
<li class="">fix: Clear cached plans on view 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/10312" target="_blank" rel="noopener noreferrer" class="">#10312</a></li>
<li class="">build(deps): bump the aws-sdk group with 7 updates 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/10299" target="_blank" rel="noopener noreferrer" class="">#10299</a></li>
<li class="">Code out of runtime. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10178" target="_blank" rel="noopener noreferrer" class="">#10178</a></li>
<li class="">fix: Respect function registry denies for accelerated table 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/10311" target="_blank" rel="noopener noreferrer" class="">#10311</a></li>
<li class="">fix: Don't block heartbeat when all slots acquired by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10322" target="_blank" rel="noopener noreferrer" class="">#10322</a></li>
<li class="">fix: strip only outer parens in <code>get_table_partition_expr_from_ctx</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/10323" target="_blank" rel="noopener noreferrer" class="">#10323</a></li>
<li class="">Upgrade datafusion-table-providers with MongoDB SRV 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/10317" target="_blank" rel="noopener noreferrer" class="">#10317</a></li>
<li class="">fix: Avoid pushing down bucketing partition expressions into 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/10324" target="_blank" rel="noopener noreferrer" class="">#10324</a></li>
<li class="">Upgrade datafusion-table-providers to d1b911a5 and bump adbc to 0.23 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10329" target="_blank" rel="noopener noreferrer" class="">#10329</a></li>
<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/10308" target="_blank" rel="noopener noreferrer" class="">#10308</a></li>
<li class="">Handle foreign table + Classic sql warehouse combination gracefully by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10318" target="_blank" rel="noopener noreferrer" class="">#10318</a></li>
<li class="">New crate <code>datafusion-flightsql</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/10201" target="_blank" rel="noopener noreferrer" class="">#10201</a></li>
<li class="">Set <code>tantivy=warn</code> unless very verbose logging by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10338" target="_blank" rel="noopener noreferrer" class="">#10338</a></li>
<li class="">Remove image registry and image name options from spidapter by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10241" target="_blank" rel="noopener noreferrer" class="">#10241</a></li>
<li class="">build(deps): bump sysinfo from 0.37.2 to 0.38.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/10291" target="_blank" rel="noopener noreferrer" class="">#10291</a></li>
<li class="">build(deps): bump futures from 0.3.31 to 0.3.32 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/10289" target="_blank" rel="noopener noreferrer" class="">#10289</a></li>
<li class="">New crate 'datafusion-dml' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10334" target="_blank" rel="noopener noreferrer" class="">#10334</a></li>
<li class="">Jeadie/26 04 16/spice 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/10343" target="_blank" rel="noopener noreferrer" class="">#10343</a></li>
<li class="">Add Teraswitch/Pittsburgh apt mirrors + retry config for CI runners by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10349" target="_blank" rel="noopener noreferrer" class="">#10349</a></li>
<li class="">Implement sort pushdown and fix pushdown gaps across 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/10337" target="_blank" rel="noopener noreferrer" class="">#10337</a></li>
<li class="">Merge develop to trunk (2026-04-16) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10345" target="_blank" rel="noopener noreferrer" class="">#10345</a></li>
<li class="">Update candle and mistral.rs lock-step pins by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10278" target="_blank" rel="noopener noreferrer" class="">#10278</a></li>
<li class="">docs: fix status badges in README by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10350" target="_blank" rel="noopener noreferrer" class="">#10350</a></li>
<li class="">Migrate secrets to vars by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10354" target="_blank" rel="noopener noreferrer" class="">#10354</a></li>
<li class="">Add limit pushdown and improve sort pushdown for Oracle and MSSQL by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10351" target="_blank" rel="noopener noreferrer" class="">#10351</a></li>
<li class="">Fix ubuntu mirror configuration by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10359" target="_blank" rel="noopener noreferrer" class="">#10359</a></li>
<li class="">fix: Increase throughput test default ready_wait from 30s to 300s (fixes #8207) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10344" target="_blank" rel="noopener noreferrer" class="">#10344</a></li>
<li class="">Add auth headers support to OTEL metrics exporter by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10347" target="_blank" rel="noopener noreferrer" class="">#10347</a></li>
<li class="">fix(github): shrink GraphQL page size on gateway errors; lower comment defaults by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10355" target="_blank" rel="noopener noreferrer" class="">#10355</a></li>
<li class="">Relax apt mirror substitution failure to warning in CI action by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10361" target="_blank" rel="noopener noreferrer" class="">#10361</a></li>
<li class="">feat(http): Add OAuth2 refresh-token auth to HTTP 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/10348" target="_blank" rel="noopener noreferrer" class="">#10348</a></li>
<li class="">Upgrade Rust toolchain to 1.94.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/10353" target="_blank" rel="noopener noreferrer" class="">#10353</a></li>
<li class="">Handle order by and sort in PartitionedTableScanRewrite by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/9656" target="_blank" rel="noopener noreferrer" class="">#9656</a></li>
<li class="">Fix OTEL Exporter by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10363" target="_blank" rel="noopener noreferrer" class="">#10363</a></li>
<li class="">Pin spiceai candle / TEI forks to merged revs; drop local [patch] overrides by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10362" target="_blank" rel="noopener noreferrer" class="">#10362</a></li>
<li class="">Integrate spiceio and makefile_targets into pr.yml by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10357" target="_blank" rel="noopener noreferrer" class="">#10357</a></li>
<li class="">ci: skip artifact compression for test binaries/archives by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10381" target="_blank" rel="noopener noreferrer" class="">#10381</a></li>
<li class="">chore(deps): bump spiceai/candle, spiceai/mistral.rs, aws-lc-rs, tantivy, rand by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10379" target="_blank" rel="noopener noreferrer" class="">#10379</a></li>
<li class="">Bump datafusion-table-providers (#10375) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10384" target="_blank" rel="noopener noreferrer" class="">#10384</a></li>
<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/10376" target="_blank" rel="noopener noreferrer" class="">#10376</a></li>
<li class="">v2.0.0-rc.3 preparation by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10382" target="_blank" rel="noopener noreferrer" class="">#10382</a></li>
<li class="">fix(spicepod): JSON schema accepts string or <code>{name: expr}</code> for <code>partition_by</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/10352" target="_blank" rel="noopener noreferrer" class="">#10352</a></li>
<li class="">fix: Use ROUND for Turso decimal BETWEEN comparisons (fixes #9872) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10360" target="_blank" rel="noopener noreferrer" class="">#10360</a></li>
<li class="">Revert "v2.0.0-rc.3 preparation" from trunk by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10386" target="_blank" rel="noopener noreferrer" class="">#10386</a></li>
<li class="">Add <code>on_schema_resolved</code> dataset ready state by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10368" target="_blank" rel="noopener noreferrer" class="">#10368</a></li>
<li class="">feat: Add Elasticsearch data connector with hybrid search 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/10258" target="_blank" rel="noopener noreferrer" class="">#10258</a></li>
<li class="">ci: bump test archive upload compression-level to 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/10388" target="_blank" rel="noopener noreferrer" class="">#10388</a></li>
<li class="">feat(git-connector): promote Git connector to RC status by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10385" target="_blank" rel="noopener noreferrer" class="">#10385</a></li>
<li class="">feat(postgres): stream WAL directly to Spice accelerators by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10364" target="_blank" rel="noopener noreferrer" class="">#10364</a></li>
<li class="">Add schema decomposition to the HTTP 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/10393" target="_blank" rel="noopener noreferrer" class="">#10393</a></li>
<li class="">fix(cayenne): Skip catalog refresh state reload for existing providers by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10396" target="_blank" rel="noopener noreferrer" class="">#10396</a></li>
<li class="">Make <code>cayenne-flightsql</code> tool by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10356" target="_blank" rel="noopener noreferrer" class="">#10356</a></li>
<li class="">build(deps): bump the github-actions-dependencies group with 2 updates 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/10398" target="_blank" rel="noopener noreferrer" class="">#10398</a></li>
<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/10272" target="_blank" rel="noopener noreferrer" class="">#10272</a></li>
<li class="">Merge develop to trunk — 2026-04-19 by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10407" target="_blank" rel="noopener noreferrer" class="">#10407</a></li>
<li class="">feat(otel): default OTLP push exporter to delta temporality by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10412" target="_blank" rel="noopener noreferrer" class="">#10412</a></li>
<li class="">fix: Restore analyzer rule ordering to run federation before type coercion by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10415" target="_blank" rel="noopener noreferrer" class="">#10415</a></li>
<li class="">fix: Map Utf8/LargeUtf8 to STRING in Databricks/Spark SQL dialects by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10420" target="_blank" rel="noopener noreferrer" class="">#10420</a></li>
<li class="">feat(otel): add metric name prefix at runtime.telemetry.metric_prefix by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10418" target="_blank" rel="noopener noreferrer" class="">#10418</a></li>
<li class="">fix: Map LargeUtf8 to VARCHAR in Athena ODBC dialect by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10419" target="_blank" rel="noopener noreferrer" class="">#10419</a></li>
<li class="">feat(cluster): connector-driven object store registration on 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/10414" target="_blank" rel="noopener noreferrer" class="">#10414</a></li>
<li class="">build(deps): bump ubuntu from 22.04 to 24.04 in the docker-dependencies group 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/10397" target="_blank" rel="noopener noreferrer" class="">#10397</a></li>
<li class="">fix: Update benchmark snapshots Apr 20 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/10417" target="_blank" rel="noopener noreferrer" class="">#10417</a></li>
<li class="">feat(otel): apply runtime.telemetry.properties as resource attributes on exported metrics by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10416" target="_blank" rel="noopener noreferrer" class="">#10416</a></li>
<li class="">Publish RC releases to DockerHub; upgrade runners to ubuntu-24.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/10428" target="_blank" rel="noopener noreferrer" class="">#10428</a></li>
<li class="">feat: Add Azure Cosmos DB (NoSQL) data connector (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/10392" target="_blank" rel="noopener noreferrer" class="">#10392</a></li>
<li class="">feat(datafusion): flatten_json_properties + json_tree UDTFs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10406" target="_blank" rel="noopener noreferrer" class="">#10406</a></li>
<li class="">Harden /v1/tools and /v1/nsql against unauthenticated / LLM-driven SQL by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10365" target="_blank" rel="noopener noreferrer" class="">#10365</a></li>
<li class="">feat(embeddings): multi-vector embeddings with MaxSim + late-interaction by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10408" target="_blank" rel="noopener noreferrer" class="">#10408</a></li>
<li class="">Update GH runners for CUDA builds by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10432" target="_blank" rel="noopener noreferrer" class="">#10432</a></li>
<li class="">fix(delta_lake): register object stores on 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/10436" target="_blank" rel="noopener noreferrer" class="">#10436</a></li>
<li class="">DF-native DML by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10327" target="_blank" rel="noopener noreferrer" class="">#10327</a></li>
<li class="">ci: run Build and Test on spiceai-macos; split install jobs by profile by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10434" target="_blank" rel="noopener noreferrer" class="">#10434</a></li>
<li class="">Improve search UDTFs: text_search, vector_search, rrf by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10387" target="_blank" rel="noopener noreferrer" class="">#10387</a></li>
<li class="">fix(model2vec): Improve robustness of model loading for sentence-transformers layouts by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10444" target="_blank" rel="noopener noreferrer" class="">#10444</a></li>
<li class="">Merge develop to trunk — 2026-04-21 by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10448" target="_blank" rel="noopener noreferrer" class="">#10448</a></li>
<li class="">Enable filter pushdown for <code>vector_search</code> UDTF by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10447" target="_blank" rel="noopener noreferrer" class="">#10447</a></li>
<li class="">Support Snowflake OBJECT, MAP, GEOGRAPHY, GEOMETRY, VECTOR, TIMESTAMP_LTZ types by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10451" target="_blank" rel="noopener noreferrer" class="">#10451</a></li>
<li class="">Fix Databricks 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/10449" target="_blank" rel="noopener noreferrer" class="">#10449</a></li>
<li class="">fix(cluster): forward register_object_stores through connector wrappers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10460" target="_blank" rel="noopener noreferrer" class="">#10460</a></li>
<li class="">Fixes for vector-search by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10455" target="_blank" rel="noopener noreferrer" class="">#10455</a></li>
<li class="">Add expand_maps option and flatten_json UDTF by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10452" target="_blank" rel="noopener noreferrer" class="">#10452</a></li>
<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/10458" target="_blank" rel="noopener noreferrer" class="">#10458</a></li>
<li class="">Fix physical codec decode ambiguity for empty protobuf messages by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10466" target="_blank" rel="noopener noreferrer" class="">#10466</a></li>
<li class="">chore(logging): demote s3_single_file_cached skip refresh log to debug by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10467" target="_blank" rel="noopener noreferrer" class="">#10467</a></li>
<li class="">Enable filter pushdown for <code>rrf</code> UDTF by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10465" target="_blank" rel="noopener noreferrer" class="">#10465</a></li>
<li class="">feat(cluster): consolidate distributed state into cluster.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/10463" target="_blank" rel="noopener noreferrer" class="">#10463</a></li>
<li class="">feat(cayenne): Add column statistics and data inlining by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10314" target="_blank" rel="noopener noreferrer" class="">#10314</a></li>
<li class="">docs(copilot): flag missing wrapper delegation when adding default trait methods by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10461" target="_blank" rel="noopener noreferrer" class="">#10461</a></li>
<li class="">Wire Elasticsearch vector engine write path through 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/10453" target="_blank" rel="noopener noreferrer" class="">#10453</a></li>
<li class="">Add helm lint CI by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10468" target="_blank" rel="noopener noreferrer" class="">#10468</a></li>
<li class="">Fix Azure and GCS acceleration snapshot object store credential 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/10486" target="_blank" rel="noopener noreferrer" class="">#10486</a></li>
<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/10485" target="_blank" rel="noopener noreferrer" class="">#10485</a></li>
<li class="">fix(secrets): harden AWS Secrets Manager secret store by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10478" target="_blank" rel="noopener noreferrer" class="">#10478</a></li>
<li class="">Update <code>datafusion-ballista</code> crate by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10488" target="_blank" rel="noopener noreferrer" class="">#10488</a></li>
<li class="">feat(secrets): add ParameterSpec and more params for AWS secrets manager by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10487" target="_blank" rel="noopener noreferrer" class="">#10487</a></li>
<li class="">Add rerank UDTF for hybrid search with query auto-propagation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10469" target="_blank" rel="noopener noreferrer" class="">#10469</a></li>
<li class="">Fix flatten_json_properties by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10475" target="_blank" rel="noopener noreferrer" class="">#10475</a></li>
<li class="">fix: preserve field and schema metadata in expand_views_schema by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10494" target="_blank" rel="noopener noreferrer" class="">#10494</a></li>
<li class="">Upgrade rmcp to upstream 1.5.0; switch MCP server to Streamable HTTP by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10491" target="_blank" rel="noopener noreferrer" class="">#10491</a></li>
<li class="">fix: handle Snowflake TIMESTAMP_LTZ wire format and prevent nanosecond overflow by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10493" target="_blank" rel="noopener noreferrer" class="">#10493</a></li>
<li class="">Lint parity in Makefile by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10492" target="_blank" rel="noopener noreferrer" class="">#10492</a></li>
<li class="">Add connect_timeout/client_timeout params to Databricks sql_warehouse 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/10495" target="_blank" rel="noopener noreferrer" class="">#10495</a></li>
<li class="">fix(tracing): suppress opentelemetry INFO logs at all verbosity levels by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10497" target="_blank" rel="noopener noreferrer" class="">#10497</a></li>
<li class="">DynamoDB DML by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10470" target="_blank" rel="noopener noreferrer" class="">#10470</a></li>
<li class="">feat(cayenne): native vector search via SIMD similarity UDFs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10456" target="_blank" rel="noopener noreferrer" class="">#10456</a></li>
<li class="">fix(cli): suppress banner for all JSON-producing cloud subcommands (fixes #10498) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10510" target="_blank" rel="noopener noreferrer" class="">#10510</a></li>
<li class="">fix(deps): bump openssl to 0.10.78 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10509" target="_blank" rel="noopener noreferrer" class="">#10509</a></li>
<li class="">fix(s3): quiet AWS SDK credential probe when no region is configured by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10506" target="_blank" rel="noopener noreferrer" class="">#10506</a></li>
<li class="">fix(cdc): emit ready signal on caught-up Kafka/Debezium streams (#5201) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10504" target="_blank" rel="noopener noreferrer" class="">#10504</a></li>
<li class=""><code>runtime-cluster</code> crate + Run partition discovery before forwarding refresh to executors by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10490" target="_blank" rel="noopener noreferrer" class="">#10490</a></li>
<li class="">Update lint-rust target to use <code>--keep-going</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/10508" target="_blank" rel="noopener noreferrer" class="">#10508</a></li>
<li class="">Add TPC-H SF100 s3[parquet]-duckdb[file] benchmark spicepod by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10524" target="_blank" rel="noopener noreferrer" class="">#10524</a></li>
<li class="">Remove dev-profile install steps from pr.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/10507" target="_blank" rel="noopener noreferrer" class="">#10507</a></li>
<li class="">fix: add missing NULL check on Timestamp path in append refresh by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10518" target="_blank" rel="noopener noreferrer" class="">#10518</a></li>
<li class="">fix: return error on Decimal128/256 overflow instead of silently dropping scale by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10519" target="_blank" rel="noopener noreferrer" class="">#10519</a></li>
<li class="">fix: delegate update and delete_from in IndexedTableProvider and EmbeddingTable by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10520" target="_blank" rel="noopener noreferrer" class="">#10520</a></li>
<li class="">feat(devx): make config errors, CLI, and REPL lead users to success by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10489" target="_blank" rel="noopener noreferrer" class="">#10489</a></li>
<li class="">fix(rerank): defer execution to RerankExec, enable filters and projection 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/10514" target="_blank" rel="noopener noreferrer" class="">#10514</a></li>
<li class="">fix(llms): support Gemma models with missing attention_bias config field by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10523" target="_blank" rel="noopener noreferrer" class="">#10523</a></li>
<li class="">Fix vector_search silently ignoring named limit/column/include_score args by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10527" target="_blank" rel="noopener noreferrer" class="">#10527</a></li>
<li class="">fix: split unsupported filters locally in scan() for UseSource mode by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10528" target="_blank" rel="noopener noreferrer" class="">#10528</a></li>
<li class="">feat(secrets): add Azure Key Vault secret store by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10496" target="_blank" rel="noopener noreferrer" class="">#10496</a></li>
<li class="">Bump mistralrs by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10532" target="_blank" rel="noopener noreferrer" class="">#10532</a></li>
<li class="">Fix benchmark configurations and CI build issues by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10535" target="_blank" rel="noopener noreferrer" class="">#10535</a></li>
<li class="">Fix catalog query overrides for MySQL and MSSQL 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/10543" target="_blank" rel="noopener noreferrer" class="">#10543</a></li>
<li class="">For Cayenne, preserve matched columns for <code>MERGE ... ON &lt;cols&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/10340" target="_blank" rel="noopener noreferrer" class="">#10340</a></li>
<li class="">build(deps): bump the aws-sdk group across 1 directory with 5 updates 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/10538" target="_blank" rel="noopener noreferrer" class="">#10538</a></li>
<li class="">docs: update AI agent instructions (git workflow + Rust 1.94) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10544" target="_blank" rel="noopener noreferrer" class="">#10544</a></li>
<li class="">fix: Update tpch 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/10529" target="_blank" rel="noopener noreferrer" class="">#10529</a></li>
<li class="">fix: Update tpch benchmark snapshots for accelerated/s3[parquet]-duckdb[file].yaml 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/10525" target="_blank" rel="noopener noreferrer" class="">#10525</a></li>
<li class="">Extract <code>runtime-datafusion</code> from <code>runtime</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/10545" target="_blank" rel="noopener noreferrer" class="">#10545</a></li>
<li class="">Use generic DML extension planner for Cayenne by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10437" target="_blank" rel="noopener noreferrer" class="">#10437</a></li>
<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/10552" target="_blank" rel="noopener noreferrer" class="">#10552</a></li>
<li class="">Fix security and correctness audit issues by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10526" target="_blank" rel="noopener noreferrer" class="">#10526</a></li>
<li class="">fix(MySQL): revert MySQL result column reorder to fix federated query failures by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10557" target="_blank" rel="noopener noreferrer" class="">#10557</a></li>
<li class="">Fix <code>protoc</code> installation by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10566" target="_blank" rel="noopener noreferrer" class="">#10566</a></li>
<li class="">fix: Disable Ballista dynamic filters on HashJoinExec by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10548" target="_blank" rel="noopener noreferrer" class="">#10548</a></li>
<li class="">Support views on DDL catalogs by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10554" target="_blank" rel="noopener noreferrer" class="">#10554</a></li>
<li class="">Update datafusion by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10422" target="_blank" rel="noopener noreferrer" class="">#10422</a></li>
<li class="">Improve full-text search indexing 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/10464" target="_blank" rel="noopener noreferrer" class="">#10464</a></li>
<li class="">feat(mysql): add mysql_zero_date_behavior parameter (null|error) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10573" target="_blank" rel="noopener noreferrer" class="">#10573</a></li>
<li class="">fix(snowflake): declare <code>private_key</code> in connector PARAMETERS (fixes #10517) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10559" target="_blank" rel="noopener noreferrer" class="">#10559</a></li>
<li class="">Honour <code>CARGO_TARGET_DIR</code> in Makefiles by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10569" target="_blank" rel="noopener noreferrer" class="">#10569</a></li>
<li class="">Enable <code>cosine_distance</code> pushdown to DuckDB accelerator via <code>array_cosine_distance</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/10564" target="_blank" rel="noopener noreferrer" class="">#10564</a></li>
<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/10570" target="_blank" rel="noopener noreferrer" class="">#10570</a></li>
<li class="">fix: Update tpch 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/10560" target="_blank" rel="noopener noreferrer" class="">#10560</a></li>
<li class="">feat(snapshots): make snapshots an optional feature by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10574" target="_blank" rel="noopener noreferrer" class="">#10574</a></li>
<li class="">Enforce read-only API key restrictions on Flight DoGet and async query paths by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10551" target="_blank" rel="noopener noreferrer" class="">#10551</a></li>
<li class="">Improved security posture on Github workflows by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10556" target="_blank" rel="noopener noreferrer" class="">#10556</a></li>
<li class="">fix: Update datafusion-table-providers to improve SqlTable filter 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/10595" target="_blank" rel="noopener noreferrer" class="">#10595</a></li>
<li class="">feat(secrets): add HashiCorp Vault secret store by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10561" target="_blank" rel="noopener noreferrer" class="">#10561</a></li>
<li class="">fix: delegate update() in UpsertDedupTableProvider to inner provider by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10593" target="_blank" rel="noopener noreferrer" class="">#10593</a></li>
<li class="">Add DuckDB vector engine 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/10562" target="_blank" rel="noopener noreferrer" class="">#10562</a></li>
<li class="">Sharepoint - add object-store listing connector with expanded auth and write 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/10473" target="_blank" rel="noopener noreferrer" class="">#10473</a></li>
<li class="">fix: Install protoc from source by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10597" target="_blank" rel="noopener noreferrer" class="">#10597</a></li>
<li class="">Enable DML support for PostgreSQL data 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/10446" target="_blank" rel="noopener noreferrer" class="">#10446</a></li>
<li class="">feat(postgres): support inline PEM sslrootcert by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10578" target="_blank" rel="noopener noreferrer" class="">#10578</a></li>
<li class="">Add foreign key metadata discovery to PostgreSQL Catalog by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10849" target="_blank" rel="noopener noreferrer" class="">#10849</a></li>
<li class="">Add Snowflake DML 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/10747" target="_blank" rel="noopener noreferrer" class="">#10747</a></li>
<li class="">Add MongoDB Change Streams 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/10813" target="_blank" rel="noopener noreferrer" class="">#10813</a></li>
<li class="">Add user-defined functions by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10571" target="_blank" rel="noopener noreferrer" class="">#10571</a></li>
<li class="">Add table user functions and gate HTTP servers by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10675" target="_blank" rel="noopener noreferrer" class="">#10675</a></li>
<li class="">feat: add on-demand dataset loading by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10629" target="_blank" rel="noopener noreferrer" class="">#10629</a></li>
<li class="">feat(runtime): declared-schema deferred 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/10669" target="_blank" rel="noopener noreferrer" class="">#10669</a></li>
<li class="">feat(spicepod, runtime): add columns[].type / nullable + lenient type parser by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10661" target="_blank" rel="noopener noreferrer" class="">#10661</a></li>
<li class="">Replace external smb crate with internal SMB 3.1.1 client by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10516" target="_blank" rel="noopener noreferrer" class="">#10516</a></li>
<li class="">Add unified query cancellation across all 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/10390" target="_blank" rel="noopener noreferrer" class="">#10390</a></li>
<li class="">Add dynamic HTTP request headers by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10604" target="_blank" rel="noopener noreferrer" class="">#10604</a></li>
<li class="">feat(http): Support dynamic HTTP connector request params from subqueries by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10636" target="_blank" rel="noopener noreferrer" class="">#10636</a></li>
<li class="">feat(http): pass through HTTP metadata columns with JSON schema decomposition by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10679" target="_blank" rel="noopener noreferrer" class="">#10679</a></li>
<li class="">Add nolimit HTTP pagination max pages by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10673" target="_blank" rel="noopener noreferrer" class="">#10673</a></li>
<li class="">Add shared HTTP rate control for 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/10648" target="_blank" rel="noopener noreferrer" class="">#10648</a></li>
<li class="">Use origin label instead of name for HTTP rate control 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/10689" target="_blank" rel="noopener noreferrer" class="">#10689</a></li>
<li class="">fix(http): reject OR across different HTTP filter columns by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10625" target="_blank" rel="noopener noreferrer" class="">#10625</a></li>
<li class="">Add provider-aware LLM prompt 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/10645" target="_blank" rel="noopener noreferrer" class="">#10645</a></li>
<li class="">Add searchable registry mode for LLM tools by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10647" target="_blank" rel="noopener noreferrer" class="">#10647</a></li>
<li class="">feat: refresh_mode: snapshot + SQLite/Turso WAL flush + Cayenne metastore slice by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10651" target="_blank" rel="noopener noreferrer" class="">#10651</a></li>
<li class="">feat: per-principal cache namespacing for SQL/search/caching-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/10702" target="_blank" rel="noopener noreferrer" class="">#10702</a></li>
<li class="">Add self-hosted Spice connector 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/10546" target="_blank" rel="noopener noreferrer" class="">#10546</a></li>
<li class="">Add Delta Lake Azure tenant parameter by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10671" target="_blank" rel="noopener noreferrer" class="">#10671</a></li>
<li class="">Support OAuth2 client credentials in 'spice cloud login' by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10586" target="_blank" rel="noopener noreferrer" class="">#10586</a></li>
<li class="">Add configurable allowed_hosts for MCP by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10638" target="_blank" rel="noopener noreferrer" class="">#10638</a></li>
<li class="">fix: make Helm chart probes configurable by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10696" target="_blank" rel="noopener noreferrer" class="">#10696</a></li>
<li class="">Strip high-cardinality datasets dim from anonymous 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/10711" target="_blank" rel="noopener noreferrer" class="">#10711</a></li>
<li class="">feat(elasticsearch): direct FTS engine config + index lifecycle and ingestion controls by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10672" target="_blank" rel="noopener noreferrer" class="">#10672</a></li>
<li class="">Add DuckDB HNSW vector index support for accelerated views by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10695" target="_blank" rel="noopener noreferrer" class="">#10695</a></li>
<li class="">Rewrite DuckDB vector search SQL to activate HNSW_INDEX_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/10674" target="_blank" rel="noopener noreferrer" class="">#10674</a></li>
<li class="">Fix DuckDB HNSW vector indexes lost after data 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/10668" target="_blank" rel="noopener noreferrer" class="">#10668</a></li>
<li class="">Fix DuckDB DELETE/UPDATE on <code>full</code> and <code>caching</code> refresh mode 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/10632" target="_blank" rel="noopener noreferrer" class="">#10632</a></li>
<li class="">Fix DuckLake connector: downcast, module registration, schema discovery, and S3 credentials by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10650" target="_blank" rel="noopener noreferrer" class="">#10650</a></li>
<li class="">Fix federation pushing denied functions inside subqueries to remote engines by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10692" target="_blank" rel="noopener noreferrer" class="">#10692</a></li>
<li class="">fix(caching): honour refresh_on_startup: always in caching 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/10594" target="_blank" rel="noopener noreferrer" class="">#10594</a></li>
<li class="">fix(iceberg): rebuild storage factory when Hadoop catalog scheme is inferred by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10601" target="_blank" rel="noopener noreferrer" class="">#10601</a></li>
<li class="">Pipeline CDC ingestion: overlap source reads with batch apply by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10676" target="_blank" rel="noopener noreferrer" class="">#10676</a></li>
<li class="">fix: add NULL check to CDC primary key extraction by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10684" target="_blank" rel="noopener noreferrer" class="">#10684</a></li>
<li class="">Properly handle nullability during CDC processing by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10803" target="_blank" rel="noopener noreferrer" class="">#10803</a></li>
<li class="">Flatten scheduler config and rename partition management → partition assignment by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10450" target="_blank" rel="noopener noreferrer" class="">#10450</a></li>
<li class="">Improve NSQL UX and harden internal LLM tools by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10715" target="_blank" rel="noopener noreferrer" class="">#10715</a></li>
<li class="">Support Responses API across model 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/10724" target="_blank" rel="noopener noreferrer" class="">#10724</a></li>
<li class="">Update xAI default model and handle Grok model retirements by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10723" target="_blank" rel="noopener noreferrer" class="">#10723</a></li>
<li class="">Improve cli table layout by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10725" target="_blank" rel="noopener noreferrer" class="">#10725</a></li>
<li class="">TLS cert hot-reload (mTLS plan M1) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10727" target="_blank" rel="noopener noreferrer" class="">#10727</a></li>
<li class="">Fix DuckLake catalog <code>include</code> filter being ignored by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10738" target="_blank" rel="noopener noreferrer" class="">#10738</a></li>
<li class="">Promote DuckLake Catalog and Data Connector to Beta quality by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10743" target="_blank" rel="noopener noreferrer" class="">#10743</a></li>
<li class="">feat(ducklake): Support INSERT on catalog tables with read_write access by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10744" target="_blank" rel="noopener noreferrer" class="">#10744</a></li>
<li class="">perf(cdc): coalesce envelopes and overlap commits in apply pipeline by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10745" target="_blank" rel="noopener noreferrer" class="">#10745</a></li>
<li class="">feat: Allow full version tags in spicepod version by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10748" target="_blank" rel="noopener noreferrer" class="">#10748</a></li>
<li class="">Add Arrow primary key upserts by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10749" target="_blank" rel="noopener noreferrer" class="">#10749</a></li>
<li class="">fix(snapshot): keep refresh_mode snapshot read-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/10752" target="_blank" rel="noopener noreferrer" class="">#10752</a></li>
<li class="">feat(tls): public mTLS for HTTP and Flight (channel + identity modes) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10753" target="_blank" rel="noopener noreferrer" class="">#10753</a></li>
<li class="">perf(cayenne): lock-free deletion caches with bloom-prefiltered probe by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10756" target="_blank" rel="noopener noreferrer" class="">#10756</a></li>
<li class="">fix(security): close API key timing-position leak and remote-UDF SSRF by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10757" target="_blank" rel="noopener noreferrer" class="">#10757</a></li>
<li class="">Fix 'wait_until_dependent_tables_are_ready' for catalogs by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10758" target="_blank" rel="noopener noreferrer" class="">#10758</a></li>
<li class="">Fixes for views and resolved tables on 'spice refresh' CLI by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10759" target="_blank" rel="noopener noreferrer" class="">#10759</a></li>
<li class="">Implement FlightSQL CommandStatementSubstraitPlan 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/10761" target="_blank" rel="noopener noreferrer" class="">#10761</a></li>
<li class="">feat(connectors): mTLS client cert support for flightsql and spiceai 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/10764" target="_blank" rel="noopener noreferrer" class="">#10764</a></li>
<li class="">Allow arbitrary filenames when specifying spicepod path + <code>kind</code> validation by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10777" target="_blank" rel="noopener noreferrer" class="">#10777</a></li>
<li class="">fix: ignore field metadata in schema compatibility check in index_table_scan by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10778" target="_blank" rel="noopener noreferrer" class="">#10778</a></li>
<li class="">Display pushed-down limits in EXPLAIN TREE output by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10779" target="_blank" rel="noopener noreferrer" class="">#10779</a></li>
<li class="">fix: enable streaming append for Kafka with Cayenne 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/10780" target="_blank" rel="noopener noreferrer" class="">#10780</a></li>
<li class="">fix: bound chunked-index intermediate batch size to prevent OOM by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10783" target="_blank" rel="noopener noreferrer" class="">#10783</a></li>
<li class="">fix: label all columns in <code>spice cloud metrics</code> table output by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10784" target="_blank" rel="noopener noreferrer" class="">#10784</a></li>
<li class="">fix: use checked arithmetic for Turso integer-millis timestamp read path by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10786" target="_blank" rel="noopener noreferrer" class="">#10786</a></li>
<li class="">fix: use checked arithmetic in timestamp-to-nanosecond conversions by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10666" target="_blank" rel="noopener noreferrer" class="">#10666</a></li>
<li class="">Upgrade to DuckDB v1.5.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/10788" target="_blank" rel="noopener noreferrer" class="">#10788</a></li>
<li class="">Improve CDC ingestion 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/10789" target="_blank" rel="noopener noreferrer" class="">#10789</a></li>
<li class="">Fix <code>tool_search</code>/<code>tool_invoke</code> spans by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10791" target="_blank" rel="noopener noreferrer" class="">#10791</a></li>
<li class="">Add Cayenne inline mutations and benchmark 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/10792" target="_blank" rel="noopener noreferrer" class="">#10792</a></li>
<li class="">Ensure we always resolve table names in distributed mode/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/10793" target="_blank" rel="noopener noreferrer" class="">#10793</a></li>
<li class="">Remove permanent errors from 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/10794" target="_blank" rel="noopener noreferrer" class="">#10794</a></li>
<li class="">Add expanded view mode for wide table display in 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/10797" target="_blank" rel="noopener noreferrer" class="">#10797</a></li>
<li class="">Fix Cayenne CDC schema mismatch 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/10800" target="_blank" rel="noopener noreferrer" class="">#10800</a></li>
<li class="">Executors should create catalog tables on join by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10807" target="_blank" rel="noopener noreferrer" class="">#10807</a></li>
<li class="">Add compressed file support for listing 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/10809" target="_blank" rel="noopener noreferrer" class="">#10809</a></li>
<li class="">Improve Cayenne mutation, scan, and inline memtable scaling by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10811" target="_blank" rel="noopener noreferrer" class="">#10811</a></li>
<li class="">Add range fallback for large join 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/10816" target="_blank" rel="noopener noreferrer" class="">#10816</a></li>
<li class="">Improve Cayenne join filter pushdown by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10818" target="_blank" rel="noopener noreferrer" class="">#10818</a></li>
<li class="">Synchronize Cayenne partition commits across 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/10819" target="_blank" rel="noopener noreferrer" class="">#10819</a></li>
<li class="">fix: Deny nondistributed 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/10821" target="_blank" rel="noopener noreferrer" class="">#10821</a></li>
<li class="">Enable parallel Cayenne Vortex writes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10822" target="_blank" rel="noopener noreferrer" class="">#10822</a></li>
<li class="">Expand Arrow type handling in formatting and Elasticsearch by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10825" target="_blank" rel="noopener noreferrer" class="">#10825</a></li>
<li class="">Add <code>response.output_text.delta</code> to responses API by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10828" target="_blank" rel="noopener noreferrer" class="">#10828</a></li>
<li class="">feat(cayenne): add join filter propagation and no-spill Q21 planning by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10840" target="_blank" rel="noopener noreferrer" class="">#10840</a></li>
<li class="">Upgrade Turso to v0.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/10843" target="_blank" rel="noopener noreferrer" class="">#10843</a></li>
<li class="">feat(cli): add <code>spice feedback</code> command to open community Slack by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10856" target="_blank" rel="noopener noreferrer" class="">#10856</a></li>
<li class="">Upgrade iceberg to v0.9.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/10859" target="_blank" rel="noopener noreferrer" class="">#10859</a></li>
<li class="">feat(cluster): per-request executor readiness gate on /v1/ready by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10860" target="_blank" rel="noopener noreferrer" class="">#10860</a></li>
<li class="">fix: Require dim-side statistics for <code>CayennePropagateFilterAcrossEquiJoinKeys</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/10863" target="_blank" rel="noopener noreferrer" class="">#10863</a></li>
<li class="">fix: Debezium schema evolution breaks dataset init on reload by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10144" target="_blank" rel="noopener noreferrer" class="">#10144</a></li>
<li class="">fix(mssql): Push topK limit to SQL Server for non-nullable sort 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/10621" target="_blank" rel="noopener noreferrer" class="">#10621</a></li>
<li class="">fix(ScyllaDB): disable physical filter 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/10772" target="_blank" rel="noopener noreferrer" class="">#10772</a></li>
<li class="">fix: handle typed NULLs and prevent overflow in DynamoDB DML type conversions by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10511" target="_blank" rel="noopener noreferrer" class="">#10511</a></li>
<li class="">fix: use InsertOp::Overwrite in DynamoDB bootstrap scan_and_overwrite_accelerator by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10639" target="_blank" rel="noopener noreferrer" class="">#10639</a></li>
<li class="">Improve DynamoDB Bootstrap performance by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10616" target="_blank" rel="noopener noreferrer" class="">#10616</a></li>
<li class="">fix: preserve field and schema metadata in Vortex type transformation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10628" target="_blank" rel="noopener noreferrer" class="">#10628</a></li>
<li class="">fix: GH connector - explicitly use AWS LC RS crypto provider for jwt by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10619" target="_blank" rel="noopener noreferrer" class="">#10619</a></li>
<li class="">fix: add snapshot mode guards to delete_from/update and delegate DML in SwappableTableProvider by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10685" target="_blank" rel="noopener noreferrer" class="">#10685</a></li>
<li class="">Persist HTTP rate-control state in object storage by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10697" target="_blank" rel="noopener noreferrer" class="">#10697</a></li>
<li class="">Rate limit metrics HTTP 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/10162" target="_blank" rel="noopener noreferrer" class="">#10162</a></li>
<li class="">feat(geo): add optional spatial SQL UDF 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/10833" target="_blank" rel="noopener noreferrer" class="">#10833</a></li>
<li class="">feat(cayenne): CDC throughput, compaction, scan caching, and benchmarks by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10852" target="_blank" rel="noopener noreferrer" class="">#10852</a></li>
<li class="">fix(cayenne): fix Vortex panic on highly compressible 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/10855" target="_blank" rel="noopener noreferrer" class="">#10855</a></li>
<li class="">fix(cayenne): Read live protected snapshots after cleanup grace period by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10901" target="_blank" rel="noopener noreferrer" class="">#10901</a></li>
<li class="">fix: Disable Cayenne HashJoin rewriter optimizer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10882" target="_blank" rel="noopener noreferrer" class="">#10882</a></li>
<li class="">Fix GetFlightInfo vs DoGet Flight Schema by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10864" target="_blank" rel="noopener noreferrer" class="">#10864</a></li>
<li class="">fix(search): preserve column casing in /v1/search primary key plumbing by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10909" target="_blank" rel="noopener noreferrer" class="">#10909</a></li>
<li class="">fix(object-store): dedupe s3 url style auto-detection 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/10898" target="_blank" rel="noopener noreferrer" class="">#10898</a></li>
<li class="">Improve Spice CLI manifest editing and direct command modes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10815" target="_blank" rel="noopener noreferrer" class="">#10815</a></li>
<li class="">Persist Kafka CDC offsets in sidecar tables by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10823" target="_blank" rel="noopener noreferrer" class="">#10823</a></li>
<li class="">feat(task-history): record Ballista stages for distributed queries by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10831" target="_blank" rel="noopener noreferrer" class="">#10831</a></li>
<li class="">Add '#[deny(clippy::missing_trait_methods)]' to wrapper/delegation trait impls by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10795" target="_blank" rel="noopener noreferrer" class="">#10795</a></li>
<li class="">Optimize Cayenne catalog maintenance 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/10904" target="_blank" rel="noopener noreferrer" class="">#10904</a></li>
<li class="">Centralize DuckDB settings for accelerator by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10895" target="_blank" rel="noopener noreferrer" class="">#10895</a></li>
<li class="">deps(ballista): bump to 47e2b494 to fix S3 shuffle reads under 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/10910" target="_blank" rel="noopener noreferrer" class="">#10910</a></li>
<li class="">Authorization header + Bump async-openai + <code>responses_adapter</code> fix by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10911" target="_blank" rel="noopener noreferrer" class="">#10911</a></li>
<li class="">Tune accelerators by storage profile by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10913" target="_blank" rel="noopener noreferrer" class="">#10913</a></li>
<li class="">feat: add dataset-level on_schema_change config by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10908" target="_blank" rel="noopener noreferrer" class="">#10908</a></li>
<li class="">Handle <code>NULL</code> sentinel for nullable partition expressions by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10880" target="_blank" rel="noopener noreferrer" class="">#10880</a></li>
<li class="">fix: Remove Cayenne Catalog from catalog registration by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10914" target="_blank" rel="noopener noreferrer" class="">#10914</a></li>
<li class="">Add catalog name to foreign key metadata in postgres 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/10917" target="_blank" rel="noopener noreferrer" class="">#10917</a></li>
<li class="">Cayenne perf: eliminate redundant clones, PK point-lookup fanout fix, IN-list rewrite + microbench 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/10916" target="_blank" rel="noopener noreferrer" class="">#10916</a></li>
<li class="">fix(turso-shared): retry on Turso BEGIN CONCURRENT "Write-write conflict" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10946" target="_blank" rel="noopener noreferrer" class="">#10946</a></li>
<li class="">Vendor Vortex DataFusion for 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/10933" target="_blank" rel="noopener noreferrer" class="">#10933</a></li>
<li class="">perf(cayenne): background retention + enable CDC pipelining for retention-configured tables by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10936" target="_blank" rel="noopener noreferrer" class="">#10936</a></li>
<li class="">feat(cayenne): scale metastore pool to 32 + vs_duckdb_scaling benches (1→128 concurrency, sqlite + turso lanes) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10943" target="_blank" rel="noopener noreferrer" class="">#10943</a></li>
<li class="">feat(mcp): support auth for streamable HTTP tools by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10927" target="_blank" rel="noopener noreferrer" class="">#10927</a></li>
<li class="">Explicit error if v1/search requests a table without search index by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10968" target="_blank" rel="noopener noreferrer" class="">#10968</a></li>
<li class="">Fix spicepod loading failure when directory name contains dots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10958" target="_blank" rel="noopener noreferrer" class="">#10958</a></li>
<li class="">Extend append tests with arrow engine 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/10959" target="_blank" rel="noopener noreferrer" class="">#10959</a></li>
<li class="">Remove dataset on_schema_change Policy from rc.5 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/10964" target="_blank" rel="noopener noreferrer" class="">#10964</a></li>
<li class="">Skip tpcds_q78 for Cayenne engine at SF100 by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10966" target="_blank" rel="noopener noreferrer" class="">#10966</a></li>
<li class="">fix: Update benchmark snapshots May-20 by <a href="https://github.com/apps/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/10952" target="_blank" rel="noopener noreferrer" class="">#10952</a></li>
<li class="">Fix #10951: UdtfExec invariant Vec lengths must match children count by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10953" target="_blank" rel="noopener noreferrer" class="">#10953</a></li>
<li class="">docs(release): update v2.0.0-rc.5 notes with latest trunk PRs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10949" target="_blank" rel="noopener noreferrer" class="">#10949</a></li>
<li class="">Remove eval related things for v2.0.0 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10945" target="_blank" rel="noopener noreferrer" class="">#10945</a></li>
<li class="">build(deps): bump ubuntu from 24.04 to 26.04 in the docker-dependencies group by <a href="https://github.com/apps/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/10883" target="_blank" rel="noopener noreferrer" class="">#10883</a></li>
<li class="">fix: Add publish = false to chbench-driver by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10939" target="_blank" rel="noopener noreferrer" class="">#10939</a></li>
<li class="">[Bug] Timing between reconnect and AllocateInitialPartitions leaves connection without flight_sql_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/10805" target="_blank" rel="noopener noreferrer" class="">#10805</a></li>
<li class="">Fix: <code>refresh_mode: snapshot</code> reports Ready with empty data when no snapshot exists by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10979" target="_blank" rel="noopener noreferrer" class="">#10979</a></li>
<li class="">fix(cluster): gate scheduler readiness on executor partition loads by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10992" target="_blank" rel="noopener noreferrer" class="">#10992</a></li>
<li class="">fix: handle EXISTS/NOT EXISTS subqueries in federation analyzer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10996" target="_blank" rel="noopener noreferrer" class="">#10996</a></li>
<li class="">Refactor spice dataset configuration command by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10999" target="_blank" rel="noopener noreferrer" class="">#10999</a></li>
<li class="">fix: preserve field and schema metadata in Vortex physical schema calculation by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11013" target="_blank" rel="noopener noreferrer" class="">#11013</a></li>
<li class="">fix: validate Snowflake account identifiers and auth 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/11024" target="_blank" rel="noopener noreferrer" class="">#11024</a></li>
<li class="">Fix Unity Catalog connector deserialization failure with OSS Unity Catalog by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11026" target="_blank" rel="noopener noreferrer" class="">#11026</a></li>
<li class="">feat(cayenne): allow inline writes with pending deletions (deletes/upserts) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11031" target="_blank" rel="noopener noreferrer" class="">#11031</a></li>
<li class="">Expose metadata descriptions via PostgreSQL UDFs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11032" target="_blank" rel="noopener noreferrer" class="">#11032</a></li>
<li class="">Remove default runtime features - enable explicitly 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/11037" target="_blank" rel="noopener noreferrer" class="">#11037</a></li>
<li class="">feat(cayenne): fast-path CDC deletes by extracting PK values from filters by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11049" target="_blank" rel="noopener noreferrer" class="">#11049</a></li>
<li class="">Cayenne optimizer rules: auto relevance test for q21-shape (all-Cayenne CH-Bench) and runtime rule selection by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11050" target="_blank" rel="noopener noreferrer" class="">#11050</a></li>
<li class="">refactor(cdc): reduce CDC sub-batch splits for interleaved upsert/delete workloads by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11051" target="_blank" rel="noopener noreferrer" class="">#11051</a></li>
<li class="">fix(snowflake): enforce function deny-list in federation pushdown by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11057" target="_blank" rel="noopener noreferrer" class="">#11057</a></li>
<li class="">fix(mcp): trace external server tool calls in task history by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/11058" target="_blank" rel="noopener noreferrer" class="">#11058</a></li>
<li class="">perf(cdc): Last-write-wins dedup in <code>group_into_sub_batches</code> to reduce sub-batch splits by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11059" target="_blank" rel="noopener noreferrer" class="">#11059</a></li>
<li class="">PM edits to v2.0.0-rc5 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11067" target="_blank" rel="noopener noreferrer" class="">#11067</a></li>
<li class="">fix(snowflake): wire deny-list in extracted connector crate (#10703) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/11071" target="_blank" rel="noopener noreferrer" class="">#11071</a></li>
<li class="">perf(cayenne): keep CDC upsert PK keysets resident to avoid per-batch full-table rebuilds by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11074" target="_blank" rel="noopener noreferrer" class="">#11074</a></li>
<li class="">Fix metadata on search indexing by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11080" target="_blank" rel="noopener noreferrer" class="">#11080</a></li>
<li class="">feat(cayenne): merge-on-read position deletes for PK upsert tables + memory-pool accounting by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11085" target="_blank" rel="noopener noreferrer" class="">#11085</a></li>
<li class="">perf(cayenne): scale CDC inline flush caps with memory + storage class by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11087" target="_blank" rel="noopener noreferrer" class="">#11087</a></li>
<li class="">feat(cluster): report per-executor table statistics so distributed JoinSelection can size joins by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11089" target="_blank" rel="noopener noreferrer" class="">#11089</a></li>
<li class="">Improve Cayenne CDC write and compaction path tracing by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11091" target="_blank" rel="noopener noreferrer" class="">#11091</a></li>
<li class="">Support tuple-IN composite PK extraction in Cayenne delete fast-path by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11093" target="_blank" rel="noopener noreferrer" class="">#11093</a></li>
<li class="">feat(cluster): NDV-aware executor stats so CDC q18 join swap fires by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11098" target="_blank" rel="noopener noreferrer" class="">#11098</a></li>
<li class="">feat(cayenne): maintain join-sizing stats on the write path by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11104" target="_blank" rel="noopener noreferrer" class="">#11104</a></li>
<li class="">fix(cache): run periodic moka maintenance for idle caches by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11106" target="_blank" rel="noopener noreferrer" class="">#11106</a></li>
<li class="">Upgrade to DuckDB 1.5.3 + statically link the VSS (HNSW) extension by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/11107" target="_blank" rel="noopener noreferrer" class="">#11107</a></li>
<li class="">Fix fetched_at for HTTP connector by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/11116" target="_blank" rel="noopener noreferrer" class="">#11116</a></li>
<li class="">fix(cayenne): tombstone inline-checkpointed rows on upsert to prevent 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/11129" target="_blank" rel="noopener noreferrer" class="">#11129</a></li>
<li class="">feat: dedicated compaction runtime for Cayenne + CDC pipelining, protected snapshots, and 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/11130" target="_blank" rel="noopener noreferrer" class="">#11130</a></li>
<li class="">Add <code>datasets</code> dimension to the <code>query_executions</code> 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/11138" target="_blank" rel="noopener noreferrer" class="">#11138</a></li>
<li class="">Fix #11137: localpod child not tracking parent refreshes with in-memory (arrow) parent 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/11139" target="_blank" rel="noopener noreferrer" class="">#11139</a></li>
<li class="">Fix Windows build: vendor the VSS extension (drop nested submodule) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11140" target="_blank" rel="noopener noreferrer" class="">#11140</a></li>
<li class="">fix(spiceai): keep correlated subqueries out of JOIN ON for Spice Cloud federation by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11143" target="_blank" rel="noopener noreferrer" class="">#11143</a></li>
<li class="">Refactor spice dataset configuration command by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10999" target="_blank" rel="noopener noreferrer" class="">#10999</a></li>
<li class="">feat(cayenne): sharded parallel Vortex encode with key/time clustering by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11144" target="_blank" rel="noopener noreferrer" class="">#11144</a></li>
<li class="">fix(cluster): prevent DoPut write pipeline self-deadlock under ingest backpressure by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/11160" target="_blank" rel="noopener noreferrer" class="">#11160</a></li>
<li class="">fix(cayenne): only warn on genuine protected-snapshot amplification by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/11158" target="_blank" rel="noopener noreferrer" class="">#11158</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v1.11.6...v2.0.0" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v1.11.6...v2.0.0</a></p>]]></content:encoded>
            <category>release</category>
            <category>distributed-query</category>
            <category>cayenne</category>
            <category>datafusion</category>
            <category>CDC</category>
            <category>cedar</category>
            <category>postgres</category>
            <category>mongodb</category>
            <category>security</category>
            <category>snowflake</category>
            <category>udf</category>
            <category>http</category>
            <category>kafka</category>
            <category>arrow</category>
            <category>ducklake</category>
            <category>data-connector</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0-rc.5 (May 27, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0-rc.5</link>
            <guid>https://spiceai.org/releases/v2.0-rc.5</guid>
            <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v2.0-rc.5 is now available! 🔥]]></description>
            <content:encoded><![CDATA[<p>Spice v2.0-rc.5 is now available! 🔥</p>
<p>v2.0.0-rc.5 is the fifth release candidate for advanced testing of v2.0, building on <a href="https://github.com/spiceai/spiceai/releases/tag/v2.0.0-rc.4" target="_blank" rel="noopener noreferrer" class="">v2.0.0-rc.4</a>.</p>
<p>This release completes the mTLS implementation across server endpoints and outbound connectors, adds MongoDB Change Streams and durable Kafka offset persistence as new CDC sources, expands DML write-back to PostgreSQL, Snowflake, and Arrow, promotes DuckLake to Beta, introduces user-defined functions, on-demand dataset loading, unified query cancellation, dynamic HTTP request headers and subquery-driven request parameters, provider-aware LLM prompt caching, and a long list of Cayenne performance improvements.</p>
<p>Highlights in this release candidate include:</p>
<ul>
<li class=""><strong>Spice Cayenne</strong> — CDC throughput, compaction and scan caching, synchronized partition commits, join filter propagation, parallel Vortex writes, lock-free deletion caches</li>
<li class=""><strong>Mutual TLS (mTLS)</strong> — TLS cert hot-reload, public mTLS for HTTP and Flight (channel + identity modes), mTLS client certs for FlightSQL and Spice.ai connectors</li>
<li class=""><strong>MongoDB Change Streams</strong> — native real-time CDC for MongoDB, no Debezium or Kafka required</li>
<li class=""><strong>Kafka CDC offsets</strong> — offsets persisted in sidecar tables for durable, resumable Kafka CDC</li>
<li class=""><strong>PostgreSQL DML</strong> — INSERT, UPDATE, DELETE write-back on PostgreSQL datasets</li>
<li class=""><strong>Snowflake DML</strong> — INSERT, UPDATE, DELETE write-back on Snowflake datasets</li>
<li class=""><strong>Arrow Primary Key Upserts</strong> — native upsert path using primary key matching</li>
<li class=""><strong>DuckLake promoted to Beta</strong> — with INSERT support on catalog tables</li>
<li class=""><strong>User-Defined Functions</strong> — define SQL UDFs in spicepods, plus remote UDFs over HTTP (Spice.ai Enterprise)</li>
<li class=""><strong>Spatial SQL UDFs</strong> — optional geospatial UDFs (<code>ST_*</code>) for geometry workloads</li>
<li class=""><strong>On-Demand Dataset Loading</strong> — datasets can be deferred and loaded on first reference</li>
<li class=""><strong>Unified Query Cancellation</strong> — <code>Ctrl-C</code> and HTTP request cancellation propagate across all execution paths</li>
<li class=""><strong>Dynamic HTTP Connector</strong> — pass-through request headers, subquery-driven params, and JSON schema decomposition</li>
<li class=""><strong>HTTP Rate-Control persistence</strong> — rate-limit state persisted in object storage across restarts</li>
<li class=""><strong><code>refresh_mode: snapshot</code></strong> — point-in-time snapshot acceleration with SQLite/Turso WAL flushing</li>
<li class=""><strong>Storage-profile accelerator tuning</strong> — accelerators auto-tune defaults based on local SSD, EBS-class disk, or tmpfs</li>
<li class=""><strong>Provider-Aware LLM Prompt Caching</strong> — automatic prompt caching for OpenAI-compatible providers that support it</li>
<li class=""><strong>Responses API</strong> — support across all model providers with streaming <code>response.output_text.delta</code>, plus <code>Authorization: Bearer</code> header support</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v200-rc5">What's New in v2.0.0-rc.5<a href="https://spiceai.org/releases/v2.0-rc.5#whats-new-in-v200-rc5" class="hash-link" aria-label="Direct link to What's New in v2.0.0-rc.5" title="Direct link to What's New in v2.0.0-rc.5" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-improvements">Cayenne Improvements<a href="https://spiceai.org/releases/v2.0-rc.5#cayenne-improvements" class="hash-link" aria-label="Direct link to Cayenne Improvements" title="Direct link to Cayenne Improvements" translate="no">​</a></h3>
<p>Significant performance work across <a href="https://spiceai.org/docs/next/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Spice Cayenne</a>-backed catalogs and accelerators.</p>
<ul>
<li class=""><strong>Ingest throughput</strong>: End-to-end improvements to CDC ingest, background compaction, and a new scan-result cache for hot reads; parallel Vortex partition writes; lock-free deletion caches with bloom-prefiltered probes; background retention with CDC pipelining; SQLite metastore pool scaled to 32 for high-concurrency mutation workloads.</li>
<li class=""><strong>Data inlining</strong>: Small writes are serialized as Arrow IPC and committed directly into the Cayenne metastore (<code>cayenne_inlined_data</code>), bypassing the staged Vortex write path for low-latency ingest. Inline upserts atomically rewrite existing inline rows instead of emitting side delete markers, and inline data remains query-visible via an in-memory union scan with a generation-keyed decode cache. Inline rows are checkpointed to Vortex when row, segment, or byte thresholds are reached. Defaults are refresh-mode aware: inline writes are enabled by default for high-frequency <code>caching</code>, <code>changes</code>, and fast <code>append</code> workloads and disabled for <code>full</code>, <code>snapshot</code>, and slower <code>append</code>.</li>
<li class=""><strong>Query planning</strong>: Join filter propagation across equi-join keys (gated behind <code>runtime.params.cayenne_filter_propagation</code>), range fallback for large join filters, hot-path clone elimination, and IN-list rewrites for large filter lists.</li>
<li class=""><strong>Correctness</strong>: Synchronized partition commits across partitions, correct <code>NULL</code>-sentinel handling for nullable partition expressions (e.g. <code>bucket(N, col)</code>), Vortex panic fix on highly compressible data, and live reads through expired protected snapshots.</li>
<li class=""><strong>Catalog and platform</strong>: Refresh-mode-aware compaction defaults, rejection of non-distributed Cayenne catalog configurations, and a vendored Vortex DataFusion integration for faster iteration on the Cayenne planner.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="mutual-tls-mtls">Mutual TLS (mTLS)<a href="https://spiceai.org/releases/v2.0-rc.5#mutual-tls-mtls" class="hash-link" aria-label="Direct link to Mutual TLS (mTLS)" title="Direct link to Mutual TLS (mTLS)" translate="no">​</a></h3>
<blockquote>
<p><a href="https://docs.spice.ai/docs/enterprise" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a> feature. See <a href="https://docs.spice.ai/docs/enterprise/production/security" target="_blank" rel="noopener noreferrer" class="">Enterprise Security</a>.</p>
</blockquote>
<p>Spice now supports full mutual <a href="https://spiceai.org/docs/next/api/tls" target="_blank" rel="noopener noreferrer" class="">TLS</a> for both HTTP and Arrow Flight endpoints.</p>
<p><strong>TLS cert hot-reload</strong> (<a href="https://github.com/spiceai/spiceai/pull/10727" target="_blank" rel="noopener noreferrer" class="">#10727</a>): The Spice runtime watches for <code>SIGHUP</code> and reloads TLS certificates without restarting, enabling cert rotation with zero downtime.</p>
<p><strong>Public mTLS for HTTP and Flight</strong> (<a href="https://github.com/spiceai/spiceai/pull/10753" target="_blank" rel="noopener noreferrer" class="">#10753</a>): Two <code>client_auth_mode</code> values control how the server handles client certificates:</p>
<ul>
<li class=""><code>request</code> — optional mTLS: the server requests a client cert but accepts connections without one (useful for migration windows).</li>
<li class=""><code>required</code> — strict mTLS: the server requires a valid client cert signed by the configured CA.</li>
</ul>
<p><strong>mTLS client certs for FlightSQL and Spice.ai connectors</strong> (<a href="https://github.com/spiceai/spiceai/pull/10764" target="_blank" rel="noopener noreferrer" class="">#10764</a>): Outbound connections from the FlightSQL and Spice.ai data connectors can now present client certificates for mutual authentication with upstream services.</p>
<p>Example configuration:</p>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">tls</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">certificate_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /etc/spice/tls/server.crt</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">key_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /etc/spice/tls/server.key</span><br></div><div class="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_auth_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> required</span><br></div><div class="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_auth_ca_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /etc/spice/tls/client</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">ca.crt</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="mongodb-change-streams">MongoDB Change Streams<a href="https://spiceai.org/releases/v2.0-rc.5#mongodb-change-streams" class="hash-link" aria-label="Direct link to MongoDB Change Streams" title="Direct link to MongoDB Change Streams" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/next/components/data-connectors/mongodb" target="_blank" rel="noopener noreferrer" class="">MongoDB</a> datasets configured with <code>refresh_mode: changes</code> now stream changes from MongoDB Change Streams into any local accelerator (<a href="https://github.com/spiceai/spiceai/pull/10813" target="_blank" rel="noopener noreferrer" class="">#10813</a>), providing real-time CDC without Debezium or Kafka.</p>
<p>Example configuration:</p>
<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"><div 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></div><div 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"> mongodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_collection</span><br></div><div class="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_collection</span><br></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">host</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">cluster.mongodb.net</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">db</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> mydb</span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cdc-improvements">CDC Improvements<a href="https://spiceai.org/releases/v2.0-rc.5#cdc-improvements" class="hash-link" aria-label="Direct link to CDC Improvements" title="Direct link to CDC Improvements" translate="no">​</a></h3>
<p>See <a href="https://spiceai.org/docs/next/features/cdc" target="_blank" rel="noopener noreferrer" class="">Change Data Capture (CDC)</a> for an overview of CDC in Spice.</p>
<ul>
<li class=""><strong>Kafka CDC offset persistence</strong> (<a href="https://github.com/spiceai/spiceai/pull/10823" target="_blank" rel="noopener noreferrer" class="">#10823</a>): <a href="https://spiceai.org/docs/next/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka</a> CDC offsets are persisted in sidecar tables for durable, resumable streams. On restart or failover, Spice resumes from the last committed offset.</li>
<li class=""><strong>Pipelined CDC ingestion</strong> (<a href="https://github.com/spiceai/spiceai/pull/10676" target="_blank" rel="noopener noreferrer" class="">#10676</a>): Source reads overlap with batch apply, with additional batching, envelope coalescing, and nullability propagation improvements across the apply pipeline.</li>
<li class=""><strong>Debezium schema evolution fix</strong> (<a href="https://github.com/spiceai/spiceai/pull/10144" target="_blank" rel="noopener noreferrer" class="">#10144</a>): Schema changes in <a href="https://spiceai.org/docs/next/components/data-connectors/debezium" target="_blank" rel="noopener noreferrer" class="">Debezium</a>-sourced datasets no longer break dataset initialization on reload (fixes <a href="https://github.com/spiceai/spiceai/issues/9782" target="_blank" rel="noopener noreferrer" class="">#9782</a>).</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="postgresql-dml-support">PostgreSQL DML Support<a href="https://spiceai.org/releases/v2.0-rc.5#postgresql-dml-support" class="hash-link" aria-label="Direct link to PostgreSQL DML Support" title="Direct link to PostgreSQL DML Support" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/next/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL</a> data connector now supports write-back via <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> operations (<a href="https://github.com/spiceai/spiceai/pull/10446" target="_blank" rel="noopener noreferrer" class="">#10446</a>). Combined with the existing read-side federation, PostgreSQL-backed datasets can serve as full read/write tables. The PostgreSQL Catalog connector additionally exposes foreign-key metadata for NSQL and query planning (<a href="https://github.com/spiceai/spiceai/pull/10849" target="_blank" rel="noopener noreferrer" class="">#10849</a>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="snowflake-dml-support">Snowflake DML Support<a href="https://spiceai.org/releases/v2.0-rc.5#snowflake-dml-support" class="hash-link" aria-label="Direct link to Snowflake DML Support" title="Direct link to Snowflake DML Support" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/next/components/data-connectors/snowflake" target="_blank" rel="noopener noreferrer" class="">Snowflake</a> data connector now supports write-back via <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> operations (<a href="https://github.com/spiceai/spiceai/pull/10747" target="_blank" rel="noopener noreferrer" class="">#10747</a>), complementing its existing read capabilities.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="arrow-primary-key-upserts">Arrow Primary Key Upserts<a href="https://spiceai.org/releases/v2.0-rc.5#arrow-primary-key-upserts" class="hash-link" aria-label="Direct link to Arrow Primary Key Upserts" title="Direct link to Arrow Primary Key Upserts" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/next/components/data-accelerators/arrow" target="_blank" rel="noopener noreferrer" class="">Arrow</a>-accelerated tables now support native upsert operations using primary key matching (<a href="https://github.com/spiceai/spiceai/pull/10749" target="_blank" rel="noopener noreferrer" class="">#10749</a>), providing efficient update-or-insert semantics for in-memory datasets.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="ducklake-promoted-to-beta">DuckLake Promoted to Beta<a href="https://spiceai.org/releases/v2.0-rc.5#ducklake-promoted-to-beta" class="hash-link" aria-label="Direct link to DuckLake Promoted to Beta" title="Direct link to DuckLake Promoted to Beta" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/next/components/catalogs/ducklake" target="_blank" rel="noopener noreferrer" class="">DuckLake</a> Catalog and <a href="https://spiceai.org/docs/next/components/data-connectors/ducklake" target="_blank" rel="noopener noreferrer" class="">Data Connector</a> are promoted to <strong>Beta</strong> quality (<a href="https://github.com/spiceai/spiceai/pull/10743" target="_blank" rel="noopener noreferrer" class="">#10743</a>).</p>
<p>DuckLake catalog tables with <code>read_write</code> access now support <code>INSERT</code> operations (<a href="https://github.com/spiceai/spiceai/pull/10744" target="_blank" rel="noopener noreferrer" class="">#10744</a>), enabling full read/write workflows against DuckLake-backed catalogs. The DuckLake connector also gains a series of correctness fixes for downcast, module registration, schema discovery, and S3 credentials (<a href="https://github.com/spiceai/spiceai/pull/10650" target="_blank" rel="noopener noreferrer" class="">#10650</a>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="user-defined-functions">User-Defined Functions<a href="https://spiceai.org/releases/v2.0-rc.5#user-defined-functions" class="hash-link" aria-label="Direct link to User-Defined Functions" title="Direct link to User-Defined Functions" translate="no">​</a></h3>
<p>Spice now supports <strong>user-defined functions (UDFs)</strong> as a first-class spicepod component (<a href="https://github.com/spiceai/spiceai/pull/10571" target="_blank" rel="noopener noreferrer" class="">#10571</a>), letting you define reusable SQL functions in the spicepod or invoke remote functions over HTTP. The runtime also gains <strong>table user functions</strong> with HTTP server gating (<a href="https://github.com/spiceai/spiceai/pull/10675" target="_blank" rel="noopener noreferrer" class="">#10675</a>).</p>
<p>A security fix closes a remote-UDF SSRF vector (<a href="https://github.com/spiceai/spiceai/pull/10757" target="_blank" rel="noopener noreferrer" class="">#10757</a>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spatial-sql-udfs">Spatial SQL UDFs<a href="https://spiceai.org/releases/v2.0-rc.5#spatial-sql-udfs" class="hash-link" aria-label="Direct link to Spatial SQL UDFs" title="Direct link to Spatial SQL UDFs" translate="no">​</a></h3>
<p>Spice now ships an optional set of geospatial <a href="https://spiceai.org/docs/next/reference/sql" target="_blank" rel="noopener noreferrer" class="">SQL</a> UDFs (<code>ST_*</code>) for geometry workloads (<a href="https://github.com/spiceai/spiceai/pull/10833" target="_blank" rel="noopener noreferrer" class="">#10833</a>). The functions are gated behind a build feature and can be invoked from any SQL surface.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="on-demand-dataset-loading">On-Demand Dataset Loading<a href="https://spiceai.org/releases/v2.0-rc.5#on-demand-dataset-loading" class="hash-link" aria-label="Direct link to On-Demand Dataset Loading" title="Direct link to On-Demand Dataset Loading" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/next/reference/spicepod/datasets" target="_blank" rel="noopener noreferrer" class="">Datasets</a> can now be marked for <strong>on-demand loading</strong> (<a href="https://github.com/spiceai/spiceai/pull/10629" target="_blank" rel="noopener noreferrer" class="">#10629</a>). Deferred datasets are registered with a declared schema at startup (<a href="https://github.com/spiceai/spiceai/pull/10669" target="_blank" rel="noopener noreferrer" class="">#10669</a>) and only fully resolve when first referenced, reducing startup time and memory footprint for spicepods with many seldom-used datasets.</p>
<p>Spicepods also gain <strong><code>columns[].type</code> and <code>columns[].nullable</code></strong> (<a href="https://github.com/spiceai/spiceai/pull/10661" target="_blank" rel="noopener noreferrer" class="">#10661</a>) with a lenient type parser for declaring schemas inline.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="unified-query-cancellation">Unified Query Cancellation<a href="https://spiceai.org/releases/v2.0-rc.5#unified-query-cancellation" class="hash-link" aria-label="Direct link to Unified Query Cancellation" title="Direct link to Unified Query Cancellation" translate="no">​</a></h3>
<p>All query execution paths — HTTP, Flight, FlightSQL, MCP, and internal — now honour a unified cancellation signal (<a href="https://github.com/spiceai/spiceai/pull/10390" target="_blank" rel="noopener noreferrer" class="">#10390</a>). When a client disconnects, presses <code>Ctrl-C</code> in the REPL, or cancels an in-flight HTTP request, the corresponding query is cancelled end-to-end, freeing resources promptly.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamic-http-connector">Dynamic HTTP Connector<a href="https://spiceai.org/releases/v2.0-rc.5#dynamic-http-connector" class="hash-link" aria-label="Direct link to Dynamic HTTP Connector" title="Direct link to Dynamic HTTP Connector" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/next/components/data-connectors/https" target="_blank" rel="noopener noreferrer" class="">HTTP data connector</a> gains dynamic request headers parameterised from query predicates (<a href="https://github.com/spiceai/spiceai/pull/10604" target="_blank" rel="noopener noreferrer" class="">#10604</a>), subquery-driven request parameters for fan-out queries (<a href="https://github.com/spiceai/spiceai/pull/10636" target="_blank" rel="noopener noreferrer" class="">#10636</a>), HTTP response metadata as queryable columns via JSON schema decomposition (<a href="https://github.com/spiceai/spiceai/pull/10679" target="_blank" rel="noopener noreferrer" class="">#10679</a>), no-limit pagination (<a href="https://github.com/spiceai/spiceai/pull/10673" target="_blank" rel="noopener noreferrer" class="">#10673</a>), and shared rate-control across HTTP-based connectors using the same backend host (<a href="https://github.com/spiceai/spiceai/pull/10648" target="_blank" rel="noopener noreferrer" class="">#10648</a>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="http-rate-control-persistence">HTTP Rate-Control Persistence<a href="https://spiceai.org/releases/v2.0-rc.5#http-rate-control-persistence" class="hash-link" aria-label="Direct link to HTTP Rate-Control Persistence" title="Direct link to HTTP Rate-Control Persistence" translate="no">​</a></h3>
<p>The HTTP rate-control state (per-endpoint throttle counters) is now persisted in object storage (<a href="https://github.com/spiceai/spiceai/pull/10697" target="_blank" rel="noopener noreferrer" class="">#10697</a>), ensuring rate limits survive restarts and are consistent across replicas. Rate-control metrics now use an <code>origin</code> label rather than the connector name for cleaner aggregation (<a href="https://github.com/spiceai/spiceai/pull/10689" target="_blank" rel="noopener noreferrer" class="">#10689</a>).</p>
<p>The metrics HTTP endpoint (<code>/metrics</code>) is also independently rate-limited (<a href="https://github.com/spiceai/spiceai/pull/10162" target="_blank" rel="noopener noreferrer" class="">#10162</a>) to prevent scraping from impacting query serving.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="refresh_mode-snapshot"><code>refresh_mode: snapshot</code><a href="https://spiceai.org/releases/v2.0-rc.5#refresh_mode-snapshot" class="hash-link" aria-label="Direct link to refresh_mode-snapshot" title="Direct link to refresh_mode-snapshot" translate="no">​</a></h3>
<blockquote>
<p><a href="https://docs.spice.ai/docs/enterprise" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a> feature. See <a href="https://docs.spice.ai/docs/enterprise/features/acceleration-snapshots" target="_blank" rel="noopener noreferrer" class="">Acceleration Snapshots</a>.</p>
</blockquote>
<p>A new <code>refresh_mode: snapshot</code> provides point-in-time snapshot acceleration (<a href="https://github.com/spiceai/spiceai/pull/10651" target="_blank" rel="noopener noreferrer" class="">#10651</a>), with SQLite and Turso WAL flushing and a Cayenne metastore slice integration so accelerated readers see a consistent snapshot while writes continue.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="storage-profile-accelerator-tuning">Storage-Profile Accelerator Tuning<a href="https://spiceai.org/releases/v2.0-rc.5#storage-profile-accelerator-tuning" class="hash-link" aria-label="Direct link to Storage-Profile Accelerator Tuning" title="Direct link to Storage-Profile Accelerator Tuning" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/next/components/data-accelerators" target="_blank" rel="noopener noreferrer" class="">Acceleration</a> configs gain a new <code>storage_profile</code> field (<a href="https://github.com/spiceai/spiceai/pull/10913" target="_blank" rel="noopener noreferrer" class="">#10913</a>) with values <code>auto</code> (default), <code>local_ssd</code>, <code>ebs</code>, and <code>tmpfs</code>. Under <code>auto</code>, the runtime detects whether the acceleration store is backed by local SSD, EBS-class network disk, or tmpfs, and applies storage-aware defaults across DuckDB, partitioned DuckDB, SQLite, Turso, and Cayenne file-mode accelerators. Explicit per-accelerator parameters always override the profile defaults.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="provider-aware-llm-prompt-caching">Provider-Aware LLM Prompt Caching<a href="https://spiceai.org/releases/v2.0-rc.5#provider-aware-llm-prompt-caching" class="hash-link" aria-label="Direct link to Provider-Aware LLM Prompt Caching" title="Direct link to Provider-Aware LLM Prompt Caching" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/next/features/large-language-models" target="_blank" rel="noopener noreferrer" class="">LLM</a> calls automatically use <strong>provider-aware prompt caching</strong> (<a href="https://github.com/spiceai/spiceai/pull/10645" target="_blank" rel="noopener noreferrer" class="">#10645</a>) when the configured model provider supports it (e.g., Anthropic, OpenAI). System prompts and tool descriptions are marked for caching so repeated invocations within the cache window reuse the provider-side cached prefix, reducing latency and cost.</p>
<p>A new <strong>searchable registry mode for LLM tools</strong> (<a href="https://github.com/spiceai/spiceai/pull/10647" target="_blank" rel="noopener noreferrer" class="">#10647</a>) lets agents discover tools by semantic search rather than enumerating all tools in the system prompt, which scales to large tool inventories.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="responses-api-improvements">Responses API Improvements<a href="https://spiceai.org/releases/v2.0-rc.5#responses-api-improvements" class="hash-link" aria-label="Direct link to Responses API Improvements" title="Direct link to Responses API Improvements" translate="no">​</a></h3>
<p>The Responses API is now supported across all configured <a href="https://spiceai.org/docs/next/components/models" target="_blank" rel="noopener noreferrer" class="">model providers</a> (<a href="https://github.com/spiceai/spiceai/pull/10724" target="_blank" rel="noopener noreferrer" class="">#10724</a>). Streaming delta events via <code>response.output_text.delta</code> are also supported (<a href="https://github.com/spiceai/spiceai/pull/10828" target="_blank" rel="noopener noreferrer" class="">#10828</a>). The runtime now also accepts <code>Authorization: Bearer</code> headers in addition to <code>x-api-key</code>, bumps <code>async-openai</code>, and stops populating <code>FunctionToolCall.id</code> so OpenAI-compatible servers can assign the ID themselves (<a href="https://github.com/spiceai/spiceai/pull/10911" target="_blank" rel="noopener noreferrer" class="">#10911</a>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="distributed-cluster-improvements">Distributed Cluster Improvements<a href="https://spiceai.org/releases/v2.0-rc.5#distributed-cluster-improvements" class="hash-link" aria-label="Direct link to Distributed Cluster Improvements" title="Direct link to Distributed Cluster Improvements" translate="no">​</a></h3>
<blockquote>
<p><a href="https://docs.spice.ai/docs/enterprise" target="_blank" rel="noopener noreferrer" class="">Spice.ai Enterprise</a> feature. See <a href="https://docs.spice.ai/docs/enterprise/production/high-availability" target="_blank" rel="noopener noreferrer" class="">High Availability</a>.</p>
</blockquote>
<ul>
<li class=""><strong>Per-request executor readiness gate</strong> (<a href="https://github.com/spiceai/spiceai/pull/10860" target="_blank" rel="noopener noreferrer" class="">#10860</a>): <code>/v1/ready</code> on schedulers waits for a configurable quorum of executors before returning healthy, enabling proper rolling deployments.</li>
<li class=""><strong>Ballista S3 shuffle reads under cluster mode</strong> (<a href="https://github.com/spiceai/spiceai/pull/10910" target="_blank" rel="noopener noreferrer" class="">#10910</a>): The shuffle reader builds its S3 client from the executor pod's environment, matching the writer. Async queries with <code>runtime.params.shuffle_location: s3://...</code> now complete instead of failing with <code>AccessDenied</code> on shuffle fetches.</li>
<li class=""><strong>Flattened scheduler config</strong> (<a href="https://github.com/spiceai/spiceai/pull/10450" target="_blank" rel="noopener noreferrer" class="">#10450</a>): <code>runtime.scheduler.partition_management.*</code> fields are flattened directly onto <code>runtime.scheduler</code> and renamed under the canonical "partition assignment" terminology. See <a href="https://spiceai.org/releases/v2.0-rc.5#breaking-changes" class="">Breaking Changes</a>.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="caching--search">Caching &amp; Search<a href="https://spiceai.org/releases/v2.0-rc.5#caching--search" class="hash-link" aria-label="Direct link to Caching &amp; Search" title="Direct link to Caching &amp; Search" translate="no">​</a></h3>
<p>Improvements across <a href="https://spiceai.org/docs/next/features/caching" target="_blank" rel="noopener noreferrer" class="">Caching</a> and <a href="https://spiceai.org/docs/next/features/search" target="_blank" rel="noopener noreferrer" class="">Search</a>:</p>
<ul>
<li class=""><strong>Per-principal cache namespacing</strong> (<a href="https://github.com/spiceai/spiceai/pull/10702" target="_blank" rel="noopener noreferrer" class="">#10702</a>): SQL, search, and caching-accelerator caches are now namespaced per authenticated principal, so cached results never cross identity boundaries.</li>
<li class=""><strong>DuckDB HNSW vector indexes</strong> (<a href="https://github.com/spiceai/spiceai/pull/10695" target="_blank" rel="noopener noreferrer" class="">#10695</a>, <a href="https://github.com/spiceai/spiceai/pull/10674" target="_blank" rel="noopener noreferrer" class="">#10674</a>, <a href="https://github.com/spiceai/spiceai/pull/10668" target="_blank" rel="noopener noreferrer" class="">#10668</a>): DuckDB-accelerated views support HNSW vector indexes for <a href="https://spiceai.org/docs/next/features/search/vector-search" target="_blank" rel="noopener noreferrer" class="">vector search</a>, vector search SQL is rewritten to activate <code>HNSW_INDEX_SCAN</code>, and HNSW indexes are preserved across data refresh.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security-improvements">Security Improvements<a href="https://spiceai.org/releases/v2.0-rc.5#security-improvements" class="hash-link" aria-label="Direct link to Security Improvements" title="Direct link to Security Improvements" translate="no">​</a></h3>
<p>See <a href="https://spiceai.org/docs/next/api/auth" target="_blank" rel="noopener noreferrer" class="">Authentication</a> and <a href="https://spiceai.org/docs/next/api/tls" target="_blank" rel="noopener noreferrer" class="">TLS</a> for configuring Spice security.</p>
<ul>
<li class=""><strong>API key timing-position leak and remote-UDF SSRF</strong> (<a href="https://github.com/spiceai/spiceai/pull/10757" target="_blank" rel="noopener noreferrer" class="">#10757</a>): Closed a timing-based position-disclosure leak in API key comparison and blocked SSRF via remote UDF endpoint parameters.</li>
<li class=""><strong>Configurable <code>allowed_hosts</code> for MCP</strong> (<a href="https://github.com/spiceai/spiceai/pull/10638" target="_blank" rel="noopener noreferrer" class="">#10638</a>): MCP servers can be restricted to an explicit allowlist of upstream hosts.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="sql-query-and-developer-experience">SQL, Query, and Developer Experience<a href="https://spiceai.org/releases/v2.0-rc.5#sql-query-and-developer-experience" class="hash-link" aria-label="Direct link to SQL, Query, and Developer Experience" title="Direct link to SQL, Query, and Developer Experience" translate="no">​</a></h3>
<p>See the <a href="https://spiceai.org/docs/next/reference/sql" target="_blank" rel="noopener noreferrer" class="">SQL Reference</a> for the full SQL surface area.</p>
<ul>
<li class=""><strong>SQL REPL expanded view</strong> (<a href="https://github.com/spiceai/spiceai/pull/10797" target="_blank" rel="noopener noreferrer" class="">#10797</a>): Toggle <code>\x</code> in the REPL for a vertical key-value layout on wide result sets.</li>
<li class=""><strong>FlightSQL Substrait plan support</strong> (<a href="https://github.com/spiceai/spiceai/pull/10761" target="_blank" rel="noopener noreferrer" class="">#10761</a>): The Spice runtime now implements <code>CommandStatementSubstraitPlan</code>, enabling clients that submit plans as Substrait-encoded protobuf.</li>
<li class=""><strong>MCP auth for streamable HTTP tools</strong> (<a href="https://github.com/spiceai/spiceai/pull/10927" target="_blank" rel="noopener noreferrer" class="">#10927</a>): Streamable HTTP MCP tools support native authentication via <code>mcp_auth_token</code> and <code>mcp_headers</code>, both with full Spice secret expansion.</li>
<li class=""><strong>Elasticsearch FTS engine config and index lifecycle</strong> (<a href="https://github.com/spiceai/spiceai/pull/10672" target="_blank" rel="noopener noreferrer" class="">#10672</a>): Direct FTS engine configuration plus index lifecycle and ingestion controls for the <a href="https://spiceai.org/docs/next/components/data-connectors/elasticsearch" target="_blank" rel="noopener noreferrer" class="">Elasticsearch</a> connector.</li>
<li class=""><strong>Self-hosted Spice connector</strong> (<a href="https://github.com/spiceai/spiceai/pull/10546" target="_blank" rel="noopener noreferrer" class="">#10546</a>): Connect Spice to another self-hosted Spice runtime as a federated source.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="connector-bug-fixes">Connector Bug Fixes<a href="https://spiceai.org/releases/v2.0-rc.5#connector-bug-fixes" class="hash-link" aria-label="Direct link to Connector Bug Fixes" title="Direct link to Connector Bug Fixes" translate="no">​</a></h3>
<p>Notable correctness fixes across the <a href="https://spiceai.org/docs/next/components/data-connectors" target="_blank" rel="noopener noreferrer" class="">Data Connectors</a>: DynamoDB Streams retry on transient errors (<a href="https://github.com/spiceai/spiceai/pull/10794" target="_blank" rel="noopener noreferrer" class="">#10794</a>) and typed-NULL handling in DML (<a href="https://github.com/spiceai/spiceai/pull/10511" target="_blank" rel="noopener noreferrer" class="">#10511</a>); ScyllaDB physical filter pushdown disabled to fix incorrect results (<a href="https://github.com/spiceai/spiceai/pull/10772" target="_blank" rel="noopener noreferrer" class="">#10772</a>); MSSQL <code>TOP N</code> pushdown for non-nullable sort columns (<a href="https://github.com/spiceai/spiceai/pull/10621" target="_blank" rel="noopener noreferrer" class="">#10621</a>); DuckLake <code>include</code> filter applied (<a href="https://github.com/spiceai/spiceai/pull/10738" target="_blank" rel="noopener noreferrer" class="">#10738</a>); DuckDB DELETE/UPDATE on <code>full</code> and <code>caching</code> refresh modes (<a href="https://github.com/spiceai/spiceai/pull/10632" target="_blank" rel="noopener noreferrer" class="">#10632</a>); checked arithmetic for Turso integer-millis and timestamp-to-nanosecond conversions (<a href="https://github.com/spiceai/spiceai/pull/10786" target="_blank" rel="noopener noreferrer" class="">#10786</a>, <a href="https://github.com/spiceai/spiceai/pull/10666" target="_blank" rel="noopener noreferrer" class="">#10666</a>); and Flight <code>GetFlightInfo</code>/<code>DoGet</code> schema parity (<a href="https://github.com/spiceai/spiceai/pull/10864" target="_blank" rel="noopener noreferrer" class="">#10864</a>). See the <a href="https://spiceai.org/releases/v2.0-rc.5#changelog" class="">Changelog</a> for the full list.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependency-updates">Dependency Updates<a href="https://spiceai.org/releases/v2.0-rc.5#dependency-updates" class="hash-link" aria-label="Direct link to Dependency Updates" title="Direct link to Dependency Updates" translate="no">​</a></h3>
<table><thead><tr><th>Dependency / Component</th><th>Version</th></tr></thead><tbody><tr><td><strong>DuckDB</strong></td><td>v1.5.2</td></tr><tr><td><strong>Iceberg</strong></td><td>v0.9.1</td></tr><tr><td><strong>Turso</strong></td><td>v0.6.0</td></tr><tr><td><strong>Vortex</strong></td><td>v0.69.0</td></tr></tbody></table>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.0-rc.5#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.0-rc.5#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p><strong>Flattened <code>runtime.scheduler</code> configuration</strong> (<a href="https://github.com/spiceai/spiceai/pull/10450" target="_blank" rel="noopener noreferrer" class="">#10450</a>): The nested <code>runtime.scheduler.partition_management</code> block has been flattened and renamed to use the canonical "partition assignment" terminology. Migrate as follows:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Before</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_management</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 30s</span><br></div><div class="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_assignments_per_cycle</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%)">16</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">discovery_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)"># After</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_assignment_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 30s</span><br></div><div class="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_assignments_per_interval</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%)">16</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_discovery_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.0-rc.5#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.0-rc.5#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.0.0-rc.5, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade v2.0.0-rc.5</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.0-rc.5</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.0-rc.5</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.5</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.0-rc.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.0-rc.5#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Enable DML support for PostgreSQL data 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/10446" target="_blank" rel="noopener noreferrer" class="">#10446</a></li>
<li class="">feat(postgres): support inline PEM sslrootcert by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10578" target="_blank" rel="noopener noreferrer" class="">#10578</a></li>
<li class="">Add foreign key metadata discovery to PostgreSQL Catalog by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10849" target="_blank" rel="noopener noreferrer" class="">#10849</a></li>
<li class="">Add Snowflake DML 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/10747" target="_blank" rel="noopener noreferrer" class="">#10747</a></li>
<li class="">Add MongoDB Change Streams 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/10813" target="_blank" rel="noopener noreferrer" class="">#10813</a></li>
<li class="">Add user-defined functions by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10571" target="_blank" rel="noopener noreferrer" class="">#10571</a></li>
<li class="">Add table user functions and gate HTTP servers by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10675" target="_blank" rel="noopener noreferrer" class="">#10675</a></li>
<li class="">feat: add on-demand dataset loading by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10629" target="_blank" rel="noopener noreferrer" class="">#10629</a></li>
<li class="">feat(runtime): declared-schema deferred 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/10669" target="_blank" rel="noopener noreferrer" class="">#10669</a></li>
<li class="">feat(spicepod, runtime): add columns[].type / nullable + lenient type parser by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10661" target="_blank" rel="noopener noreferrer" class="">#10661</a></li>
<li class="">Replace external smb crate with internal SMB 3.1.1 client by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10516" target="_blank" rel="noopener noreferrer" class="">#10516</a></li>
<li class="">Add unified query cancellation across all 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/10390" target="_blank" rel="noopener noreferrer" class="">#10390</a></li>
<li class="">Add dynamic HTTP request headers by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10604" target="_blank" rel="noopener noreferrer" class="">#10604</a></li>
<li class="">feat(http): Support dynamic HTTP connector request params from subqueries by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10636" target="_blank" rel="noopener noreferrer" class="">#10636</a></li>
<li class="">feat(http): pass through HTTP metadata columns with JSON schema decomposition by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10679" target="_blank" rel="noopener noreferrer" class="">#10679</a></li>
<li class="">Add nolimit HTTP pagination max pages by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10673" target="_blank" rel="noopener noreferrer" class="">#10673</a></li>
<li class="">Add shared HTTP rate control for 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/10648" target="_blank" rel="noopener noreferrer" class="">#10648</a></li>
<li class="">Use origin label instead of name for HTTP rate control 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/10689" target="_blank" rel="noopener noreferrer" class="">#10689</a></li>
<li class="">fix(http): reject OR across different HTTP filter columns by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10625" target="_blank" rel="noopener noreferrer" class="">#10625</a></li>
<li class="">Add provider-aware LLM prompt 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/10645" target="_blank" rel="noopener noreferrer" class="">#10645</a></li>
<li class="">Add searchable registry mode for LLM tools by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10647" target="_blank" rel="noopener noreferrer" class="">#10647</a></li>
<li class="">feat: refresh_mode: snapshot + SQLite/Turso WAL flush + Cayenne metastore slice by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10651" target="_blank" rel="noopener noreferrer" class="">#10651</a></li>
<li class="">feat: per-principal cache namespacing for SQL/search/caching-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/10702" target="_blank" rel="noopener noreferrer" class="">#10702</a></li>
<li class="">Add self-hosted Spice connector 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/10546" target="_blank" rel="noopener noreferrer" class="">#10546</a></li>
<li class="">Add Delta Lake Azure tenant parameter by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10671" target="_blank" rel="noopener noreferrer" class="">#10671</a></li>
<li class="">Support OAuth2 client credentials in 'spice cloud login' by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10586" target="_blank" rel="noopener noreferrer" class="">#10586</a></li>
<li class="">Add configurable allowed_hosts for MCP by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10638" target="_blank" rel="noopener noreferrer" class="">#10638</a></li>
<li class="">fix: make Helm chart probes configurable by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10696" target="_blank" rel="noopener noreferrer" class="">#10696</a></li>
<li class="">Strip high-cardinality datasets dim from anonymous 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/10711" target="_blank" rel="noopener noreferrer" class="">#10711</a></li>
<li class="">feat(elasticsearch): direct FTS engine config + index lifecycle and ingestion controls by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10672" target="_blank" rel="noopener noreferrer" class="">#10672</a></li>
<li class="">Add DuckDB HNSW vector index support for accelerated views by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10695" target="_blank" rel="noopener noreferrer" class="">#10695</a></li>
<li class="">Rewrite DuckDB vector search SQL to activate HNSW_INDEX_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/10674" target="_blank" rel="noopener noreferrer" class="">#10674</a></li>
<li class="">Fix DuckDB HNSW vector indexes lost after data 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/10668" target="_blank" rel="noopener noreferrer" class="">#10668</a></li>
<li class="">Fix DuckDB DELETE/UPDATE on <code>full</code> and <code>caching</code> refresh mode 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/10632" target="_blank" rel="noopener noreferrer" class="">#10632</a></li>
<li class="">Fix DuckLake connector: downcast, module registration, schema discovery, and S3 credentials by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10650" target="_blank" rel="noopener noreferrer" class="">#10650</a></li>
<li class="">Fix federation pushing denied functions inside subqueries to remote engines by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10692" target="_blank" rel="noopener noreferrer" class="">#10692</a></li>
<li class="">fix(caching): honour refresh_on_startup: always in caching 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/10594" target="_blank" rel="noopener noreferrer" class="">#10594</a></li>
<li class="">fix(iceberg): rebuild storage factory when Hadoop catalog scheme is inferred by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10601" target="_blank" rel="noopener noreferrer" class="">#10601</a></li>
<li class="">Pipeline CDC ingestion: overlap source reads with batch apply by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10676" target="_blank" rel="noopener noreferrer" class="">#10676</a></li>
<li class="">fix: add NULL check to CDC primary key extraction by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10684" target="_blank" rel="noopener noreferrer" class="">#10684</a></li>
<li class="">Properly handle nullability during CDC processing by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10803" target="_blank" rel="noopener noreferrer" class="">#10803</a></li>
<li class="">Flatten scheduler config and rename partition management → partition assignment by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10450" target="_blank" rel="noopener noreferrer" class="">#10450</a></li>
<li class="">Improve NSQL UX and harden internal LLM tools by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10715" target="_blank" rel="noopener noreferrer" class="">#10715</a></li>
<li class="">Support Responses API across model 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/10724" target="_blank" rel="noopener noreferrer" class="">#10724</a></li>
<li class="">Update xAI default model and handle Grok model retirements by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10723" target="_blank" rel="noopener noreferrer" class="">#10723</a></li>
<li class="">Improve cli table layout by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10725" target="_blank" rel="noopener noreferrer" class="">#10725</a></li>
<li class="">TLS cert hot-reload (mTLS plan M1) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10727" target="_blank" rel="noopener noreferrer" class="">#10727</a></li>
<li class="">Fix DuckLake catalog <code>include</code> filter being ignored by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10738" target="_blank" rel="noopener noreferrer" class="">#10738</a></li>
<li class="">Promote DuckLake Catalog and Data Connector to Beta quality by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10743" target="_blank" rel="noopener noreferrer" class="">#10743</a></li>
<li class="">feat(ducklake): Support INSERT on catalog tables with read_write access by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10744" target="_blank" rel="noopener noreferrer" class="">#10744</a></li>
<li class="">perf(cdc): coalesce envelopes and overlap commits in apply pipeline by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10745" target="_blank" rel="noopener noreferrer" class="">#10745</a></li>
<li class="">feat: Allow full version tags in spicepod version by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10748" target="_blank" rel="noopener noreferrer" class="">#10748</a></li>
<li class="">Add Arrow primary key upserts by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10749" target="_blank" rel="noopener noreferrer" class="">#10749</a></li>
<li class="">fix(snapshot): keep refresh_mode snapshot read-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/10752" target="_blank" rel="noopener noreferrer" class="">#10752</a></li>
<li class="">feat(tls): public mTLS for HTTP and Flight (channel + identity modes) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10753" target="_blank" rel="noopener noreferrer" class="">#10753</a></li>
<li class="">perf(cayenne): lock-free deletion caches with bloom-prefiltered probe by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10756" target="_blank" rel="noopener noreferrer" class="">#10756</a></li>
<li class="">fix(security): close API key timing-position leak and remote-UDF SSRF by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10757" target="_blank" rel="noopener noreferrer" class="">#10757</a></li>
<li class="">Fix 'wait_until_dependent_tables_are_ready' for catalogs by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10758" target="_blank" rel="noopener noreferrer" class="">#10758</a></li>
<li class="">Fixes for views and resolved tables on 'spice refresh' CLI by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10759" target="_blank" rel="noopener noreferrer" class="">#10759</a></li>
<li class="">Implement FlightSQL CommandStatementSubstraitPlan 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/10761" target="_blank" rel="noopener noreferrer" class="">#10761</a></li>
<li class="">feat(connectors): mTLS client cert support for flightsql and spiceai 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/10764" target="_blank" rel="noopener noreferrer" class="">#10764</a></li>
<li class="">Allow arbitrary filenames when specifying spicepod path + <code>kind</code> validation by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10777" target="_blank" rel="noopener noreferrer" class="">#10777</a></li>
<li class="">fix: ignore field metadata in schema compatibility check in index_table_scan by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10778" target="_blank" rel="noopener noreferrer" class="">#10778</a></li>
<li class="">Display pushed-down limits in EXPLAIN TREE output by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10779" target="_blank" rel="noopener noreferrer" class="">#10779</a></li>
<li class="">fix: enable streaming append for Kafka with Cayenne 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/10780" target="_blank" rel="noopener noreferrer" class="">#10780</a></li>
<li class="">fix: bound chunked-index intermediate batch size to prevent OOM by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10783" target="_blank" rel="noopener noreferrer" class="">#10783</a></li>
<li class="">fix: label all columns in <code>spice cloud metrics</code> table output by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10784" target="_blank" rel="noopener noreferrer" class="">#10784</a></li>
<li class="">fix: use checked arithmetic for Turso integer-millis timestamp read path by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10786" target="_blank" rel="noopener noreferrer" class="">#10786</a></li>
<li class="">fix: use checked arithmetic in timestamp-to-nanosecond conversions by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10666" target="_blank" rel="noopener noreferrer" class="">#10666</a></li>
<li class="">Upgrade to DuckDB v1.5.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/10788" target="_blank" rel="noopener noreferrer" class="">#10788</a></li>
<li class="">Improve CDC ingestion 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/10789" target="_blank" rel="noopener noreferrer" class="">#10789</a></li>
<li class="">Fix <code>tool_search</code>/<code>tool_invoke</code> spans by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10791" target="_blank" rel="noopener noreferrer" class="">#10791</a></li>
<li class="">Add Cayenne inline mutations and benchmark 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/10792" target="_blank" rel="noopener noreferrer" class="">#10792</a></li>
<li class="">Ensure we always resolve table names in distributed mode/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/10793" target="_blank" rel="noopener noreferrer" class="">#10793</a></li>
<li class="">Remove permanent errors from 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/10794" target="_blank" rel="noopener noreferrer" class="">#10794</a></li>
<li class="">Add expanded view mode for wide table display in 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/10797" target="_blank" rel="noopener noreferrer" class="">#10797</a></li>
<li class="">Fix Cayenne CDC schema mismatch 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/10800" target="_blank" rel="noopener noreferrer" class="">#10800</a></li>
<li class="">Executors should create catalog tables on join by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10807" target="_blank" rel="noopener noreferrer" class="">#10807</a></li>
<li class="">Add compressed file support for listing 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/10809" target="_blank" rel="noopener noreferrer" class="">#10809</a></li>
<li class="">Improve Cayenne mutation, scan, and inline memtable scaling by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10811" target="_blank" rel="noopener noreferrer" class="">#10811</a></li>
<li class="">Add range fallback for large join 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/10816" target="_blank" rel="noopener noreferrer" class="">#10816</a></li>
<li class="">Improve Cayenne join filter pushdown by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10818" target="_blank" rel="noopener noreferrer" class="">#10818</a></li>
<li class="">Synchronize Cayenne partition commits across 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/10819" target="_blank" rel="noopener noreferrer" class="">#10819</a></li>
<li class="">fix: Deny nondistributed 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/10821" target="_blank" rel="noopener noreferrer" class="">#10821</a></li>
<li class="">Enable parallel Cayenne Vortex writes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10822" target="_blank" rel="noopener noreferrer" class="">#10822</a></li>
<li class="">Expand Arrow type handling in formatting and Elasticsearch by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10825" target="_blank" rel="noopener noreferrer" class="">#10825</a></li>
<li class="">Add <code>response.output_text.delta</code> to responses API by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10828" target="_blank" rel="noopener noreferrer" class="">#10828</a></li>
<li class="">feat(cayenne): add join filter propagation and no-spill Q21 planning by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10840" target="_blank" rel="noopener noreferrer" class="">#10840</a></li>
<li class="">Upgrade Turso to v0.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/10843" target="_blank" rel="noopener noreferrer" class="">#10843</a></li>
<li class="">feat(cli): add <code>spice feedback</code> command to open community Slack by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10856" target="_blank" rel="noopener noreferrer" class="">#10856</a></li>
<li class="">Upgrade iceberg to v0.9.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/10859" target="_blank" rel="noopener noreferrer" class="">#10859</a></li>
<li class="">feat(cluster): per-request executor readiness gate on /v1/ready by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10860" target="_blank" rel="noopener noreferrer" class="">#10860</a></li>
<li class="">fix: Require dim-side statistics for <code>CayennePropagateFilterAcrossEquiJoinKeys</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/10863" target="_blank" rel="noopener noreferrer" class="">#10863</a></li>
<li class="">fix: Debezium schema evolution breaks dataset init on reload by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10144" target="_blank" rel="noopener noreferrer" class="">#10144</a></li>
<li class="">fix(mssql): Push topK limit to SQL Server for non-nullable sort 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/10621" target="_blank" rel="noopener noreferrer" class="">#10621</a></li>
<li class="">fix(ScyllaDB): disable physical filter 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/10772" target="_blank" rel="noopener noreferrer" class="">#10772</a></li>
<li class="">fix: handle typed NULLs and prevent overflow in DynamoDB DML type conversions by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10511" target="_blank" rel="noopener noreferrer" class="">#10511</a></li>
<li class="">fix: use InsertOp::Overwrite in DynamoDB bootstrap scan_and_overwrite_accelerator by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10639" target="_blank" rel="noopener noreferrer" class="">#10639</a></li>
<li class="">Improve DynamoDB Bootstrap performance by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10616" target="_blank" rel="noopener noreferrer" class="">#10616</a></li>
<li class="">fix: preserve field and schema metadata in Vortex type transformation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10628" target="_blank" rel="noopener noreferrer" class="">#10628</a></li>
<li class="">fix: GH connector - explicitly use AWS LC RS crypto provider for jwt by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10619" target="_blank" rel="noopener noreferrer" class="">#10619</a></li>
<li class="">fix: add snapshot mode guards to delete_from/update and delegate DML in SwappableTableProvider by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10685" target="_blank" rel="noopener noreferrer" class="">#10685</a></li>
<li class="">Persist HTTP rate-control state in object storage by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10697" target="_blank" rel="noopener noreferrer" class="">#10697</a></li>
<li class="">Rate limit metrics HTTP 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/10162" target="_blank" rel="noopener noreferrer" class="">#10162</a></li>
<li class="">feat(geo): add optional spatial SQL UDF 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/10833" target="_blank" rel="noopener noreferrer" class="">#10833</a></li>
<li class="">feat(cayenne): CDC throughput, compaction, scan caching, and benchmarks by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10852" target="_blank" rel="noopener noreferrer" class="">#10852</a></li>
<li class="">fix(cayenne): fix Vortex panic on highly compressible 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/10855" target="_blank" rel="noopener noreferrer" class="">#10855</a></li>
<li class="">fix(cayenne): Read live protected snapshots after cleanup grace period by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10901" target="_blank" rel="noopener noreferrer" class="">#10901</a></li>
<li class="">fix: Disable Cayenne HashJoin rewriter optimizer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10882" target="_blank" rel="noopener noreferrer" class="">#10882</a></li>
<li class="">Fix GetFlightInfo vs DoGet Flight Schema by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10864" target="_blank" rel="noopener noreferrer" class="">#10864</a></li>
<li class="">fix(search): preserve column casing in /v1/search primary key plumbing by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10909" target="_blank" rel="noopener noreferrer" class="">#10909</a></li>
<li class="">fix(object-store): dedupe s3 url style auto-detection 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/10898" target="_blank" rel="noopener noreferrer" class="">#10898</a></li>
<li class="">Improve Spice CLI manifest editing and direct command modes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10815" target="_blank" rel="noopener noreferrer" class="">#10815</a></li>
<li class="">Persist Kafka CDC offsets in sidecar tables by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10823" target="_blank" rel="noopener noreferrer" class="">#10823</a></li>
<li class="">feat(task-history): record Ballista stages for distributed queries by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10831" target="_blank" rel="noopener noreferrer" class="">#10831</a></li>
<li class="">Add '#[deny(clippy::missing_trait_methods)]' to wrapper/delegation trait impls by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10795" target="_blank" rel="noopener noreferrer" class="">#10795</a></li>
<li class="">Optimize Cayenne catalog maintenance 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/10904" target="_blank" rel="noopener noreferrer" class="">#10904</a></li>
<li class="">Centralize DuckDB settings for accelerator by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10895" target="_blank" rel="noopener noreferrer" class="">#10895</a></li>
<li class="">deps(ballista): bump to 47e2b494 to fix S3 shuffle reads under 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/10910" target="_blank" rel="noopener noreferrer" class="">#10910</a></li>
<li class="">Authorization header + Bump async-openai + <code>responses_adapter</code> fix by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10911" target="_blank" rel="noopener noreferrer" class="">#10911</a></li>
<li class="">Tune accelerators by storage profile by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10913" target="_blank" rel="noopener noreferrer" class="">#10913</a></li>
<li class="">feat: add dataset-level on_schema_change config by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10908" target="_blank" rel="noopener noreferrer" class="">#10908</a></li>
<li class="">Handle <code>NULL</code> sentinel for nullable partition expressions by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10880" target="_blank" rel="noopener noreferrer" class="">#10880</a></li>
<li class="">fix: Remove Cayenne Catalog from catalog registration by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10914" target="_blank" rel="noopener noreferrer" class="">#10914</a></li>
<li class="">Add catalog name to foreign key metadata in postgres 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/10917" target="_blank" rel="noopener noreferrer" class="">#10917</a></li>
<li class="">Cayenne perf: eliminate redundant clones, PK point-lookup fanout fix, IN-list rewrite + microbench 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/10916" target="_blank" rel="noopener noreferrer" class="">#10916</a></li>
<li class="">fix(turso-shared): retry on Turso BEGIN CONCURRENT "Write-write conflict" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10946" target="_blank" rel="noopener noreferrer" class="">#10946</a></li>
<li class="">Vendor Vortex DataFusion for 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/10933" target="_blank" rel="noopener noreferrer" class="">#10933</a></li>
<li class="">perf(cayenne): background retention + enable CDC pipelining for retention-configured tables by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10936" target="_blank" rel="noopener noreferrer" class="">#10936</a></li>
<li class="">feat(cayenne): scale metastore pool to 32 + vs_duckdb_scaling benches (1→128 concurrency, sqlite + turso lanes) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10943" target="_blank" rel="noopener noreferrer" class="">#10943</a></li>
<li class="">feat(mcp): support auth for streamable HTTP tools by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10927" target="_blank" rel="noopener noreferrer" class="">#10927</a></li>
<li class="">Explicit error if v1/search requests a table without search index by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10968" target="_blank" rel="noopener noreferrer" class="">#10968</a></li>
<li class="">Fix spicepod loading failure when directory name contains dots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10958" target="_blank" rel="noopener noreferrer" class="">#10958</a></li>
<li class="">Extend append tests with arrow engine 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/10959" target="_blank" rel="noopener noreferrer" class="">#10959</a></li>
<li class="">Remove dataset on_schema_change Policy from rc.5 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/10964" target="_blank" rel="noopener noreferrer" class="">#10964</a></li>
<li class="">Skip tpcds_q78 for Cayenne engine at SF100 by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10966" target="_blank" rel="noopener noreferrer" class="">#10966</a></li>
<li class="">fix: Update benchmark snapshots May-20 by <a href="https://github.com/apps/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/10952" target="_blank" rel="noopener noreferrer" class="">#10952</a></li>
<li class="">Fix #10951: UdtfExec invariant Vec lengths must match children count by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10953" target="_blank" rel="noopener noreferrer" class="">#10953</a></li>
<li class="">docs(release): update v2.0.0-rc.5 notes with latest trunk PRs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10949" target="_blank" rel="noopener noreferrer" class="">#10949</a></li>
<li class="">Remove eval related things for v2.0.0 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10945" target="_blank" rel="noopener noreferrer" class="">#10945</a></li>
<li class="">build(deps): bump ubuntu from 24.04 to 26.04 in the docker-dependencies group by <a href="https://github.com/apps/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/10883" target="_blank" rel="noopener noreferrer" class="">#10883</a></li>
<li class="">fix: Add publish = false to chbench-driver by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10939" target="_blank" rel="noopener noreferrer" class="">#10939</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.0.0-rc.4...v2.0.0-rc.5" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.0.0-rc.4...v2.0.0-rc.5</a></p>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>postgres</category>
            <category>mongodb</category>
            <category>snowflake</category>
            <category>udf</category>
            <category>kafka</category>
            <category>arrow</category>
            <category>ducklake</category>
            <category>data-connector</category>
        </item>
        <item>
            <title><![CDATA[Spice v1.11.6 (May 6, 2026)]]></title>
            <link>https://spiceai.org/releases/v1.11.6</link>
            <guid>https://spiceai.org/releases/v1.11.6</guid>
            <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Spice v1.11.6 is now available! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Spice v1.11.6 is now available! 🛠️</p>
<p>Spice v1.11.6 is a patch release improving <strong>DynamoDB</strong> bootstrap ingestion performance and making <strong>Helm chart</strong> health probes configurable.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v1116">What's New in v1.11.6<a href="https://spiceai.org/releases/v1.11.6#whats-new-in-v1116" class="hash-link" aria-label="Direct link to What's New in v1.11.6" title="Direct link to What's New in v1.11.6" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-faster-bootstrap-ingestion">DynamoDB: Faster Bootstrap Ingestion<a href="https://spiceai.org/releases/v1.11.6#dynamodb-faster-bootstrap-ingestion" class="hash-link" aria-label="Direct link to DynamoDB: Faster Bootstrap Ingestion" title="Direct link to DynamoDB: Faster Bootstrap Ingestion" translate="no">​</a></h3>
<p>Improved <a href="https://spiceai.org/docs/components/data-connectors/dynamodb" target="_blank" rel="noopener noreferrer" class="">DynamoDB</a> bootstrap ingestion throughput for <code>refresh_mode: changes</code> datasets (<a href="https://github.com/spiceai/spiceai/pull/10616" target="_blank" rel="noopener noreferrer" class="">#10616</a>). Large tables now maintain a high, steady ingestion rate throughout the entire bootstrap, even for very large tables.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="helm-chart-configurable-health-probes">Helm Chart: Configurable Health Probes<a href="https://spiceai.org/releases/v1.11.6#helm-chart-configurable-health-probes" class="hash-link" aria-label="Direct link to Helm Chart: Configurable Health Probes" title="Direct link to Helm Chart: Configurable Health Probes" translate="no">​</a></h3>
<p>The Spice <a href="https://spiceai.org/docs/deployment/kubernetes" target="_blank" rel="noopener noreferrer" class="">Helm chart</a> now supports configurable <code>livenessProbe</code>, <code>readinessProbe</code>, and <code>startupProbe</code> settings (<a href="https://github.com/spiceai/spiceai/pull/10696" target="_blank" rel="noopener noreferrer" class="">#10696</a>), including probe path, port, and timing parameters.</p>
<p><strong>Example <code>values.yaml</code>:</strong></p>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">livenessProbe</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">httpGet</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /health</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">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%)">8090</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">timeoutSeconds</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%)">1</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">periodSeconds</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><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">failureThreshold</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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">readinessProbe</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">httpGet</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /v1/ready</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">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%)">8090</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">timeoutSeconds</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%)">5</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">periodSeconds</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><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">failureThreshold</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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">startupProbe</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">httpGet</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /health</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">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%)">8090</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">timeoutSeconds</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%)">1</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">periodSeconds</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><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">failureThreshold</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%)">30</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v1.11.6#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v1.11.6#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v1.11.6#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No new cookbook recipes.</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v1.11.6#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v1.11.6, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.11.6</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.11.6</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.11.6</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v1.11.6#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v1.11.6#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Improve DynamoDB Bootstrap performance by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10616" target="_blank" rel="noopener noreferrer" class="">#10616</a></li>
<li class="">fix: use InsertOp::Overwrite in DynamoDB bootstrap scan_and_overwrite_accelerator by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10639" target="_blank" rel="noopener noreferrer" class="">#10639</a></li>
<li class="">fix: make Helm chart probes configurable by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10696" target="_blank" rel="noopener noreferrer" class="">#10696</a></li>
<li class="">Migrate secrets to vars by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10354" target="_blank" rel="noopener noreferrer" class="">#10354</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v1.11.5...v1.11.6" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v1.11.5...v1.11.6</a></p>]]></content:encoded>
            <category>release</category>
            <category>dynamodb</category>
            <category>data-connector</category>
            <category>helm</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0-rc.4 (Apr 30, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0-rc.4</link>
            <guid>https://spiceai.org/releases/v2.0-rc.4</guid>
            <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v2.0-rc.4! 🚀]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v2.0-rc.4! 🚀</p>
<p>v2.0.0-rc.4 is the fourth release candidate for advanced testing of v2.0, building on <a href="https://github.com/spiceai/spiceai/releases/tag/v2.0.0-rc.3" target="_blank" rel="noopener noreferrer" class="">v2.0.0-rc.3</a>.</p>
<p>Highlights in this release candidate include:</p>
<ul>
<li class=""><strong>Elasticsearch Data Connector (Alpha)</strong> with native hybrid search (BM25 full-text + kNN vector + RRF)</li>
<li class=""><strong>PostgreSQL Native CDC</strong> via WAL logical replication, eliminating the need for Debezium or Kafka</li>
<li class=""><strong>Multi-vector Embeddings with MaxSim</strong> for ColBERT-style late-interaction retrieval</li>
<li class=""><strong>Rerank UDTF</strong> for hybrid search pipelines with automatic query propagation</li>
<li class=""><strong>HashiCorp Vault and Azure Key Vault Secret Stores</strong> for enterprise secret management</li>
<li class=""><strong>DuckDB Vector Engine</strong> with HNSW index support</li>
<li class=""><strong>Azure Cosmos DB Connector</strong> (RC), <strong>Git Connector</strong> promoted to RC</li>
<li class=""><strong>MCP Streamable HTTP</strong> transport</li>
<li class=""><strong>Read-only API Key Enforcement</strong> on Flight DoGet and async query paths</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v200-rc4">What's New in v2.0.0-rc.4<a href="https://spiceai.org/releases/v2.0-rc.4#whats-new-in-v200-rc4" class="hash-link" aria-label="Direct link to What's New in v2.0.0-rc.4" title="Direct link to What's New in v2.0.0-rc.4" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="elasticsearch-data-connector-alpha-spiceai-enterprise">Elasticsearch Data Connector (Alpha, Spice.ai Enterprise)<a href="https://spiceai.org/releases/v2.0-rc.4#elasticsearch-data-connector-alpha-spiceai-enterprise" class="hash-link" aria-label="Direct link to Elasticsearch Data Connector (Alpha, Spice.ai Enterprise)" title="Direct link to Elasticsearch Data Connector (Alpha, Spice.ai Enterprise)" translate="no">​</a></h3>
<p>The new <a href="https://spiceai.org/docs/components/data-connectors/elasticsearch" target="_blank" rel="noopener noreferrer" class="">Elasticsearch</a> data connector enables querying Elasticsearch indexes as SQL tables with full hybrid search support. Currently available in Spice.ai Enterprise.</p>
<p><strong>Key capabilities</strong>:</p>
<ul>
<li class=""><strong>SQL Table Access</strong>: Query any Elasticsearch index with standard SQL via a native DataFusion <code>TableProvider</code>.</li>
<li class=""><strong>kNN Vector Search</strong>: Use the <code>vector_search()</code> UDTF against Elasticsearch-backed vector fields.</li>
<li class=""><strong>BM25 Full-Text Search</strong>: Use the <code>text_search()</code> UDTF for native Elasticsearch full-text queries.</li>
<li class=""><strong>Hybrid Search</strong>: Combine kNN and BM25 results with the <code>rrf()</code> UDTF for reciprocal rank fusion.</li>
<li class=""><strong>Elasticsearch as a Vector Engine</strong>: Accelerated datasets can use Elasticsearch as the backing vector engine for embedding storage and retrieval.</li>
</ul>
<p>Example configuration:</p>
<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"><div 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></div><div 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"> elasticsearch</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_index</span><br></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">elasticsearch_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">//my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">cluster.es.io</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">9200</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">elasticsearch_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">es_user</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">elasticsearch_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">es_password</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="postgresql-native-replication-via-wal">PostgreSQL Native Replication via WAL<a href="https://spiceai.org/releases/v2.0-rc.4#postgresql-native-replication-via-wal" class="hash-link" aria-label="Direct link to PostgreSQL Native Replication via WAL" title="Direct link to PostgreSQL Native Replication via WAL" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">Postgres</a> datasets configured with <code>refresh_mode: changes</code> can now stream changes directly from PostgreSQL logical replication (WAL) into any local accelerator without Debezium or Kafka required.</p>
<p><strong>Key capabilities</strong>:</p>
<ul>
<li class=""><strong>Native Logical Replication</strong>: Uses <code>pgoutput</code> decoding to stream INSERT/UPDATE/DELETE events.</li>
<li class=""><strong>Automatic Slot Management</strong>: Each Spice replica creates a distinct replication slot (<code>spice_&lt;dataset&gt;_&lt;hash&gt;</code>), so multi-replica deployments work automatically. Publications are shared.</li>
<li class=""><strong>Bootstrap Snapshot</strong>: An initial <code>REPEATABLE READ</code> snapshot seeds the accelerator before replication begins.</li>
<li class=""><strong>LSN Acknowledgement</strong>: The <code>LsnCommitter</code> sends durable LSN back to Postgres so WAL segments are reclaimed.</li>
<li class=""><strong>All Accelerators Supported</strong>: Works with DuckDB, SQLite, Postgres, Cayenne, and Arrow accelerators.</li>
</ul>
<p>Example configuration:</p>
<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"><div 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></div><div 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">my_table</span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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"> mydb</span><br></div><div class="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_publication</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_publication   </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># optional; auto-created if omitted</span><span class="token plain"></span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="multi-vector-embeddings-with-maxsim-late-interaction">Multi-vector Embeddings with MaxSim (Late Interaction)<a href="https://spiceai.org/releases/v2.0-rc.4#multi-vector-embeddings-with-maxsim-late-interaction" class="hash-link" aria-label="Direct link to Multi-vector Embeddings with MaxSim (Late Interaction)" title="Direct link to Multi-vector Embeddings with MaxSim (Late Interaction)" translate="no">​</a></h3>
<p>Column-level <a href="https://spiceai.org/docs/components/embeddings" target="_blank" rel="noopener noreferrer" class="">embeddings</a> now support list-of-string columns, producing one embedding vector per list element and enabling ColBERT-style late-interaction retrieval.</p>
<p><strong>Key capabilities</strong>:</p>
<ul>
<li class=""><strong>Multi-vector per Row</strong>: Columns of type <code>List&lt;String&gt;</code> produce <code>List&lt;FixedSizeList&lt;F32, D&gt;&gt;</code> — one embedding per list element.</li>
<li class=""><strong>MaxSim / Mean / Sum Scoring</strong>: Per-row score is the max, mean, or sum cosine over the list elements. Default is MaxSim (ColBERT).</li>
<li class=""><strong><code>_match</code> Column</strong>: Returns the specific list element that produced the highest cosine similarity.</li>
<li class=""><strong>No Schema Changes Required</strong>: Works with existing embedding configurations; activates automatically for list-type columns.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="rerank-udtf-for-hybrid-search">Rerank UDTF for Hybrid Search<a href="https://spiceai.org/releases/v2.0-rc.4#rerank-udtf-for-hybrid-search" class="hash-link" aria-label="Direct link to Rerank UDTF for Hybrid Search" title="Direct link to Rerank UDTF for Hybrid Search" translate="no">​</a></h3>
<p>A new <code>rerank()</code> table-valued function reorders scored results from <a href="https://spiceai.org/docs/reference/sql/search#vector-search-vector_search" target="_blank" rel="noopener noreferrer" class=""><code>vector_search</code></a>, <a href="https://spiceai.org/docs/reference/sql/search#full-text-search-text_search" target="_blank" rel="noopener noreferrer" class=""><code>text_search</code></a>, or <a href="https://spiceai.org/docs/reference/sql/search#reciprocal-rank-fusion-rrf" target="_blank" rel="noopener noreferrer" class=""><code>rrf</code></a> by a reranker model's relevance judgements. See <a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search Functionality</a> for an overview of search UDTFs.</p>
<p><strong>Key capabilities</strong>:</p>
<ul>
<li class=""><strong>Auto Query Propagation</strong>: The query string is automatically inherited from a nested search UDTF — no repetition required.</li>
<li class=""><strong>Any Chat Model as Reranker</strong>: Any registered chat/completion model can serve as a reranker via the built-in <code>LlmRerank</code> adapter (listwise prompt by default; pointwise available).</li>
<li class=""><strong>Filter and Projection Pushdown</strong>: The <code>RerankExec</code> physical node supports pushdown, reducing data movement.</li>
<li class=""><strong>Extensible</strong>: A new <code>RerankerModelStore</code> sits alongside <code>ChatModelStore</code> and <code>EmbeddingModelStore</code>; native providers (Cohere, Voyage, BGE) can be added without runtime plumbing changes.</li>
</ul>
<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"><div 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"> rerank</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    rrf</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">'my_table'</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%)">'query text'</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"> text_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">'my_table'</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%)">'query text'</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 punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    document </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"> content</span><br></div><div 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 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></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="new-secret-stores-hashicorp-vault-and-azure-key-vault">New Secret Stores: HashiCorp Vault and Azure Key Vault<a href="https://spiceai.org/releases/v2.0-rc.4#new-secret-stores-hashicorp-vault-and-azure-key-vault" class="hash-link" aria-label="Direct link to New Secret Stores: HashiCorp Vault and Azure Key Vault" title="Direct link to New Secret Stores: HashiCorp Vault and Azure Key Vault" translate="no">​</a></h3>
<p>Two new enterprise-grade <a href="https://spiceai.org/docs/components/secret-stores" target="_blank" rel="noopener noreferrer" class="">Secret Stores</a> are now available.</p>
<p><strong>HashiCorp Vault</strong> (<code>hashicorp_vault</code>):</p>
<ul>
<li class="">KV v2 (default) and KV v1 mount support.</li>
<li class="">Auth methods: <code>token</code>, <code>approle</code>, <code>kubernetes</code>, <code>jwt</code>.</li>
<li class="">Token leases are cached and automatically re-acquired on expiry.</li>
</ul>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">secrets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div 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"> hashicorp_vault</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">secret/my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">app</span><br></div><div class="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_secrets</span><br></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">hashicorp_vault_addr</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">//vault.example.com</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">hashicorp_vault_auth_method</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> approle</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">hashicorp_vault_role_id</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">env</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">VAULT_ROLE_ID</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">hashicorp_vault_secret_id</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">vault_secret_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></div></code></pre></div></div>
<p><strong>Azure Key Vault</strong> (<code>azure_keyvault</code>):</p>
<ul>
<li class="">Per-key caching with single-flight fetch coalescing.</li>
<li class="">Auth methods: service principal, managed identity, workload identity, Azure CLI, or auto-detect.</li>
<li class="">Supports sovereign clouds via <code>endpoint</code> parameter.</li>
</ul>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">secrets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div 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"> azure_keyvault</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">vault</span><br></div><div class="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_secrets</span><br></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">azure_keyvault_auth_method</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> managed_identity</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-vector-engine">DuckDB Vector Engine<a href="https://spiceai.org/releases/v2.0-rc.4#duckdb-vector-engine" class="hash-link" aria-label="Direct link to DuckDB Vector Engine" title="Direct link to DuckDB Vector Engine" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/components/data-accelerators/duckdb" target="_blank" rel="noopener noreferrer" class="">DuckDB</a>-accelerated tables can now use DuckDB's HNSW index for vector search via the <code>vector_engine: duckdb</code> option, enabling fast approximate nearest-neighbor search without an external vector store.</p>
<p>Example configuration:</p>
<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"><div 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></div><div 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">public.documents</span><br></div><div class="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"> documents</span><br></div><div class="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></div><div 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"> content</span><br></div><div class="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></div><div 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"> hf_minilm</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">            </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">row_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> id</span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></div><div class="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></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_distance_metric</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cosine</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_hnsw_m</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%)">16</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_hnsw_ef_construction</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%)">64</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_hnsw_ef_search</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%)">32</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="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></div><div 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"> huggingface</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">huggingface.co/minishlab/potion</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">base</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">2M</span><br></div><div class="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"> hf_minilm</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="new-and-promoted-connectors">New and Promoted Connectors<a href="https://spiceai.org/releases/v2.0-rc.4#new-and-promoted-connectors" class="hash-link" aria-label="Direct link to New and Promoted Connectors" title="Direct link to New and Promoted Connectors" translate="no">​</a></h3>
<p><strong>Azure Cosmos DB (Alpha)</strong>:</p>
<p>A new read-only <a href="https://spiceai.org/docs/components/data-connectors/cosmosdb" target="_blank" rel="noopener noreferrer" class="">Azure Cosmos DB</a> NoSQL / Core SQL API connector built on the <code>azure_data_cosmos</code> 0.30 SDK. Supports cross-partition scans, schema inference from document samples, and key-based auth (connection string or account endpoint + key).</p>
<p><strong>Git Connector (RC)</strong>:</p>
<p>The <a href="https://spiceai.org/docs/components/data-connectors/git" target="_blank" rel="noopener noreferrer" class="">Git</a> data connector is promoted to RC status with HTTPS/SSH auth (<code>git_token</code>, <code>git_username</code>/<code>git_password</code>, <code>git_ssh_key</code>), Git LFS support (<code>enable_lfs</code>), and per-repo connection resilience (semaphore, bounded retries with exponential backoff, permanent-error circuit breaking).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-write-support-dml">DynamoDB Write Support (DML)<a href="https://spiceai.org/releases/v2.0-rc.4#dynamodb-write-support-dml" class="hash-link" aria-label="Direct link to DynamoDB Write Support (DML)" title="Direct link to DynamoDB Write Support (DML)" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/components/data-connectors/dynamodb" target="_blank" rel="noopener noreferrer" class="">DynamoDB</a> datasets now support write-back via <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code> operations, complementing the existing read and CDC streaming capabilities.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="mcp-streamable-http-transport">MCP Streamable HTTP Transport<a href="https://spiceai.org/releases/v2.0-rc.4#mcp-streamable-http-transport" class="hash-link" aria-label="Direct link to MCP Streamable HTTP Transport" title="Direct link to MCP Streamable HTTP Transport" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/features/large-language-models/mcp" target="_blank" rel="noopener noreferrer" class="">MCP server</a> has been upgraded to <a href="https://crates.io/crates/rmcp" target="_blank" rel="noopener noreferrer" class="">rmcp 1.5.0</a> and switched to the Streamable HTTP transport (<code>/v1/mcp</code>), replacing the previous SSE-based endpoint. The client-side transport is updated to <code>StreamableHttpClientTransport</code>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security-improvements">Security Improvements<a href="https://spiceai.org/releases/v2.0-rc.4#security-improvements" class="hash-link" aria-label="Direct link to Security Improvements" title="Direct link to Security Improvements" translate="no">​</a></h3>
<p><strong>Read-only API Key Enforcement</strong>: <a href="https://spiceai.org/docs/api/auth" target="_blank" rel="noopener noreferrer" class="">API keys</a> with read-only scope are now strictly enforced on the Flight <code>DoGet</code> path and on async query endpoints, preventing write operations from being issued under a read-only key.</p>
<p><strong>GitHub Workflow Hardening</strong>: CI workflows have been hardened with improved security posture to reduce supply-chain risk.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="developer-experience-improvements">Developer Experience Improvements<a href="https://spiceai.org/releases/v2.0-rc.4#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>
<ul>
<li class=""><strong>Actionable Config Errors</strong>: Parameter typos, missing secret references, and unknown engine names now produce specific, actionable error messages with Levenshtein-based suggestions, rather than silent drops or generic "missing required parameter" messages.</li>
<li class=""><strong><code>spice init</code> Improvements</strong>: Written spicepods now include a <code>yaml-language-server: $schema=...</code> directive for IDE completions. Creation messages print regardless of log level.</li>
<li class=""><strong>REPL Improvements</strong>: Log filter honors <code>RUST_LOG</code> when <code>-v</code> is not passed; version banner moves to stderr and prints only on an interactive TTY.</li>
<li class=""><strong>403 / 401 Routing</strong>: HTTP 403 responses route to a new <code>PermissionDenied</code> variant; 401 messages point at <code>spice login</code> / <code>SPICE_API_KEY</code>.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="opentelemetry-improvements">OpenTelemetry Improvements<a href="https://spiceai.org/releases/v2.0-rc.4#opentelemetry-improvements" class="hash-link" aria-label="Direct link to OpenTelemetry Improvements" title="Direct link to OpenTelemetry Improvements" translate="no">​</a></h3>
<p>See <a href="https://spiceai.org/docs/features/observability" target="_blank" rel="noopener noreferrer" class="">Observability &amp; Monitoring</a> and the <a href="https://spiceai.org/docs/reference/spicepod/runtime#runtimetelemetry" target="_blank" rel="noopener noreferrer" class=""><code>runtime.telemetry</code></a> reference for full configuration details.</p>
<ul>
<li class=""><strong>Metric Name Prefix</strong>: Configure a prefix for all exported OTLP metric names via <code>runtime.telemetry.metric_prefix</code>.</li>
<li class=""><strong>Delta Temporality Default</strong>: The OTLP push exporter now defaults to delta temporality, matching Prometheus and most backends.</li>
<li class=""><strong>Resource Attributes</strong>: <code>runtime.telemetry.properties</code> are applied as OTLP resource attributes on exported metrics.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="full-text-search-performance">Full-text Search Performance<a href="https://spiceai.org/releases/v2.0-rc.4#full-text-search-performance" class="hash-link" aria-label="Direct link to Full-text Search Performance" title="Direct link to Full-text Search Performance" translate="no">​</a></h3>
<p>Tantivy full-text search ingestion performance is significantly improved with better batch handling and a rollback-on-error path.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="sql-and-query-engine">SQL and Query Engine<a href="https://spiceai.org/releases/v2.0-rc.4#sql-and-query-engine" class="hash-link" aria-label="Direct link to SQL and Query Engine" title="Direct link to SQL and Query Engine" translate="no">​</a></h3>
<ul>
<li class=""><strong>DataFusion Upgrade</strong>: Updated to a newer DataFusion revision with additional bug fixes and performance improvements.</li>
<li class=""><strong>Views on DDL Catalogs</strong>: DDL-defined catalogs (e.g., Unity Catalog) can now expose and query views.</li>
<li class=""><strong><code>flatten_json</code> / <code>json_tree</code> / <code>expand_maps</code> UDTFs</strong>: New table-valued functions for JSON transformation, map expansion, and schema decomposition in query pipelines. See <a href="https://spiceai.org/docs/reference/sql/json" target="_blank" rel="noopener noreferrer" class="">JSON Functions and Operators</a>.</li>
<li class=""><strong><code>cosine_distance</code> Pushdown to DuckDB</strong>: <code>cosine_distance</code> is now pushed down to <a href="https://spiceai.org/docs/components/data-accelerators/duckdb" target="_blank" rel="noopener noreferrer" class="">DuckDB</a> accelerators via <code>array_cosine_distance</code>.</li>
<li class=""><strong>Snowflake Type Support</strong>: Added support for <code>OBJECT</code>, <code>MAP</code>, <code>GEOGRAPHY</code>, <code>GEOMETRY</code>, <code>VECTOR</code>, and <code>TIMESTAMP_LTZ</code> types in the <a href="https://spiceai.org/docs/components/data-connectors/snowflake" target="_blank" rel="noopener noreferrer" class="">Snowflake</a> connector.</li>
<li class=""><strong>MySQL Zero-Date Behavior</strong>: The <a href="https://spiceai.org/docs/components/data-connectors/mysql" target="_blank" rel="noopener noreferrer" class="">MySQL</a> connector adds a new <code>mysql_zero_date_behavior</code> parameter (<code>null</code> or <code>error</code>) controlling how MySQL zero-date values (<code>0000-00-00</code>) are handled.</li>
<li class=""><strong>Databricks Timeouts</strong>: The <a href="https://spiceai.org/docs/components/data-connectors/databricks" target="_blank" rel="noopener noreferrer" class="">Databricks</a> connector adds new <code>connect_timeout</code> and <code>client_timeout</code> parameters for <code>sql_warehouse</code> mode.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependency-updates">Dependency Updates<a href="https://spiceai.org/releases/v2.0-rc.4#dependency-updates" class="hash-link" aria-label="Direct link to Dependency Updates" title="Direct link to Dependency Updates" translate="no">​</a></h3>
<table><thead><tr><th>Dependency / Component</th><th>Version / Update</th></tr></thead><tbody><tr><td><strong>DataFusion</strong></td><td>Updated</td></tr><tr><td><strong>rmcp</strong></td><td>v1.5.0 (from fork pin)</td></tr><tr><td><strong>mistral.rs</strong></td><td>Updated</td></tr><tr><td><strong>openssl</strong></td><td>0.10.78</td></tr></tbody></table>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.0-rc.4#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.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>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.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>
<p>No new cookbook recipes.</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.0-rc.4#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.0.0-rc.4, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade v2.0.0-rc.4</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.0-rc.4</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.0-rc.4</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.4</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.0-rc.4#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Integrate spiceio and makefile_targets into pr.yml by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10357" target="_blank" rel="noopener noreferrer" class="">#10357</a></li>
<li class="">ci: skip artifact compression for test binaries/archives by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10381" target="_blank" rel="noopener noreferrer" class="">#10381</a></li>
<li class="">chore(deps): bump spiceai/candle, spiceai/mistral.rs, aws-lc-rs, tantivy, rand by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10379" target="_blank" rel="noopener noreferrer" class="">#10379</a></li>
<li class="">Bump datafusion-table-providers (#10375) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10384" target="_blank" rel="noopener noreferrer" class="">#10384</a></li>
<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/10376" target="_blank" rel="noopener noreferrer" class="">#10376</a></li>
<li class="">v2.0.0-rc.3 preparation by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10382" target="_blank" rel="noopener noreferrer" class="">#10382</a></li>
<li class="">fix(spicepod): JSON schema accepts string or <code>{name: expr}</code> for <code>partition_by</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/10352" target="_blank" rel="noopener noreferrer" class="">#10352</a></li>
<li class="">fix: Use ROUND for Turso decimal BETWEEN comparisons (fixes #9872) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10360" target="_blank" rel="noopener noreferrer" class="">#10360</a></li>
<li class="">Revert "v2.0.0-rc.3 preparation" from trunk by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10386" target="_blank" rel="noopener noreferrer" class="">#10386</a></li>
<li class="">Add <code>on_schema_resolved</code> dataset ready state by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10368" target="_blank" rel="noopener noreferrer" class="">#10368</a></li>
<li class="">feat: Add Elasticsearch data connector with hybrid search 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/10258" target="_blank" rel="noopener noreferrer" class="">#10258</a></li>
<li class="">ci: bump test archive upload compression-level to 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/10388" target="_blank" rel="noopener noreferrer" class="">#10388</a></li>
<li class="">feat(git-connector): promote Git connector to RC status by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10385" target="_blank" rel="noopener noreferrer" class="">#10385</a></li>
<li class="">feat(postgres): stream WAL directly to Spice accelerators by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10364" target="_blank" rel="noopener noreferrer" class="">#10364</a></li>
<li class="">Add schema decomposition to the HTTP 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/10393" target="_blank" rel="noopener noreferrer" class="">#10393</a></li>
<li class="">fix(cayenne): Skip catalog refresh state reload for existing providers by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10396" target="_blank" rel="noopener noreferrer" class="">#10396</a></li>
<li class="">Make <code>cayenne-flightsql</code> tool by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10356" target="_blank" rel="noopener noreferrer" class="">#10356</a></li>
<li class="">build(deps): bump the github-actions-dependencies group with 2 updates 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/10398" target="_blank" rel="noopener noreferrer" class="">#10398</a></li>
<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/10272" target="_blank" rel="noopener noreferrer" class="">#10272</a></li>
<li class="">Merge develop to trunk — 2026-04-19 by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10407" target="_blank" rel="noopener noreferrer" class="">#10407</a></li>
<li class="">feat(otel): default OTLP push exporter to delta temporality by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10412" target="_blank" rel="noopener noreferrer" class="">#10412</a></li>
<li class="">fix: Restore analyzer rule ordering to run federation before type coercion by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10415" target="_blank" rel="noopener noreferrer" class="">#10415</a></li>
<li class="">fix: Map Utf8/LargeUtf8 to STRING in Databricks/Spark SQL dialects by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10420" target="_blank" rel="noopener noreferrer" class="">#10420</a></li>
<li class="">feat(otel): add metric name prefix at runtime.telemetry.metric_prefix by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10418" target="_blank" rel="noopener noreferrer" class="">#10418</a></li>
<li class="">fix: Map LargeUtf8 to VARCHAR in Athena ODBC dialect by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10419" target="_blank" rel="noopener noreferrer" class="">#10419</a></li>
<li class="">feat(cluster): connector-driven object store registration on 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/10414" target="_blank" rel="noopener noreferrer" class="">#10414</a></li>
<li class="">build(deps): bump ubuntu from 22.04 to 24.04 in the docker-dependencies group 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/10397" target="_blank" rel="noopener noreferrer" class="">#10397</a></li>
<li class="">fix: Update benchmark snapshots Apr 20 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/10417" target="_blank" rel="noopener noreferrer" class="">#10417</a></li>
<li class="">feat(otel): apply runtime.telemetry.properties as resource attributes on exported metrics by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10416" target="_blank" rel="noopener noreferrer" class="">#10416</a></li>
<li class="">Publish RC releases to DockerHub; upgrade runners to ubuntu-24.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/10428" target="_blank" rel="noopener noreferrer" class="">#10428</a></li>
<li class="">feat: Add Azure Cosmos DB (NoSQL) data connector (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/10392" target="_blank" rel="noopener noreferrer" class="">#10392</a></li>
<li class="">feat(datafusion): flatten_json_properties + json_tree UDTFs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10406" target="_blank" rel="noopener noreferrer" class="">#10406</a></li>
<li class="">Harden /v1/tools and /v1/nsql against unauthenticated / LLM-driven SQL by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10365" target="_blank" rel="noopener noreferrer" class="">#10365</a></li>
<li class="">feat(embeddings): multi-vector embeddings with MaxSim + late-interaction by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10408" target="_blank" rel="noopener noreferrer" class="">#10408</a></li>
<li class="">Update GH runners for CUDA builds by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10432" target="_blank" rel="noopener noreferrer" class="">#10432</a></li>
<li class="">fix(delta_lake): register object stores on 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/10436" target="_blank" rel="noopener noreferrer" class="">#10436</a></li>
<li class="">DF-native DML by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10327" target="_blank" rel="noopener noreferrer" class="">#10327</a></li>
<li class="">ci: run Build and Test on spiceai-macos; split install jobs by profile by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10434" target="_blank" rel="noopener noreferrer" class="">#10434</a></li>
<li class="">Improve search UDTFs: text_search, vector_search, rrf by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10387" target="_blank" rel="noopener noreferrer" class="">#10387</a></li>
<li class="">fix(model2vec): Improve robustness of model loading for sentence-transformers layouts by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10444" target="_blank" rel="noopener noreferrer" class="">#10444</a></li>
<li class="">Merge develop to trunk — 2026-04-21 by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10448" target="_blank" rel="noopener noreferrer" class="">#10448</a></li>
<li class="">Enable filter pushdown for <code>vector_search</code> UDTF by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10447" target="_blank" rel="noopener noreferrer" class="">#10447</a></li>
<li class="">Support Snowflake OBJECT, MAP, GEOGRAPHY, GEOMETRY, VECTOR, TIMESTAMP_LTZ types by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10451" target="_blank" rel="noopener noreferrer" class="">#10451</a></li>
<li class="">Fix Databricks 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/10449" target="_blank" rel="noopener noreferrer" class="">#10449</a></li>
<li class="">fix(cluster): forward register_object_stores through connector wrappers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10460" target="_blank" rel="noopener noreferrer" class="">#10460</a></li>
<li class="">Fixes for vector-search by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10455" target="_blank" rel="noopener noreferrer" class="">#10455</a></li>
<li class="">Add expand_maps option and flatten_json UDTF by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10452" target="_blank" rel="noopener noreferrer" class="">#10452</a></li>
<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/10458" target="_blank" rel="noopener noreferrer" class="">#10458</a></li>
<li class="">Fix physical codec decode ambiguity for empty protobuf messages by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10466" target="_blank" rel="noopener noreferrer" class="">#10466</a></li>
<li class="">chore(logging): demote s3_single_file_cached skip refresh log to debug by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10467" target="_blank" rel="noopener noreferrer" class="">#10467</a></li>
<li class="">Enable filter pushdown for <code>rrf</code> UDTF by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10465" target="_blank" rel="noopener noreferrer" class="">#10465</a></li>
<li class="">feat(cluster): consolidate distributed state into cluster.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/10463" target="_blank" rel="noopener noreferrer" class="">#10463</a></li>
<li class="">feat(cayenne): Add column statistics and data inlining by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10314" target="_blank" rel="noopener noreferrer" class="">#10314</a></li>
<li class="">docs(copilot): flag missing wrapper delegation when adding default trait methods by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10461" target="_blank" rel="noopener noreferrer" class="">#10461</a></li>
<li class="">Wire Elasticsearch vector engine write path through 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/10453" target="_blank" rel="noopener noreferrer" class="">#10453</a></li>
<li class="">Add helm lint CI by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10468" target="_blank" rel="noopener noreferrer" class="">#10468</a></li>
<li class="">Fix Azure and GCS acceleration snapshot object store credential 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/10486" target="_blank" rel="noopener noreferrer" class="">#10486</a></li>
<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/10485" target="_blank" rel="noopener noreferrer" class="">#10485</a></li>
<li class="">fix(secrets): harden AWS Secrets Manager secret store by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10478" target="_blank" rel="noopener noreferrer" class="">#10478</a></li>
<li class="">Update <code>datafusion-ballista</code> crate by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10488" target="_blank" rel="noopener noreferrer" class="">#10488</a></li>
<li class="">feat(secrets): add ParameterSpec and more params for AWS secrets manager by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10487" target="_blank" rel="noopener noreferrer" class="">#10487</a></li>
<li class="">Add rerank UDTF for hybrid search with query auto-propagation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10469" target="_blank" rel="noopener noreferrer" class="">#10469</a></li>
<li class="">Fix flatten_json_properties by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10475" target="_blank" rel="noopener noreferrer" class="">#10475</a></li>
<li class="">fix: preserve field and schema metadata in expand_views_schema by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10494" target="_blank" rel="noopener noreferrer" class="">#10494</a></li>
<li class="">Upgrade rmcp to upstream 1.5.0; switch MCP server to Streamable HTTP by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10491" target="_blank" rel="noopener noreferrer" class="">#10491</a></li>
<li class="">fix: handle Snowflake TIMESTAMP_LTZ wire format and prevent nanosecond overflow by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10493" target="_blank" rel="noopener noreferrer" class="">#10493</a></li>
<li class="">Lint parity in Makefile by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10492" target="_blank" rel="noopener noreferrer" class="">#10492</a></li>
<li class="">Add connect_timeout/client_timeout params to Databricks sql_warehouse 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/10495" target="_blank" rel="noopener noreferrer" class="">#10495</a></li>
<li class="">fix(tracing): suppress opentelemetry INFO logs at all verbosity levels by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10497" target="_blank" rel="noopener noreferrer" class="">#10497</a></li>
<li class="">DynamoDB DML by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10470" target="_blank" rel="noopener noreferrer" class="">#10470</a></li>
<li class="">feat(cayenne): native vector search via SIMD similarity UDFs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10456" target="_blank" rel="noopener noreferrer" class="">#10456</a></li>
<li class="">fix(cli): suppress banner for all JSON-producing cloud subcommands (fixes #10498) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10510" target="_blank" rel="noopener noreferrer" class="">#10510</a></li>
<li class="">fix(deps): bump openssl to 0.10.78 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10509" target="_blank" rel="noopener noreferrer" class="">#10509</a></li>
<li class="">fix(s3): quiet AWS SDK credential probe when no region is configured by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10506" target="_blank" rel="noopener noreferrer" class="">#10506</a></li>
<li class="">fix(cdc): emit ready signal on caught-up Kafka/Debezium streams (#5201) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10504" target="_blank" rel="noopener noreferrer" class="">#10504</a></li>
<li class=""><code>runtime-cluster</code> crate + Run partition discovery before forwarding refresh to executors by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10490" target="_blank" rel="noopener noreferrer" class="">#10490</a></li>
<li class="">Update lint-rust target to use <code>--keep-going</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/10508" target="_blank" rel="noopener noreferrer" class="">#10508</a></li>
<li class="">Add TPC-H SF100 s3[parquet]-duckdb[file] benchmark spicepod by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10524" target="_blank" rel="noopener noreferrer" class="">#10524</a></li>
<li class="">Remove dev-profile install steps from pr.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/10507" target="_blank" rel="noopener noreferrer" class="">#10507</a></li>
<li class="">fix: add missing NULL check on Timestamp path in append refresh by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10518" target="_blank" rel="noopener noreferrer" class="">#10518</a></li>
<li class="">fix: return error on Decimal128/256 overflow instead of silently dropping scale by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10519" target="_blank" rel="noopener noreferrer" class="">#10519</a></li>
<li class="">fix: delegate update and delete_from in IndexedTableProvider and EmbeddingTable by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10520" target="_blank" rel="noopener noreferrer" class="">#10520</a></li>
<li class="">feat(devx): make config errors, CLI, and REPL lead users to success by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10489" target="_blank" rel="noopener noreferrer" class="">#10489</a></li>
<li class="">fix(rerank): defer execution to RerankExec, enable filters and projection 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/10514" target="_blank" rel="noopener noreferrer" class="">#10514</a></li>
<li class="">fix(llms): support Gemma models with missing attention_bias config field by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10523" target="_blank" rel="noopener noreferrer" class="">#10523</a></li>
<li class="">Fix vector_search silently ignoring named limit/column/include_score args by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10527" target="_blank" rel="noopener noreferrer" class="">#10527</a></li>
<li class="">fix: split unsupported filters locally in scan() for UseSource mode by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10528" target="_blank" rel="noopener noreferrer" class="">#10528</a></li>
<li class="">feat(secrets): add Azure Key Vault secret store by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10496" target="_blank" rel="noopener noreferrer" class="">#10496</a></li>
<li class="">Bump mistralrs by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10532" target="_blank" rel="noopener noreferrer" class="">#10532</a></li>
<li class="">Fix benchmark configurations and CI build issues by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10535" target="_blank" rel="noopener noreferrer" class="">#10535</a></li>
<li class="">Fix catalog query overrides for MySQL and MSSQL 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/10543" target="_blank" rel="noopener noreferrer" class="">#10543</a></li>
<li class="">For Cayenne, preserve matched columns for <code>MERGE ... ON &lt;cols&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/10340" target="_blank" rel="noopener noreferrer" class="">#10340</a></li>
<li class="">build(deps): bump the aws-sdk group across 1 directory with 5 updates 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/10538" target="_blank" rel="noopener noreferrer" class="">#10538</a></li>
<li class="">docs: update AI agent instructions (git workflow + Rust 1.94) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10544" target="_blank" rel="noopener noreferrer" class="">#10544</a></li>
<li class="">fix: Update tpch 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/10529" target="_blank" rel="noopener noreferrer" class="">#10529</a></li>
<li class="">fix: Update tpch benchmark snapshots for accelerated/s3[parquet]-duckdb[file].yaml 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/10525" target="_blank" rel="noopener noreferrer" class="">#10525</a></li>
<li class="">Extract <code>runtime-datafusion</code> from <code>runtime</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/10545" target="_blank" rel="noopener noreferrer" class="">#10545</a></li>
<li class="">Use generic DML extension planner for Cayenne by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10437" target="_blank" rel="noopener noreferrer" class="">#10437</a></li>
<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/10552" target="_blank" rel="noopener noreferrer" class="">#10552</a></li>
<li class="">Fix security and correctness audit issues by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10526" target="_blank" rel="noopener noreferrer" class="">#10526</a></li>
<li class="">fix(MySQL): revert MySQL result column reorder to fix federated query failures by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10557" target="_blank" rel="noopener noreferrer" class="">#10557</a></li>
<li class="">Fix <code>protoc</code> installation by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10566" target="_blank" rel="noopener noreferrer" class="">#10566</a></li>
<li class="">fix: Disable Ballista dynamic filters on HashJoinExec by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10548" target="_blank" rel="noopener noreferrer" class="">#10548</a></li>
<li class="">Support views on DDL catalogs by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10554" target="_blank" rel="noopener noreferrer" class="">#10554</a></li>
<li class="">Update datafusion by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10422" target="_blank" rel="noopener noreferrer" class="">#10422</a></li>
<li class="">Improve full-text search indexing 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/10464" target="_blank" rel="noopener noreferrer" class="">#10464</a></li>
<li class="">feat(mysql): add mysql_zero_date_behavior parameter (null|error) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10573" target="_blank" rel="noopener noreferrer" class="">#10573</a></li>
<li class="">fix(snowflake): declare <code>private_key</code> in connector PARAMETERS (fixes #10517) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10559" target="_blank" rel="noopener noreferrer" class="">#10559</a></li>
<li class="">Honour <code>CARGO_TARGET_DIR</code> in Makefiles by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10569" target="_blank" rel="noopener noreferrer" class="">#10569</a></li>
<li class="">Enable <code>cosine_distance</code> pushdown to DuckDB accelerator via <code>array_cosine_distance</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/10564" target="_blank" rel="noopener noreferrer" class="">#10564</a></li>
<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/10570" target="_blank" rel="noopener noreferrer" class="">#10570</a></li>
<li class="">fix: Update tpch 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/10560" target="_blank" rel="noopener noreferrer" class="">#10560</a></li>
<li class="">feat(snapshots): make snapshots an optional feature by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10574" target="_blank" rel="noopener noreferrer" class="">#10574</a></li>
<li class="">Enforce read-only API key restrictions on Flight DoGet and async query paths by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10551" target="_blank" rel="noopener noreferrer" class="">#10551</a></li>
<li class="">Improved security posture on Github workflows by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10556" target="_blank" rel="noopener noreferrer" class="">#10556</a></li>
<li class="">fix: Update datafusion-table-providers to improve SqlTable filter 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/10595" target="_blank" rel="noopener noreferrer" class="">#10595</a></li>
<li class="">feat(secrets): add HashiCorp Vault secret store by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/10561" target="_blank" rel="noopener noreferrer" class="">#10561</a></li>
<li class="">fix: delegate update() in UpsertDedupTableProvider to inner provider by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10593" target="_blank" rel="noopener noreferrer" class="">#10593</a></li>
<li class="">Add DuckDB vector engine 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/10562" target="_blank" rel="noopener noreferrer" class="">#10562</a></li>
<li class="">Sharepoint - add object-store listing connector with expanded auth and write 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/10473" target="_blank" rel="noopener noreferrer" class="">#10473</a></li>
<li class="">fix: Install protoc from source by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10597" target="_blank" rel="noopener noreferrer" class="">#10597</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.0.0-rc.3...v2.0.0-rc.4" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.0.0-rc.3...v2.0.0-rc.4</a></p>]]></content:encoded>
            <category>release</category>
            <category>elasticsearch</category>
            <category>data-connector</category>
            <category>postgres</category>
            <category>search</category>
            <category>Embedding</category>
            <category>duckdb</category>
            <category>azure</category>
            <category>mcp</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0-rc.3 (Apr 21, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0-rc.3</link>
            <guid>https://spiceai.org/releases/v2.0-rc.3</guid>
            <pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v2.0-rc.3! ⚡]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v2.0-rc.3! ⚡</p>
<p>v2.0.0-rc.3 is the third release candidate for advanced testing of v2.0, building on <a href="https://github.com/spiceai/spiceai/releases/tag/v2.0.0-rc.2" target="_blank" rel="noopener noreferrer" class="">v2.0.0-rc.2</a>.</p>
<p>Highlights in this release candidate include:</p>
<ul>
<li class=""><strong>HTTP Connector Enhancements</strong> with OAuth2 refresh-token authentication, query-parameter pagination, and map-to-array conversion for broader API compatibility</li>
<li class=""><strong>Databricks and Unity Catalog Reliability Improvements</strong> with resilience controls, improved UC-awareness, permission checks, and structured error reporting</li>
<li class=""><strong>Snowflake and ADBC Registration Performance Improvements</strong> with better observability during dataset registration</li>
<li class=""><strong>OpenTelemetry Exporter Improvements</strong> with exporter fixes and support for authenticated metrics export</li>
<li class=""><strong>Kafka, GitHub, and HTTP Connector Fixes</strong> including Kafka reliability improvements, GitHub GraphQL resilience updates, and HTTP JSON union/reload fixes</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v200-rc3">What's New in v2.0.0-rc.3<a href="https://spiceai.org/releases/v2.0-rc.3#whats-new-in-v200-rc3" class="hash-link" aria-label="Direct link to What's New in v2.0.0-rc.3" title="Direct link to What's New in v2.0.0-rc.3" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="http-connector-enhancements">HTTP Connector Enhancements<a href="https://spiceai.org/releases/v2.0-rc.3#http-connector-enhancements" class="hash-link" aria-label="Direct link to HTTP Connector Enhancements" title="Direct link to HTTP Connector Enhancements" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/data-connectors/https" target="_blank" rel="noopener noreferrer" class="">HTTP connector</a> now supports more authentication and API response patterns, making it easier to integrate with modern REST APIs.</p>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>OAuth2 Refresh-Token Authentication</strong>: Added support for <a href="https://spiceai.org/docs/next/components/data-connectors/https#using-oauth2-refresh-token-authentication" target="_blank" rel="noopener noreferrer" class="">OAuth2 refresh-token flows</a> for APIs that issue short-lived access tokens.</li>
<li class=""><strong>Query-Parameter Pagination</strong>: Added pagination support using query parameters for APIs that expose page or cursor controls in the URL.</li>
<li class=""><strong>Map-to-Array Conversion</strong>: Added response transformation support for APIs that return map-shaped payloads that need to be normalized into arrays.</li>
<li class=""><strong>Improved JSON Union Handling</strong>: Better handling for heterogeneous JSON payloads during ingestion.</li>
<li class=""><strong>More Reliable Reloads</strong>: Fixed runtime behavior for HTTP-backed datasets during spicepod reloads.</li>
</ul>
<p>Example configuration of an HTTP connector using the <a href="https://spiceai.org/docs/next/components/data-connectors/https#using-oauth2-refresh-token-authentication" target="_blank" rel="noopener noreferrer" class="">OAuth2 refresh token flow</a>:</p>
<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"><div 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></div><div 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></div><div class="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"> secure_data</span><br></div><div class="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></div><div class="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></div><div class="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"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/v1/**'</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">auth_token_url</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">//auth.example.com/oauth/token</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">http_auth_refresh_token</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">my_refresh_token</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">http_auth_client_id</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">my_client_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">http_auth_client_secret</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">my_client_secret</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">auth_scopes</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%)">'read:data offline_access'</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="databricks-and-unity-catalog-reliability-improvements">Databricks and Unity Catalog Reliability Improvements<a href="https://spiceai.org/releases/v2.0-rc.3#databricks-and-unity-catalog-reliability-improvements" class="hash-link" aria-label="Direct link to Databricks and Unity Catalog Reliability Improvements" title="Direct link to Databricks and Unity Catalog Reliability Improvements" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/components/data-connectors/databricks" target="_blank" rel="noopener noreferrer" class="">Databricks</a> and <a href="https://spiceai.org/docs/components/catalogs/unity-catalog" target="_blank" rel="noopener noreferrer" class="">Unity Catalog</a> integrations are now more resilient and provide clearer behavior in permission-constrained environments.</p>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>Resilience Controls</strong>: Added controls to improve reliability when interacting with Databricks services.</li>
<li class=""><strong>Unity Catalog Awareness</strong>: Improved handling for Unity Catalog-specific behaviors and mixed deployment configurations.</li>
<li class=""><strong>Permission Prechecks</strong>: Databricks UC permission checks now distinguish explicit denials from ambiguous cases.</li>
<li class=""><strong>Structured Error Reporting</strong>: Advisory permission failures now surface with more actionable structured errors.</li>
<li class=""><strong>Classic SQL Warehouse Compatibility</strong>: Improved handling for foreign table scenarios with Classic SQL Warehouse combinations.</li>
<li class=""><strong>Task History Instrumentation</strong>: Added instrumentation to improve observability for Databricks-related operations.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="snowflake-and-adbc-improvements">Snowflake and ADBC Improvements<a href="https://spiceai.org/releases/v2.0-rc.3#snowflake-and-adbc-improvements" class="hash-link" aria-label="Direct link to Snowflake and ADBC Improvements" title="Direct link to Snowflake and ADBC Improvements" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/components/data-connectors/snowflake" target="_blank" rel="noopener noreferrer" class="">Snowflake</a> and <a href="https://spiceai.org/docs/components/data-connectors/flightsql" target="_blank" rel="noopener noreferrer" class="">ADBC</a>-backed dataset registration is now faster and easier to observe.</p>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>Faster Dataset Registration</strong>: Improved registration performance for Snowflake and ADBC datasets.</li>
<li class=""><strong>Better Observability</strong>: Added better instrumentation and visibility into registration workflows.</li>
<li class=""><strong>ADBC Alignment</strong>: Updated ADBC dependencies and integration points for improved compatibility.</li>
<li class=""><strong>Search Schema Fix</strong>: Fixed a full-text search schema mismatch issue with the ADBC connector.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="opentelemetry-and-observability-improvements">OpenTelemetry and Observability Improvements<a href="https://spiceai.org/releases/v2.0-rc.3#opentelemetry-and-observability-improvements" class="hash-link" aria-label="Direct link to OpenTelemetry and Observability Improvements" title="Direct link to OpenTelemetry and Observability Improvements" translate="no">​</a></h3>
<p>Spice improves telemetry export reliability and authenticated metrics delivery for the <a href="https://spiceai.org/docs/features/observability" target="_blank" rel="noopener noreferrer" class="">OpenTelemetry</a> integration.</p>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>OTEL Exporter Fixes</strong>: Fixed issues in the OpenTelemetry exporter.</li>
<li class=""><strong>Authenticated Metrics Export</strong>: Added support for authorization headers in the OTEL metrics exporter.</li>
<li class=""><strong>Reduced Startup Noise</strong>: Suppressed unnecessary AWS SDK noise and improved OTEL-related initialization behavior.</li>
<li class=""><strong>Connector Initialization Reliability</strong>: Fixed issues that could block connector initialization in telemetry-related code paths.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependency-and-toolchain-updates">Dependency and Toolchain Updates<a href="https://spiceai.org/releases/v2.0-rc.3#dependency-and-toolchain-updates" class="hash-link" aria-label="Direct link to Dependency and Toolchain Updates" title="Direct link to Dependency and Toolchain Updates" translate="no">​</a></h3>
<table><thead><tr><th>Dependency / Component</th><th>Version / Update</th></tr></thead><tbody><tr><td><strong>Rust toolchain</strong></td><td>v1.94.1 (from v1.93.1)</td></tr><tr><td><strong>DataFusion</strong></td><td>v52.5.0-rc1</td></tr><tr><td><strong>mistral.rs / candle</strong></td><td><code>mistral.rs</code> v0.8.x, <code>candle</code> v0.10.1</td></tr><tr><td><strong>ADBC Core</strong></td><td>v0.23</td></tr></tbody></table>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="other-improvements">Other Improvements<a href="https://spiceai.org/releases/v2.0-rc.3#other-improvements" class="hash-link" aria-label="Direct link to Other Improvements" title="Direct link to Other Improvements" translate="no">​</a></h3>
<ul>
<li class=""><strong>Improved Query Pushdown</strong>: Expanded sort and limit pushdown, including improved pushdown behavior for <a href="https://spiceai.org/docs/components/data-connectors/oracle" target="_blank" rel="noopener noreferrer" class="">Oracle</a> and <a href="https://spiceai.org/docs/components/data-connectors/mssql" target="_blank" rel="noopener noreferrer" class="">MSSQL</a> connectors.</li>
<li class=""><strong>Partitioned Query Planning Improvements</strong>: Improved <code>PartitionedTableScanRewrite</code> handling for <code>ORDER BY</code>, partition expressions, and fully qualified table references, while preventing incorrect bucketing partition pushdown to executors.</li>
<li class=""><strong>MongoDB SRV Support</strong>: Upgraded <code>datafusion-table-providers</code> with <a href="https://spiceai.org/docs/components/data-connectors/mongodb" target="_blank" rel="noopener noreferrer" class="">MongoDB</a> SRV support.</li>
<li class=""><strong>Tantivy Logging</strong>: <a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search</a> logging now defaults to <code>warn</code> unless very verbose logging is enabled.</li>
<li class=""><strong>Kafka Connector Fixes</strong>: Improved reliability for the <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka</a> connector behavior.</li>
<li class=""><strong>GitHub Connector Resilience</strong>: Improved commit fetching for dynamic and slash refs, and reduced GraphQL page sizes on gateway errors for the <a href="https://spiceai.org/docs/components/data-connectors/github" target="_blank" rel="noopener noreferrer" class="">GitHub</a> connector.</li>
<li class=""><strong>GitHub API Efficiency</strong>: Lowered default comment fetch sizes to reduce pressure on <a href="https://spiceai.org/docs/components/data-connectors/github" target="_blank" rel="noopener noreferrer" class="">GitHub</a> GraphQL APIs.</li>
<li class=""><strong>Embedding Validation</strong>: Added validation for <a href="https://spiceai.org/docs/components/embeddings" target="_blank" rel="noopener noreferrer" class="">embedding</a> <code>row_id</code> columns during dataset initialization.</li>
<li class=""><strong>View Cache Invalidation</strong>: Cached plans are now cleared when <a href="https://spiceai.org/docs/reference/spicepod/views" target="_blank" rel="noopener noreferrer" class="">views</a> are updated.</li>
<li class=""><strong>Refresh SQL Dedup Fix</strong>: Fixed append <a href="https://spiceai.org/docs/features/data-acceleration/data-refresh" target="_blank" rel="noopener noreferrer" class="">refresh</a> deduplication when <code>refresh_sql</code> selects a subset of columns.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/releases/v2.0-rc.3#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/releases/v2.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>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/releases/v2.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>
<p>No new cookbook recipes.</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/releases/v2.0-rc.3#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v2.0.0-rc.3, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade v2.0.0-rc.3</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.0-rc.3</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.0-rc.3</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.3</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/releases/v2.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>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/releases/v2.0-rc.3#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">fix: Full Text Search schema mismatch with 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/10235" target="_blank" rel="noopener noreferrer" class="">#10235</a></li>
<li class="">docs: Update v2.0.0-rc.2 release notes with latest 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/10238" target="_blank" rel="noopener noreferrer" class="">#10238</a></li>
<li class="">Fix append refresh dedup failure when refresh_sql selects column subset by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10225" target="_blank" rel="noopener noreferrer" class="">#10225</a></li>
<li class="">Revert "Properly mark dataset as Ready on Scheduler (#10215)" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10242" target="_blank" rel="noopener noreferrer" class="">#10242</a></li>
<li class="">Fix failing merge conflicts 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/10247" target="_blank" rel="noopener noreferrer" class="">#10247</a></li>
<li class="">fix(github): fetch commits for dynamic and slash refs by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10233" target="_blank" rel="noopener noreferrer" class="">#10233</a></li>
<li class="">Upgrade DataFusion to v52.5.0-rc1 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10249" target="_blank" rel="noopener noreferrer" class="">#10249</a></li>
<li class="">Merge develop to trunk (2026-04-09) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10248" target="_blank" rel="noopener noreferrer" class="">#10248</a></li>
<li class="">fix: Validate embedding row_id columns during dataset init (fixes #8226) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10208" target="_blank" rel="noopener noreferrer" class="">#10208</a></li>
<li class="">fix: Update tpch benchmark snapshots for federated/glue[csv].yaml 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/10244" target="_blank" rel="noopener noreferrer" class="">#10244</a></li>
<li class="">feat(databricks): add resilience controls, UC awareness, and task history instrumentation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10246" target="_blank" rel="noopener noreferrer" class="">#10246</a></li>
<li class="">fix: Make PartitionManager resilient to bare vs fully qualified table references by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10257" target="_blank" rel="noopener noreferrer" class="">#10257</a></li>
<li class="">fix: Update tpch benchmark snapshots for accelerated/s3[parquet]-cayenne[file].yaml 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/10256" target="_blank" rel="noopener noreferrer" class="">#10256</a></li>
<li class="">Merge develop to trunk (2026-04-10) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10251" target="_blank" rel="noopener noreferrer" class="">#10251</a></li>
<li class="">Improve Snowflake/ADBC dataset registration performance and observability by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10266" target="_blank" rel="noopener noreferrer" class="">#10266</a></li>
<li class="">Fixes for kafka 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/10263" target="_blank" rel="noopener noreferrer" class="">#10263</a></li>
<li class="">fix(runtime): gate otel code tags, suppress aws sdk noise, and unblock connector init by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10260" target="_blank" rel="noopener noreferrer" class="">#10260</a></li>
<li class="">fix(runtime): avoid regionless AWS SDK loads by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10271" target="_blank" rel="noopener noreferrer" class="">#10271</a></li>
<li class="">Add versioned release install workflow 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/10276" target="_blank" rel="noopener noreferrer" class="">#10276</a></li>
<li class="">fix(runtime): handle HTTP JSON unions and spicepod reloads by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10277" target="_blank" rel="noopener noreferrer" class="">#10277</a></li>
<li class="">Databricks UC permission prechecks: explicit denial as permanent error, ambiguous cases advisory by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10274" target="_blank" rel="noopener noreferrer" class="">#10274</a></li>
<li class="">Revert component status changes re-introduced by develop merge (#10248) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10293" target="_blank" rel="noopener noreferrer" class="">#10293</a></li>
<li class="">Fix broken CI workflows by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10294" target="_blank" rel="noopener noreferrer" class="">#10294</a></li>
<li class="">Group dependabot updates by ecosystem by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10296" target="_blank" rel="noopener noreferrer" class="">#10296</a></li>
<li class="">fix(tests): Replace flaky S3 Vectors snapshot tests with structural 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/10301" target="_blank" rel="noopener noreferrer" class="">#10301</a></li>
<li class="">Update test_github_workflows snapshot by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10304" target="_blank" rel="noopener noreferrer" class="">#10304</a></li>
<li class="">fix(ci): fix Bedrock runner mismatch and snapshot auto-merge failure by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10306" target="_blank" rel="noopener noreferrer" class="">#10306</a></li>
<li class="">feat(http): Add map-to-array conversion and query-parameter pagination by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10295" target="_blank" rel="noopener noreferrer" class="">#10295</a></li>
<li class="">New crate: <code>datafusion-ddl</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/10205" target="_blank" rel="noopener noreferrer" class="">#10205</a></li>
<li class="">Make Databricks UC permission checks advisory with structured error reporting by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10283" target="_blank" rel="noopener noreferrer" class="">#10283</a></li>
<li class="">build(deps): bump the github-actions-dependencies group with 4 updates 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/10298" target="_blank" rel="noopener noreferrer" class="">#10298</a></li>
<li class="">fix: Clear cached plans on view 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/10312" target="_blank" rel="noopener noreferrer" class="">#10312</a></li>
<li class="">build(deps): bump the aws-sdk group with 7 updates 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/10299" target="_blank" rel="noopener noreferrer" class="">#10299</a></li>
<li class="">Code out of runtime. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10178" target="_blank" rel="noopener noreferrer" class="">#10178</a></li>
<li class="">fix: Respect function registry denies for accelerated table 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/10311" target="_blank" rel="noopener noreferrer" class="">#10311</a></li>
<li class="">fix: Don't block heartbeat when all slots acquired by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/10322" target="_blank" rel="noopener noreferrer" class="">#10322</a></li>
<li class="">fix: strip only outer parens in <code>get_table_partition_expr_from_ctx</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/10323" target="_blank" rel="noopener noreferrer" class="">#10323</a></li>
<li class="">Upgrade datafusion-table-providers with MongoDB SRV 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/10317" target="_blank" rel="noopener noreferrer" class="">#10317</a></li>
<li class="">fix: Avoid pushing down bucketing partition expressions into 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/10324" target="_blank" rel="noopener noreferrer" class="">#10324</a></li>
<li class="">Upgrade datafusion-table-providers to d1b911a5 and bump adbc to 0.23 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10329" target="_blank" rel="noopener noreferrer" class="">#10329</a></li>
<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/10308" target="_blank" rel="noopener noreferrer" class="">#10308</a></li>
<li class="">Handle foreign table + Classic sql warehouse combination gracefully by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10318" target="_blank" rel="noopener noreferrer" class="">#10318</a></li>
<li class="">New crate <code>datafusion-flightsql</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/10201" target="_blank" rel="noopener noreferrer" class="">#10201</a></li>
<li class="">Set <code>tantivy=warn</code> unless very verbose logging by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10338" target="_blank" rel="noopener noreferrer" class="">#10338</a></li>
<li class="">Remove image registry and image name options from spidapter by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10241" target="_blank" rel="noopener noreferrer" class="">#10241</a></li>
<li class="">build(deps): bump sysinfo from 0.37.2 to 0.38.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/10291" target="_blank" rel="noopener noreferrer" class="">#10291</a></li>
<li class="">build(deps): bump futures from 0.3.31 to 0.3.32 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/10289" target="_blank" rel="noopener noreferrer" class="">#10289</a></li>
<li class="">New crate 'datafusion-dml' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/10334" target="_blank" rel="noopener noreferrer" class="">#10334</a></li>
<li class="">Jeadie/26 04 16/spice 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/10343" target="_blank" rel="noopener noreferrer" class="">#10343</a></li>
<li class="">Add Teraswitch/Pittsburgh apt mirrors + retry config for CI runners by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10349" target="_blank" rel="noopener noreferrer" class="">#10349</a></li>
<li class="">Implement sort pushdown and fix pushdown gaps across 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/10337" target="_blank" rel="noopener noreferrer" class="">#10337</a></li>
<li class="">Merge develop to trunk (2026-04-16) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10345" target="_blank" rel="noopener noreferrer" class="">#10345</a></li>
<li class="">Update candle and mistral.rs lock-step pins by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10278" target="_blank" rel="noopener noreferrer" class="">#10278</a></li>
<li class="">docs: fix status badges in README by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10350" target="_blank" rel="noopener noreferrer" class="">#10350</a></li>
<li class="">Migrate secrets to vars by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10354" target="_blank" rel="noopener noreferrer" class="">#10354</a></li>
<li class="">Add limit pushdown and improve sort pushdown for Oracle and MSSQL by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/10351" target="_blank" rel="noopener noreferrer" class="">#10351</a></li>
<li class="">Fix ubuntu mirror configuration by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10359" target="_blank" rel="noopener noreferrer" class="">#10359</a></li>
<li class="">fix: Increase throughput test default ready_wait from 30s to 300s (fixes #8207) by <a href="https://github.com/claudespice" target="_blank" rel="noopener noreferrer" class="">@claudespice</a> in <a href="https://github.com/spiceai/spiceai/pull/10344" target="_blank" rel="noopener noreferrer" class="">#10344</a></li>
<li class="">Add auth headers support to OTEL metrics exporter by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10347" target="_blank" rel="noopener noreferrer" class="">#10347</a></li>
<li class="">fix(github): shrink GraphQL page size on gateway errors; lower comment defaults by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10355" target="_blank" rel="noopener noreferrer" class="">#10355</a></li>
<li class="">Relax apt mirror substitution failure to warning in CI action by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/10361" target="_blank" rel="noopener noreferrer" class="">#10361</a></li>
<li class="">feat(http): Add OAuth2 refresh-token auth to HTTP 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/10348" target="_blank" rel="noopener noreferrer" class="">#10348</a></li>
<li class="">Upgrade Rust toolchain to 1.94.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/10353" target="_blank" rel="noopener noreferrer" class="">#10353</a></li>
<li class="">Handle order by and sort in PartitionedTableScanRewrite by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/9656" target="_blank" rel="noopener noreferrer" class="">#9656</a></li>
<li class="">Fix OTEL Exporter by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/10363" target="_blank" rel="noopener noreferrer" class="">#10363</a></li>
<li class="">Pin spiceai candle / TEI forks to merged revs; drop local [patch] overrides by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/10362" target="_blank" rel="noopener noreferrer" class="">#10362</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/spiceai/spiceai/compare/v2.0.0-rc.2...v2.0.0-rc.3" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/compare/v2.0.0-rc.2...v2.0.0-rc.3</a></p>]]></content:encoded>
            <category>release</category>
            <category>data-connector</category>
            <category>databricks</category>
            <category>snowflake</category>
            <category>adbc</category>
            <category>kafka</category>
            <category>opentelemetry</category>
            <category>Observability</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0-rc.2 (Apr 10, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0-rc.2</link>
            <guid>https://spiceai.org/releases/v2.0-rc.2</guid>
            <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v2.0-rc.2! 🔥]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v2.0-rc.2! 🔥</p>
<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>
<p>Highlights in this release candidate include:</p>
<ul>
<li class=""><strong>Distributed Spice Cayenne Query and Write Improvements</strong> with data-local query routing and partition-aware write-through</li>
<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>
<li class=""><strong>MERGE INTO for Spice Cayenne</strong> catalog tables with distributed support across executors</li>
<li class=""><strong><code>PARTITION BY</code> Support for Cayenne</strong> enabling SQL-defined partitioning in <code>CREATE TABLE</code> statements</li>
<li class=""><strong>ADBC Data Connector &amp; Catalog</strong> with full query federation, BigQuery support, and schema/table discovery</li>
<li class=""><strong>Databricks Lakehouse Federation Improvements</strong> with improved reliability, resilience, DESCRIBE TABLE fallback, and source-native type parsing</li>
<li class=""><strong>Delta Lake Column Mapping</strong> supporting Name and Id mapping modes</li>
<li class=""><strong>HTTP Pagination</strong> support for paginated API endpoints in the HTTP data connector</li>
<li class=""><strong>New Catalog Connectors</strong> for PostgreSQL, MySQL, MSSQL, and Snowflake</li>
<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>
<li class=""><strong>Per-Model Rate-Limited AI UDF Execution</strong> for controlling concurrent AI function invocations</li>
<li class="">Dependency upgrades including <strong>Turso v0.5.3</strong>, <strong>iceberg-rust v0.9</strong>, and <strong>Vortex</strong> improvements</li>
</ul>
<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>
<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>
<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>
<p><strong>Key improvements</strong>:</p>
<ul>
<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>
<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>
<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>
<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>
<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>
<li class=""><strong>Distributed <code>runtime.task_history</code></strong>: Task history is now replicated across the distributed cluster for observability.</li>
<li class=""><strong>RefreshDataset Control Stream</strong>: Dataset refresh operations are now distributed via the control stream to executors.</li>
<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>
</ul>
<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>
<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>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>MERGE INTO Support</strong>: Execute <code>MERGE INTO</code> statements against Cayenne catalog tables for combined insert/update/delete operations.</li>
<li class=""><strong>Distributed MERGE</strong>: MERGE operations are automatically distributed across executors in cluster mode.</li>
<li class=""><strong>Data Safety</strong>: Duplicate source keys are detected and prevented to avoid data loss during MERGE operations.</li>
<li class=""><strong>Chunked Delete Filters</strong>: Large MERGE delete filter lists are chunked to prevent stack overflow with Vortex IN-list expressions.</li>
</ul>
<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>
<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>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>SQL Partition Definition</strong>: Define Cayenne table partitioning directly in SQL using <code>CREATE TABLE ... PARTITION BY (...)</code>.</li>
<li class=""><strong>Partition Validation</strong>: Partition expressions are parsed and validated during DDL analysis before table creation.</li>
<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>
<li class=""><strong>Distributed DDL Support</strong>: Partition metadata is forwarded when <code>CREATE TABLE</code> is distributed to executors in cluster mode.</li>
<li class=""><strong>Improved Type Support</strong>: Partition utilities now support newer string scalar variants such as <code>Utf8View</code>.</li>
</ul>
<p>Example:</p>
<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"><div 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></div></code></pre></div></div>
<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>
<p>Spice now includes additional catalog connectors for major database systems, improving schema discovery and federation workflows across external data systems.</p>
<p><strong>Key improvements</strong>:</p>
<ul>
<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>
<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>
<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>
<li class=""><strong>PostgreSQL Partitioned Tables</strong>: Fixed schema discovery for PostgreSQL partitioned tables.</li>
</ul>
<p>Example PostgreSQL catalog configuration:</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<p>JSON ingestion is now more flexible and robust.</p>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>More JSON Formats</strong>: Added support for single-object JSON documents, auto-detected JSON formats, and Socrata SODA responses.</li>
<li class=""><strong><code>json_pointer</code> Extraction</strong>: Extract nested payloads before schema inference and reading using RFC 6901 JSON Pointer syntax.</li>
<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>
<li class=""><strong>SODA Support</strong>: Added schema extraction and data conversion for Socrata Open Data API responses.</li>
<li class=""><strong>Broader Compatibility</strong>: Improved handling for BOM-prefixed files, CRLF-delimited JSONL, nested payloads, mixed structures, and wrapped documents.</li>
</ul>
<p>Example using <code>json_pointer</code> to extract nested data from an API response:</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<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>
<p><strong>Key improvements</strong>:</p>
<ul>
<li class=""><strong>DataFusion v52.4.0</strong>: Brings the latest fixes and compatibility improvements across query planning and execution.</li>
<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>
<li class=""><strong>Federation Fix</strong>: Fixed SQL unparsing for Inexact filter pushdown with aliases.</li>
<li class=""><strong>Partial Aggregation Optimization</strong>: Improved partial aggregation performance for <code>FlightSQLExec</code>.</li>
</ul>
<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>
<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>
<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>
<ul>
<li class="">
<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>
</li>
<li class="">
<p><strong>File Update Acceleration Mode</strong>: Added <code>mode: file_update</code> acceleration mode for file-based data refresh.</p>
</li>
<li class="">
<p><strong><code>spice completions</code> Command</strong>: New CLI command for generating shell completion scripts, with auto-detection of shell directory.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<p><strong>mTLS Client Auth</strong>: Added mTLS client authentication support to the <code>spice sql</code> REPL.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<p><strong>Caching Retention</strong>: Added retention policies for cached query results.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<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>
</li>
<li class="">
<p><strong>AWS IAM Role Source</strong>: Added <code>iam_role_source</code> parameter for fine-grained AWS credential configuration.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<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>
<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"><div 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></div><div class="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></div><div class="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></div></code></pre></div></div>
</li>
<li class="">
<p><strong>S3 Parquet Performance</strong>: Improved S3 parquet read performance.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<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>
</li>
<li class="">
<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>
<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"><div 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></div><div 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></div><div class="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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">      FROM sales</span><br></div><div 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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
</li>
<li class="">
<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>
</li>
<li class="">
<p><strong>EXPLAIN ANALYZE Metrics</strong>: Added metrics for EXPLAIN ANALYZE in FlightSQLExec.</p>
</li>
<li class="">
<p><strong>Scheduler Executor Metrics</strong>: Added <code>scheduler_active_executors_count</code> metric for monitoring active executors.</p>
</li>
<li class="">
<p><strong>Query Memory Limit</strong>: Updated default query memory limit from 70% to 90%, with <code>GreedyMemoryPool</code> for improved memory management.</p>
</li>
<li class="">
<p><strong>MetastoreTransaction Support</strong>: Added transaction support to prevent concurrent metastore transaction conflicts.</p>
</li>
<li class="">
<p><strong>Iceberg REST Catalog</strong>: Coerce unsupported Arrow types to Iceberg v2 equivalents in the REST catalog API.</p>
</li>
<li class="">
<p><strong>CDC Cache Invalidation</strong>: Improved cache invalidation for CDC-backed datasets.</p>
</li>
<li class="">
<p><strong>Spice.ai Connector Alignment</strong>: Parameter names aligned across catalog and data connectors for Spice.ai Cloud.</p>
</li>
<li class="">
<p><strong>Cayenne File Size</strong>: Cayenne now correctly respects the configured target file size (defaults to 128MB).</p>
</li>
<li class="">
<p><strong>Cayenne Primary Keys</strong>: Properly set <code>primary_keys</code>/<code>on_conflict</code> for Cayenne tables.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<p><strong>Turso SQL Robustness</strong>: More robust SQL unparsing and date comparison handling for Turso.</p>
</li>
<li class="">
<p><strong>Dictionary Type Normalization</strong>: Normalize Arrow Dictionary types for DuckDB and SQLite acceleration.</p>
</li>
<li class="">
<p><strong>GitHub Connector Resilience</strong>: Improved GraphQL client resilience, performance, and ref filter handling.</p>
</li>
<li class="">
<p><strong>ODBC Fix</strong>: Fixed ODBC queries silently returning 0 rows on query failure.</p>
</li>
<li class="">
<p><strong>Anthropic Fixes</strong>: Fixed compatibility issues with Anthropic model provider.</p>
</li>
<li class="">
<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>
</li>
<li class="">
<p><strong>Shared Acceleration Snapshots</strong>: Show an error when snapshots are enabled on a shared acceleration file.</p>
</li>
<li class="">
<p><strong>Distributed Mode Error Handling</strong>: Improved error handling for distributed mode and <code>state_location</code> configuration.</p>
</li>
<li class="">
<p><strong>Helm Chart</strong>: Added support for ServiceAccount annotations and AWS IRSA example.</p>
</li>
<li class="">
<p><strong>Perplexity Removed</strong>: Removed Perplexity model provider support.</p>
</li>
<li class="">
<p><strong>Rust v1.93.1</strong>: Upgraded Rust toolchain to v1.93.1.</p>
</li>
</ul>
<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>
<ul>
<li class=""><a href="https://github.com/cluster2600" target="_blank" rel="noopener noreferrer" class="">@cluster2600</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/penberg" target="_blank" rel="noopener noreferrer" class="">@penberg</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<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>
<ul>
<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>
<li class=""><strong><code>v1/evals</code> API removed</strong>: The <code>/v1/evals</code> endpoint has been removed.</li>
<li class=""><strong>Perplexity removed</strong>: Perplexity model provider support has been removed.</li>
<li class=""><strong>Default query memory limit changed</strong>: Default query memory limit increased from 70% to 90%.</li>
</ul>
<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>
<p>To upgrade to v2.0.0-rc.2, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade v2.0.0-rc.2</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.0-rc.2</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.0-rc.2</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div 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></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</ul>
<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>]]></content:encoded>
            <category>release</category>
            <category>distributed-query</category>
            <category>cayenne</category>
            <category>datafusion</category>
            <category>delta-lake</category>
            <category>databricks</category>
            <category>adbc</category>
            <category>data-connector</category>
        </item>
        <item>
            <title><![CDATA[Spice v1.11.5 (Apr 1, 2026)]]></title>
            <link>https://spiceai.org/releases/v1.11.5</link>
            <guid>https://spiceai.org/releases/v1.11.5</guid>
            <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v1.11.5! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v1.11.5! 🛠️</p>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade v2.0.0-rc.1</span><br></div></code></pre></div></div>
<p>Running <code>spice upgrade</code> without a version will upgrade to the latest stable version, including v2.0 once released.</p>
<blockquote>
<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>
</blockquote>
<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>
<ul>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
</ul>
<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>
<p>No breaking changes.</p>
<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>
<p>No new cookbook recipes.</p>
<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>
<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>
<p>To upgrade to v1.11.5, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.11.5</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.11.5</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.11.5</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
<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>
</ul>
<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>]]></content:encoded>
            <category>release</category>
            <category>s3</category>
            <category>cayenne</category>
            <category>delta-lake</category>
            <category>PostgreSQL</category>
        </item>
        <item>
            <title><![CDATA[Spice v1.11.4 (Mar 12, 2026)]]></title>
            <link>https://spiceai.org/releases/v1.11.4</link>
            <guid>https://spiceai.org/releases/v1.11.4</guid>
            <pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v1.11.4! ⚡]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v1.11.4! ⚡</p>
<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>
<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>
<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>
<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>
<p><strong>Example configuration:</strong></p>
<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"><div 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></div><div 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></div><div class="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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">      FROM sales</span><br></div><div 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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<p>When an accelerated view is configured with <code>on_zero_results: use_source</code>, the following happens at query time:</p>
<ol>
<li class="">
<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>
</li>
<li class="">
<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>
</li>
<li class="">
<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>
<ul>
<li class="">If a referenced dataset is <strong>accelerated</strong>, the query hits that dataset's accelerated store — not the raw data source.</li>
<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>
<li class="">If a referenced dataset is <strong>federated</strong> (not accelerated), the query goes directly to the data source.</li>
</ul>
</li>
</ol>
<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>
<p><strong>Example: Multi-layer fallback</strong></p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="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></div><div 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></div><div class="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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">      FROM orders</span><br></div><div 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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<p>In this example, a query like <code>SELECT * FROM recent_orders_summary WHERE status = 'cancelled'</code> follows this path:</p>
<ol>
<li class="">Queries <code>recent_orders_summary</code> in the view's accelerated store (DuckDB/SQLite).</li>
<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>
<li class="">Since <code>orders</code> is accelerated, the query hits the <code>orders</code> accelerated store.</li>
<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>
</ol>
<!-- -->
<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>
<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>
<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>
<ul>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
</ul>
<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>
<p>No breaking changes.</p>
<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>
<p>No new cookbook recipes.</p>
<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>
<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>
<p>To upgrade to v1.11.4, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.11.4</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.11.4</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.11.4</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<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>
<ul>
<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>
<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>
</ul>
<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>]]></content:encoded>
            <category>release</category>
            <category>s3</category>
            <category>data-connector</category>
            <category>acceleration</category>
        </item>
        <item>
            <title><![CDATA[Spice v1.11.3 (Mar 9, 2026)]]></title>
            <link>https://spiceai.org/releases/v1.11.3</link>
            <guid>https://spiceai.org/releases/v1.11.3</guid>
            <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v1.11.3! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v1.11.3! 🛠️</p>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<ul>
<li class="">HTTP error responses (e.g., 5xx) are now excluded from the cache, preventing transient server errors from polluting cached results.</li>
<li class="">Added a <code>response_headers</code> column (Map type) to HTTP responses, providing access to response header metadata in query results.</li>
</ul>
<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>
<ul>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<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>
<p>No breaking changes.</p>
<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>
<p>No new cookbook recipes.</p>
<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>
<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>
<p>To upgrade to v1.11.3, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.11.3</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.11.3</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.11.3</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
</ul>
<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>]]></content:encoded>
            <category>release</category>
            <category>s3</category>
            <category>data-connector</category>
            <category>caching</category>
            <category>FlightSQL</category>
        </item>
        <item>
            <title><![CDATA[Spice v2.0-rc.1 (Mar 4, 2026)]]></title>
            <link>https://spiceai.org/releases/v2.0-rc.1</link>
            <guid>https://spiceai.org/releases/v2.0-rc.1</guid>
            <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v2.0-rc.1! 🚀]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v2.0-rc.1! 🚀</p>
<p>v2.0.0-rc.1 is the first release candidate for early testing of v2.0.</p>
<p>Highlights in this release candidate include:</p>
<ul>
<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>
<li class=""><strong>Spice Cayenne RC</strong> with staged append writes, file-based retention deletes, composite partitioning, and distributed ingestion</li>
<li class=""><strong>DataFusion v52.2.0 Upgrade</strong> with sort pushdown, a new merge join, and dynamic filters</li>
<li class=""><strong>DDL Support</strong> for <code>CREATE TABLE</code> and <code>DROP TABLE</code> via SQL for Iceberg and Cayenne catalogs</li>
<li class=""><strong>DuckLake Catalog &amp; Data Connector</strong> for lakehouse-style data management</li>
<li class=""><strong>GCS Data Connector (Alpha)</strong> for Google Cloud Storage</li>
<li class=""><strong>Rust CLI Rewrite</strong> for a unified single-binary experience</li>
<li class="">Dependency upgrades including <strong>DuckDB v1.4.4</strong>, <strong>delta_kernel v0.18.2</strong>, and <strong>mistral.rs</strong></li>
</ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<p>Distributed query supports two execution modes:</p>
<ul>
<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>
<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>
</ul>
<p><strong>Key improvements</strong>:</p>
<ul>
<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>
<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>
<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>
<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>
<li class=""><strong>Cluster Observability</strong>: New metrics and Grafana dashboard for monitoring distributed query clusters.</li>
</ul>
<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>
<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>
<ul>
<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>
<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>
<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>
<li class=""><strong>Distributed Ingestion</strong>: Cayenne catalog now supports distributed ingestion across executor nodes in cluster mode, including <code>UPDATE</code> operations.</li>
<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>
</ul>
<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>
<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>
<p><strong>Performance Improvements</strong>:</p>
<ul>
<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>
<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>
<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>
<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>
<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>
</ul>
<p><strong>Major Features</strong>:</p>
<ul>
<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>
<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>
<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>
</ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Full Feature Parity</strong>: All 27+ CLI commands re-implemented in Rust with identical behavior</li>
<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>
<li class=""><strong><code>--output=json</code> Flag</strong>: Machine-readable JSON output for CLI commands, enabling scripting and automation</li>
<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>
<li class=""><strong><code>spice cloud metrics</code></strong>: New command for Spice Cloud deployment metrics</li>
</ul>
<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>
<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>
<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>
<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>
<ul>
<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>
<li class=""><strong><code>error_message</code></strong>: A human-readable description of why the component entered an error state.</li>
</ul>
<p>These fields are only present when <code>?status=true</code> is passed and the component is in an error state.</p>
<p><strong>Example <code>/v1/datasets?status=true</code> response:</strong></p>
<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"><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div></code></pre></div></div>
<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>
<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>
<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>
<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>
<ul>
<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>
<li class=""><strong>x.ai Models</strong>: x.ai models now exclusively use the <code>/v1/responses</code> endpoint with rate limiting support.</li>
<li class=""><strong>HuggingFace Chat Templates</strong>: Added support for chat templates in HuggingFace model configurations.</li>
<li class=""><strong>Databricks SQL Dialect</strong>: Added Databricks SQL dialect for DataFusion unparser, improving federation query generation.</li>
<li class=""><strong>Snowflake</strong>: Added <code>snowflake_private_key</code> parameter for key-pair authentication.</li>
<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>
<li class=""><strong>Refresh SQL UDFs</strong>: Core scalar UDFs are now enabled in refresh SQL expressions.</li>
<li class=""><strong>FlightSQL</strong>: Fixed TLS connection handling for <code>grpc+tls://</code> endpoints with custom CA certificate support.</li>
<li class=""><strong>FlightSQL</strong>: Fixed schema consistency by expanding view types and verifying field names.</li>
<li class=""><strong>Hash Index</strong>: Fixed query correctness when hash index is used with additional filters.</li>
<li class=""><strong>Results Cache</strong>: Fixed schema preservation for empty query results.</li>
<li class=""><strong>Query Nullability</strong>: Reconciled execution stream nullability with logical plan schema.</li>
<li class=""><strong>Schema Evolution</strong>: Graceful handling of schema evolution mismatch errors during data refresh.</li>
<li class=""><strong>Internal YAML Parser</strong>: Replaced deprecated <code>serde_yaml</code> with an internal YAML implementation.</li>
</ul>
<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>
<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>
<p><strong>Version support</strong>:</p>
<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>
<p><strong>Configuration changes</strong>:</p>
<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>
<p><strong>New v2 fields</strong>:</p>
<ul>
<li class=""><code>runtime.ready_state</code> — Controls when the runtime reports ready (<code>on_load</code> default, or <code>on_registration</code>).</li>
<li class=""><code>runtime.flight.do_put_rate_limit_enabled</code> — Enable/disable FlightSQL DoPut rate limiting (default: <code>true</code>).</li>
<li class=""><code>runtime.query.spill_compression</code> — Compression for query spill files (e.g., <code>lz4_frame</code>).</li>
<li class=""><code>runtime.scheduler.partition_management</code> — Configure partition assignment interval, limits, and timeouts for distributed mode.</li>
<li class=""><code>runtime.caching.sql_results.stale_while_revalidate_ttl</code> — Serve stale cached results while revalidating in the background.</li>
<li class=""><code>runtime.caching.sql_results.encoding</code> — Cache entry compression (e.g., <code>zstd</code>).</li>
<li class=""><code>catalog.access: read_write_create</code> — New access mode for catalogs that support DDL operations.</li>
</ul>
<p><strong>Migration note</strong>: When both the deprecated v1 field and its v2 equivalent are set, the v2 field takes priority.</p>
<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>
<ul>
<li class=""><a href="https://github.com/avishafir" target="_blank" rel="noopener noreferrer" class="">@avishafir</a></li>
<li class=""><a href="https://github.com/cluster2600" target="_blank" rel="noopener noreferrer" class="">@cluster2600</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
<li class=""><strong>Caching config renamed</strong>: <code>ResultsCache</code> replaced with <code>SQLResultsCacheConfig</code> in configuration.</li>
<li class=""><strong>DuckDB parameter rename</strong>: <code>partitioned_write_flush_threshold</code> renamed to <code>partitioned_write_flush_threshold_rows</code>.</li>
<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>
<li class=""><strong>x.ai model endpoint</strong>: x.ai models now exclusively use the <code>/v1/responses</code> endpoint.</li>
<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>
</ul>
<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>
<p>New and updated <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> recipes:</p>
<ul>
<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>
<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>
</ul>
<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>
<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>
<p>To upgrade to v2.0.0-rc.1, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:2.0.0-rc.1</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:2.0.0-rc.1</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div 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></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</ul>
<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>]]></content:encoded>
            <category>release</category>
            <category>distributed-query</category>
            <category>cayenne</category>
            <category>datafusion</category>
            <category>ducklake</category>
            <category>gcp</category>
            <category>Rust</category>
            <category>data-connector</category>
        </item>
        <item>
            <title><![CDATA[Spice v1.11.1 (Feb 10, 2026)]]></title>
            <link>https://spiceai.org/releases/v1.11.1</link>
            <guid>https://spiceai.org/releases/v1.11.1</guid>
            <pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v1.11.1! 🛠️]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v1.11.1! 🛠️</p>
<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>
<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>
<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>
<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>
<ul>
<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>
<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>
<li class=""><strong>Partitioned Table Deletion</strong>: Fixed an issue where <code>DELETE</code> operations on partitioned Cayenne tables failed.</li>
<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>
</ul>
<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>
<ul>
<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>
<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>
</ul>
<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>
<ul>
<li class=""><strong>Reliability</strong>: Added retries for <code>SnapshotManager</code> operations and general snapshot reliability improvements.</li>
<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>
<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>
<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>
</ul>
<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>
<ul>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<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>
<p>No breaking changes.</p>
<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>
<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>
<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>
<p>To upgrade to v1.11.1, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.11.1</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.11.1</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.11.1</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</ul>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>data-connector</category>
            <category>dynamodb</category>
            <category>FlightSQL</category>
        </item>
        <item>
            <title><![CDATA[Spice v1.11.0 (Jan 28, 2026)]]></title>
            <link>https://spiceai.org/releases/v1.11.0</link>
            <guid>https://spiceai.org/releases/v1.11.0</guid>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Announcing the release of Spice v1.11.0-stable! ⚡]]></description>
            <content:encoded><![CDATA[<p>Announcing the release of Spice v1.11.0-stable! ⚡</p>
<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>
<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>
<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>
<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>
<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>
<p><strong>Key Enhancements</strong>:</p>
<ul>
<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>
<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>
</ul>
<p><strong>Improved Reliability</strong>:</p>
<ul>
<li class="">Resolved <code>FuturesUnordered</code> reentrant drop crashes</li>
<li class="">Fixed memory growth issues related to Vortex metrics allocation</li>
<li class="">Metadata catalog now properly respects <code>cayenne_file_path</code> location</li>
<li class="">Added warnings for unparseable configuration values</li>
</ul>
<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>
<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>
<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>
<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>
<p><strong>Performance Improvements</strong>:</p>
<ul>
<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>
<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>
<li class=""><strong>Faster Parquet Metadata Parsing</strong>: Leverages Arrow 57's new thrift metadata parser for up to 4x faster metadata parsing</li>
</ul>
<p><strong>New SQL Features</strong>:</p>
<ul>
<li class=""><strong>SQL Pipe Operators</strong>: Support for <code>|&gt;</code> syntax for inline transforms</li>
<li class=""><strong><code>DESCRIBE &lt;query&gt;</code></strong>: Returns the schema of any query without executing it</li>
<li class=""><strong>Named Arguments in SQL Functions</strong>: PostgreSQL-style <code>param =&gt; value</code> syntax for scalar, aggregate, and window functions</li>
<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>
</ul>
<p>Example pipe operator:</p>
<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"><div 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></div><div 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></div><div 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></div><div 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></div></code></pre></div></div>
<p><strong>Improved Observability</strong>:</p>
<ul>
<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>
</ul>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<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>
<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>
<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>
<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>
</ul>
<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>
<ul>
<li class="">Added JSON nesting for DynamoDB Streams</li>
<li class="">Improved batch deletion handling</li>
</ul>
<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>
<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>
<ul>
<li class="">Multiple schedulers run simultaneously, each capable of accepting queries</li>
<li class="">Schedulers coordinate via a shared S3-compatible object store</li>
<li class="">Executors discover all schedulers automatically</li>
<li class="">A load balancer distributes client queries across schedulers</li>
</ul>
<p>Example HA configuration:</p>
<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"><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<p><strong>mTLS Verification</strong>: Cluster communication between scheduler and executors now supports mutual TLS verification for enhanced security.</p>
<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>
<p><strong>Improved Resilience</strong>:</p>
<ul>
<li class="">Exponential backoff for scheduler disconnection recovery</li>
<li class="">Increased gRPC message size limit from 16MB to 100MB for large query plans</li>
<li class="">HTTP health endpoint for cluster executors</li>
<li class="">Automatic executor role inference when <code>--scheduler-address</code> is provided</li>
</ul>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>V3 Metadata Support</strong>: Full support for Iceberg V3 table metadata format</li>
<li class=""><strong><code>INSERT INTO</code> Partitioned Tables</strong>: DataFusion integration now supports inserting data into partitioned Iceberg tables</li>
<li class=""><strong>Improved Delete File Handling</strong>: Better support for position and equality delete files, including shared delete file loading and caching</li>
<li class=""><strong>SQL Catalog Updates</strong>: Implement <code>update_table</code> and <code>register_table</code> for SQL catalog</li>
<li class=""><strong>S3 Tables Catalog</strong>: Implement <code>update_table</code> for S3 Tables catalog</li>
<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>
</ul>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Flexible Triggers</strong>: Configure when snapshots are created based on time intervals or stream batch counts</li>
<li class=""><strong>Automatic Compaction</strong>: Reduce storage overhead by compacting older snapshots (DuckDB only)</li>
<li class=""><strong>Bootstrap Integration</strong>: Snapshots can reset cache expiry on load for seamless recovery (DuckDB with Caching refresh mode)</li>
<li class=""><strong>Smart Creation Policies</strong>: Only create snapshots when data has actually changed</li>
</ul>
<p>Example configuration:</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<p><strong>Snapshots API and CLI</strong>: New API endpoints and CLI commands for managing snapshots programmatically.</p>
<p>CLI Commands:</p>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice acceleration snapshots taxi_trips</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div></code></pre></div></div>
<p>HTTP API Endpoints:</p>
<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>
<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>
<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>
<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>
<p><strong>Performance Optimizations</strong>:</p>
<ul>
<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>
<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>
</ul>
<p><strong>Reliability Fixes</strong>:</p>
<ul>
<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>
<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>
<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>
<li class=""><strong>Unfiltered Query Optimization</strong>: <code>SELECT *</code> queries without filters now return cached data directly without unnecessary filtering overhead.</li>
</ul>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Query Plan Caching</strong>: Prepared statements cache query plans, reducing planning overhead for repeated queries</li>
<li class=""><strong>SQL Injection Prevention</strong>: Parameters are safely bound, preventing SQL injection vulnerabilities</li>
<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>
</ul>
<p><strong>SDK Support</strong>:</p>
<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>
<p><strong>Example (Go)</strong>:</p>
<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"><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div></code></pre></div></div>
<p><strong>Example (Java)</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">import ai.spice.SpiceClient;</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">import ai.spice.Param;</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">import org.apache.arrow.adbc.core.ArrowReader;</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">try (SpiceClient client = new SpiceClient()) {</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    // With automatic type inference</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    ArrowReader reader = client.queryWithParams(</span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        10.0, "electronics");</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    // With explicit typed parameters</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    ArrowReader reader = client.queryWithParams(</span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        Param.float64(10.0),</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        Param.string("electronics"));</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">}</span><br></div></code></pre></div></div>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>SQL Injection Prevention</strong>: Parameters are safely bound, preventing SQL injection vulnerabilities</li>
<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>
<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>
<li class=""><strong>Updated Dependencies</strong>: Apache Arrow Flight SQL upgraded to 18.3.0, plus new ADBC driver support</li>
</ul>
<p><strong>Example</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">import ai.spice.SpiceClient;</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">import ai.spice.Param;</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">try (SpiceClient client = new SpiceClient()) {</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    // With automatic type inference</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    ArrowReader reader = client.queryWithParams(</span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        5.0);</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    // With explicit typed parameters for precise control</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    ArrowReader reader = client.queryWithParams(</span><br></div><div 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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        Param.int64(12345),</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        Param.decimal128(new BigDecimal("99.99"), 10, 2));</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">}</span><br></div></code></pre></div></div>
<p><strong>Maven</strong>:</p>
<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"><div 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></div><div 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></div><div 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></div><div 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></div><div 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></div></code></pre></div></div>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Google Chat Models</strong>: Access Google's Gemini models for chat completions</li>
<li class=""><strong>Google Embeddings</strong>: Generate embeddings using Google's text embedding models</li>
<li class=""><strong>Unified API</strong>: Use the same OpenAI-compatible API endpoints for all LLM providers</li>
</ul>
<p>Example spicepod.yaml configuration:</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<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>
<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>
<p><strong>Supported Patterns</strong>:</p>
<ul>
<li class=""><strong>Single files</strong>: <code>SELECT * FROM 's3://bucket/data.parquet'</code></li>
<li class=""><strong>Directories/prefixes</strong>: <code>SELECT * FROM 's3://bucket/data/'</code></li>
<li class=""><strong>Glob patterns</strong>: <code>SELECT * FROM 's3://bucket/year=*/month=*/data.parquet'</code></li>
</ul>
<p><strong>Key Features</strong>:</p>
<ul>
<li class="">Automatic file format detection (Parquet, CSV, JSON, etc.)</li>
<li class="">Hive-style partition inference with filter pushdown</li>
<li class="">Schema inference from files</li>
<li class="">Works with both SQL and DataFrame APIs</li>
</ul>
<p>Example with hive partitioning:</p>
<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"><div 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></div><div 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></div></code></pre></div></div>
<p>Enable via spicepod.yml:</p>
<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"><div 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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<p>New asynchronous query APIs for long-running queries in cluster mode:</p>
<ul>
<li class=""><strong><code>/v1/queries</code> endpoint</strong>: Submit queries and retrieve results asynchronously</li>
</ul>
<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>
<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>
<blockquote>
<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>
</blockquote>
<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>
<p><strong>Enhanced Dashboards</strong>: Updated Grafana and Datadog example dashboards with:</p>
<ul>
<li class="">Snapshot monitoring widgets</li>
<li class="">Improved accelerated datasets section</li>
<li class="">Renamed ingestion lag charts for clarity</li>
</ul>
<p><strong>Additional Histogram Buckets</strong>: Added more buckets to histogram metrics for better latency distribution visibility.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/monitoring" target="_blank" rel="noopener noreferrer" class="">Monitoring Documentation</a>.</p>
<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>
<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>
<p><strong>Features</strong>:</p>
<ul>
<li class="">Primary key hash index support</li>
<li class="">Secondary index support for non-primary key columns</li>
<li class="">Composite key support with proper null value handling</li>
</ul>
<p>Example configuration:</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<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>
<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>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>SMB Protocol Support</strong>: Connect to Windows file shares and Samba servers with authentication support</li>
<li class=""><strong>NFS Protocol Support</strong>: Connect to Unix/Linux NFS exports for direct data access</li>
<li class=""><strong>Federated Queries</strong>: Query Parquet, CSV, JSON, and other file formats directly from network storage with full SQL support</li>
<li class=""><strong>Acceleration Support</strong>: Accelerate data from SMB/NFS sources using DuckDB, Spice Cayenne, or other accelerators</li>
</ul>
<p>Example spicepod.yaml configuration:</p>
<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"><div 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></div><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div 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></div><div 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></div><div class="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></div></code></pre></div></div>
<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>
<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>
<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>
<p>Example configuration:</p>
<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"><div 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></div><div 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></div><div class="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></div><div class="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></div><div class="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></div><div class="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></div></code></pre></div></div>
<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>
<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>
<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>
<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>
<ul>
<li class=""><strong>Turso v0.3.2 Upgrade</strong>: Upgraded Turso accelerator for improved performance and reliability</li>
<li class=""><strong>Rust 1.91 Upgrade</strong>: Updated to Rust 1.91 for latest language features and performance improvements</li>
<li class=""><strong>Spice Cloud CLI</strong>: Added <code>spice cloud</code> CLI commands for cloud deployment management</li>
<li class=""><strong>Improved Spicepod Schema</strong>: Improved JSON schema generation for better IDE support and validation</li>
<li class=""><strong>Acceleration Snapshots</strong>: Added configurable <code>snapshots_create_interval</code> for periodic acceleration snapshots independent of refresh cycles</li>
<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>
<li class=""><strong>GitHub Data Connector</strong>: Added workflows and workflow runs support for GitHub repositories</li>
<li class=""><strong>NDJSON/LDJSON Support</strong>: Added support for Newline Delimited JSON and Line Delimited JSON file formats</li>
</ul>
<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>
<ul>
<li class=""><strong>Model Listing</strong>: New functionality to list available models across multiple AI providers</li>
<li class=""><strong>DuckDB Partitioned Tables</strong>: Primary key constraints now supported in partitioned DuckDB table mode</li>
<li class=""><strong>Post-refresh Sorting</strong>: New <code>on_refresh_sort_columns</code> parameter for DuckDB enables data ordering after writes</li>
<li class=""><strong>Improved Install Scripts</strong>: Removed jq dependency and improved cross-platform compatibility</li>
<li class=""><strong>Better Error Messages</strong>: Improved error messaging for bucket UDF arguments and deprecated OpenAI parameters</li>
<li class=""><strong>Reliability</strong>: Fixed DynamoDB IAM role authentication with new <code>dynamodb_auth: iam_role</code> parameter</li>
<li class=""><strong>Reliability</strong>: Fixed cluster executors to use scheduler's <code>temp_directory</code> parameter for shuffle files</li>
<li class=""><strong>Reliability</strong>: Initialize secrets before object stores in cluster executor mode</li>
<li class=""><strong>Reliability</strong>: Added page-level retry with backoff for transient GitHub GraphQL errors</li>
<li class=""><strong>Performance</strong>: Improved statistics for rewritten <code>DistributeFileScanOptimizer</code> plans</li>
<li class=""><strong>Developer Experience</strong>: Added <code>max_message_size</code> configuration for Flight service</li>
</ul>
<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>
<ul>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a></li>
<li class=""><a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
<li class=""><a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
</ul>
<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>
<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>
<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>
<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>
<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>
<p><strong>Migration Steps</strong>:</p>
<ol>
<li class="">Generate certificates using <code>spice cluster tls init</code> and <code>spice cluster tls add</code></li>
<li class="">Update scheduler and executor startup commands with <code>--node-mtls-*</code> arguments</li>
<li class="">For development/testing, use <code>--allow-insecure-connections</code> to opt out of mTLS</li>
</ol>
<p><strong>Renamed CLI Arguments</strong>:</p>
<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>
<p><strong>Removed CLI Arguments</strong>:</p>
<ul>
<li class=""><code>--cluster-api-key</code>: Replaced by mTLS authentication</li>
</ul>
<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>
<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>
<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>
<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>
<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>
<p>To upgrade to v1.11.0, use one of the following methods:</p>
<p><strong>CLI</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></div></code></pre></div></div>
<p><strong>Homebrew</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></div></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.11.0</code> image:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.11.0</span><br></div></code></pre></div></div>
<p>For available tags, see <a href="https://hub.docker.com/r/spiceai/spiceai/tags" target="_blank" rel="noopener noreferrer" class="">DockerHub</a>.</p>
<p><strong>Helm</strong>:</p>
<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"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.11.0</span><br></div></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<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>
<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>
<ul>
<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>
<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>
<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>
</ul>
<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>
<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>
<ul>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</ul>]]></content:encoded>
            <category>release</category>
            <category>cayenne</category>
            <category>acceleration</category>
            <category>datafusion</category>
            <category>iceberg</category>
            <category>arrow</category>
            <category>snapshots</category>
            <category>scylladb</category>
            <category>data-connector</category>
            <category>distributed-query</category>
            <category>caching</category>
            <category>dynamodb</category>
            <category>LLM Tool</category>
        </item>
    </channel>
</rss>