<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://spiceai.org/blog</id>
    <title>Spice.ai OSS Blog</title>
    <updated>2025-12-29T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://spiceai.org/blog"/>
    <subtitle>Keep up to date with upcoming Spice.ai OSS releases and articles by following our feed!</subtitle>
    <icon>https://spiceai.org/img/favicon.ico</icon>
    <rights>Copyright © 2025 Spice AI, Inc.</rights>
    <entry>
        <title type="html"><![CDATA[Spice v1.10.3 (Dec 29, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.10.3</id>
        <link href="https://spiceai.org/blog/releases/v1.10.3"/>
        <updated>2025-12-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.10.3! 🚀]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.10.3! 🚀</p>
<p>v1.10.3 is a patch release with improved startup reliability, fixes for Azure BlobFS versioned containers, S3 custom endpoint query resolution, and a fix for the OpenAI Responses API.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v1103">What's New in v1.10.3<a href="https://spiceai.org/blog/releases/v1.10.3#whats-new-in-v1103" class="hash-link" aria-label="Direct link to What's New in v1.10.3" title="Direct link to What's New in v1.10.3" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.10.3#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Telemetry exporter initialization now runs asynchronously, preventing blocked startup in environments with network restrictions (e.g., Kubernetes with restrictive network policies).</li>
<li class=""><strong>Reliability</strong>: Fixed an issue where queries on Azure Blob containers with versioning enabled would fail with "Azure does not support suffix range requests" error in distributed query mode.</li>
<li class=""><strong>Reliability</strong>: Fixed S3 location-based queries against custom S3 endpoints (e.g., MinIO, LocalStack). Queries with <code>location</code> predicates on datasets using <code>s3_endpoint</code> and <code>s3_region</code> parameters now correctly route to the configured endpoint instead of defaulting to AWS S3.</li>
<li class=""><strong>Reliability</strong>: Fixed "project index out of bounds" errors in the query optimizer when union children have mismatched schemas. The optimizer now validates schema compatibility before applying projection pushdown.</li>
<li class=""><strong>Reliability</strong>: Fixed an issue where the OpenAI Responses API (<code>/v1/responses</code>) was not working correctly.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.10.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/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/blog/releases/v1.10.3#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.10.3#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 84 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.10.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.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.10.3</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.10.3#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.10.3#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<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="">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="">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: 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>
</ul>]]></content>
        <author>
            <name>Phillip LeBlanc</name>
            <uri>https://x.com/leblancphill</uri>
        </author>
        <category label="release" term="release"/>
        <category label="s3" term="s3"/>
        <category label="openai" term="openai"/>
        <category label="azure" term="azure"/>
        <category label="monitoring" term="monitoring"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.10.2 (Dec 22, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.10.2</id>
        <link href="https://spiceai.org/blog/releases/v1.10.2"/>
        <updated>2025-12-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.10.2! 🔥]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.10.2! 🔥</p>
<p>v1.10.2 introduces <strong>Tiered Caching Acceleration with Localpod</strong> for multi-layer acceleration architectures, <strong>Periodic Acceleration Snapshots</strong> with configurable intervals, <strong>DynamoDB JSON Nesting</strong> for column consolidation, and <strong>Kafka/Debezium Batching</strong> for faster data ingestion. This release also includes fixes for SQLite accelerator decimal/date handling and real-time status reporting for the <code>/v1/datasets</code> and <code>/v1/models</code> API endpoints.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v1102">What's New in v1.10.2<a href="https://spiceai.org/blog/releases/v1.10.2#whats-new-in-v1102" class="hash-link" aria-label="Direct link to What's New in v1.10.2" title="Direct link to What's New in v1.10.2" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="tiered-caching-with-localpod">Tiered Caching with Localpod<a href="https://spiceai.org/blog/releases/v1.10.2#tiered-caching-with-localpod" class="hash-link" aria-label="Direct link to Tiered Caching with Localpod" title="Direct link to Tiered Caching with Localpod" translate="no">​</a></h3>
<p><strong>Multi-Layer Acceleration Architecture</strong>: The <a href="https://spiceai.org/docs/components/data-connectors/localpod" target="_blank" rel="noopener noreferrer" class="">Localpod connector</a> now supports <code>caching</code> refresh mode, enabling tiered acceleration where a persistent cache (e.g., file-mode DuckDB) feeds a fast in-memory cache (e.g., Arrow, memory-mode DuckDB).</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Automatic Cache Propagation</strong>: New cache entries automatically propagate from parent to child accelerators</li>
<li class=""><strong>Warm Startup</strong>: Child accelerators initialize from existing parent data on startup, eliminating cold-start latency</li>
<li class=""><strong>Flexible Tiering</strong>: Combine any accelerator engines (DuckDB, SQLite, Cayenne) across tiers</li>
</ul>
<p>Example <code>spicepod.yaml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Parent: persistent file-mode cache</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.example.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> api_cache</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> caching</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Child: fast in-memory cache fed by parent</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> localpod</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">api_cache</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> api_cache_memory</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> caching</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> arrow</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> memory</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/localpod" target="_blank" rel="noopener noreferrer" class="">Localpod Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="periodic-acceleration-snapshots">Periodic Acceleration Snapshots<a href="https://spiceai.org/blog/releases/v1.10.2#periodic-acceleration-snapshots" class="hash-link" aria-label="Direct link to Periodic Acceleration Snapshots" title="Direct link to Periodic Acceleration Snapshots" translate="no">​</a></h3>
<p><strong>Configurable Snapshot Intervals</strong>: A new <code>snapshots_create_interval</code> parameter enables periodic snapshot creation for accelerated datasets across all refresh modes. This provides better control over snapshot frequency and ensures consistent recovery points for accelerated data.</p>
<p>Example <code>spicepod.yaml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket/data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> caching</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">snapshots</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">snapshots_create_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 60s </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Write a snapshot every 60 seconds</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">Data Acceleration Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-json-nesting">DynamoDB JSON Nesting<a href="https://spiceai.org/blog/releases/v1.10.2#dynamodb-json-nesting" class="hash-link" aria-label="Direct link to DynamoDB JSON Nesting" title="Direct link to DynamoDB JSON Nesting" translate="no">​</a></h3>
<p><strong>Consolidate Columns into JSON</strong>: The <a href="https://spiceai.org/docs/components/data-connectors/dynamodb" target="_blank" rel="noopener noreferrer" class="">DynamoDB Data Connector</a> now supports consolidating columns into a single JSON column using the <code>json_object: "*"</code> metadata option. This is useful when only a few columns are needed as discrete fields while the rest can be accessed as nested JSON.</p>
<p>Example <code>spicepod.yaml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> PK</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> SK</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> data_json</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">metadata</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">          </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">json_object</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'*'</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Captures all other columns as JSON</span><br></span></code></pre></div></div>
<p><strong>Example Output</strong>: Given a DynamoDB table with columns <code>PK</code>, <code>SK</code>, <code>name</code>, <code>email</code>, and <code>status</code>, the resulting table schema consolidates all non-specified columns into the <code>data_json</code> column:</p>
<table><thead><tr><th>PK</th><th>SK</th><th>data_json</th></tr></thead><tbody><tr><td>pk_1</td><td>sort_1</td><td><code>{"name": "Alice", "email": "alice@example.com", "status": "active"}</code></td></tr><tr><td>pk_2</td><td>sort_2</td><td><code>{"name": "Bob", "email": "bob@example.com", "status": "inactive"}</code></td></tr></tbody></table>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/dynamodb#json-nesting" target="_blank" rel="noopener noreferrer" class="">DynamoDB JSON Nesting Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="kafkadebezium-batching">Kafka/Debezium Batching<a href="https://spiceai.org/blog/releases/v1.10.2#kafkadebezium-batching" class="hash-link" aria-label="Direct link to Kafka/Debezium Batching" title="Direct link to Kafka/Debezium Batching" translate="no">​</a></h3>
<p><strong>Faster Data Ingestion</strong>: Configure message batching for <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka</a> and <a href="https://spiceai.org/docs/components/data-connectors/debezium" target="_blank" rel="noopener noreferrer" class="">Debezium</a> connectors to improve data ingestion throughput. Batching reduces processing overhead by grouping multiple messages together before insertion.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Configurable Batch Size</strong>: Control the maximum number of records per batch (default: 10,000)</li>
<li class=""><strong>Configurable Batch Duration</strong>: Set the maximum wait time before flushing a partial batch (default: 1s)</li>
</ul>
<p>Example <code>spicepod.yaml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> debezium</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">kafka</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">server.public.my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">batch_max_size</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10000</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Max records per batch (default: 10000)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">batch_max_duration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 1s </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Max wait time per batch (default: 1s)</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka Data Connector Documentation</a> and <a href="https://spiceai.org/docs/components/data-connectors/debezium" target="_blank" rel="noopener noreferrer" class="">Debezium Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.10.2#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Fixed SQLite accelerator decimal and date type handling for improved data type accuracy.</li>
<li class=""><strong>Reliability</strong>: Fixed real-time status reporting for <code>/v1/datasets</code> and <code>/v1/models</code> API endpoints.</li>
<li class=""><strong>Reliability</strong>: Fixed Kafka warning when <code>security.protocol</code> is set to <code>PLAINTEXT</code>.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.10.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/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</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/blog/releases/v1.10.2#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.10.2#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p><strong>New Cayenne Data Accelerator Recipe</strong>: New recipe demonstrating how to accelerate a local copy of the taxi trips dataset using Cayenne as the data accelerator engine. See <a href="https://github.com/spiceai/cookbook/tree/trunk/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne Data Accelerator Recipe</a> for details.</p>
<p><strong>New Dataset Partitioning Recipe</strong>: New recipe demonstrating how to partition accelerated datasets to improve query performance. See <a href="https://github.com/spiceai/cookbook/tree/trunk/acceleration/partitioning" target="_blank" rel="noopener noreferrer" class="">Dataset Partitioning</a> for details.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 84 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.10.2#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v1.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.10.2</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.10.2#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.10.2#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<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="">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="">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="">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="">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="">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="">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>
</ul>]]></content>
        <author>
            <name>Sergei Grebnov</name>
            <uri>https://github.com/sgrebnov</uri>
        </author>
        <category label="release" term="release"/>
        <category label="caching" term="caching"/>
        <category label="snapshots" term="snapshots"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="kafka" term="kafka"/>
        <category label="sqlite" term="sqlite"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.10.1 (Dec 15, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.10.1</id>
        <link href="https://spiceai.org/blog/releases/v1.10.1"/>
        <updated>2025-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.10.1! 🚀]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.10.1! 🚀</p>
<p>v1.10.1 is a patch release with <strong>Cayenne accelerator improvements</strong> including configurable compression strategies and improved partition ID handling, <strong>isolated refresh runtime</strong> for better query API responsiveness, and <strong>security hardening</strong>. In addition, the GO SDK, gospice v8 has been released.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v1101">What's New in v1.10.1<a href="https://spiceai.org/blog/releases/v1.10.1#whats-new-in-v1101" class="hash-link" aria-label="Direct link to What's New in v1.10.1" title="Direct link to What's New in v1.10.1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-accelerator-improvements">Cayenne Accelerator Improvements<a href="https://spiceai.org/blog/releases/v1.10.1#cayenne-accelerator-improvements" class="hash-link" aria-label="Direct link to Cayenne Accelerator Improvements" title="Direct link to Cayenne Accelerator Improvements" translate="no">​</a></h3>
<p>Several improvements and bug fixes for the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne data accelerator</a>:</p>
<ul>
<li class=""><strong>Compression Strategies</strong>: The new <code>cayenne_compression_strategy</code> parameter enables choosing between <code>zstd</code> for compact storage or <code>btrblocks</code> for encoding-efficient compression.</li>
<li class=""><strong>Improved Vortex Defaults</strong>: Aligned Cayenne to Vortex footer configuration for better compatibility.</li>
<li class=""><strong>Partition ID Handling</strong>: Improved partition ID generation to avoid potential locking race conditions.</li>
</ul>
<p>Example <code>spicepod.yaml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket/data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_dataset</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cayenne</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">cayenne_compression_strategy</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> zstd </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># or btrblocks (default)</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne Data Accelerator Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="isolated-refresh-runtime">Isolated Refresh Runtime<a href="https://spiceai.org/blog/releases/v1.10.1#isolated-refresh-runtime" class="hash-link" aria-label="Direct link to Isolated Refresh Runtime" title="Direct link to Isolated Refresh Runtime" translate="no">​</a></h3>
<p>Refresh tasks now run on a separate Tokio runtime isolated from the main query API. This prevents long-running or resource-intensive refresh operations from impacting query latency and ensures the <code>/health</code> endpoint remains responsive during heavy refresh workloads.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security-hardening">Security Hardening<a href="https://spiceai.org/blog/releases/v1.10.1#security-hardening" class="hash-link" aria-label="Direct link to Security Hardening" title="Direct link to Security Hardening" translate="no">​</a></h3>
<p>Multiple security improvements have been implemented:</p>
<ul>
<li class=""><strong>Recursion Depth Limits</strong>: Added limits to DynamoDB and S3 Vectors integrations to prevent stack overflow from deeply nested structures, mitigating potential DoS attacks.</li>
<li class=""><strong>Spicepod Summary API</strong>: The GET <code>/v1/spicepods</code> endpoint now returns summarized information instead of full <code>spicepod.yaml</code> representations, preventing potential sensitive information leakage.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.10.1#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Performance</strong>: Fixed double hashing of user supplied cache keys, improving cache lookup efficiency.</li>
<li class=""><strong>Reliability</strong>: Fixed idle DynamoDB Stream handling for more stable CDC operations.</li>
<li class=""><strong>Reliability</strong>: Added warnings when multiple partitions are defined for the same table.</li>
<li class=""><strong>Performance</strong>: Eagerly drop cached records for results larger than max cache size.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-go-sdk-v8">Spice Go SDK v8<a href="https://spiceai.org/blog/releases/v1.10.1#spice-go-sdk-v8" class="hash-link" aria-label="Direct link to Spice Go SDK v8" title="Direct link to Spice Go SDK v8" translate="no">​</a></h2>
<p>The Spice Go SDK has been upgraded to v8 with a cleaner API, parameterized queries, and health check methods: <a href="https://github.com/spiceai/gospice/releases/tag/v8.0.0" target="_blank" rel="noopener noreferrer" class="">gospice v8.0.0</a>.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Cleaner API</strong>: New <code>Sql()</code> and <code>SqlWithParams()</code> methods with more intuitive naming.</li>
<li class=""><strong>Parameterized Queries</strong>: Safe, SQL-injection-resistant queries with automatic Go-to-Arrow type inference.</li>
<li class=""><strong>Typed Parameters</strong>: Explicit type control with constructors like <code>Decimal128Param</code>, <code>TimestampParam</code>, and more.</li>
<li class=""><strong>Health Check Methods</strong>: New <code>IsSpiceHealthy()</code> and <code>IsSpiceReady()</code> methods for instance monitoring.</li>
<li class=""><strong>Upgraded Dependencies</strong>: Apache Arrow v18 and ADBC Go driver v1.3.0.</li>
</ul>
<p>Example usage with a local Spice runtime:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">import</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"github.com/spiceai/gospice/v8"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">// Initialize client for local runtime</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice </span><span class="token operator" style="color:hsl(221, 87%, 60%)">:=</span><span class="token plain"> gospice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">NewSpiceClient</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">defer</span><span class="token plain"> spice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">Close</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">if</span><span class="token plain"> err </span><span class="token operator" style="color:hsl(221, 87%, 60%)">:=</span><span class="token plain"> spice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">Init</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    gospice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">WithFlightAddress</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">"grpc://localhost:50051"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"> err </span><span class="token operator" style="color:hsl(221, 87%, 60%)">!=</span><span class="token plain"> </span><span class="token boolean" style="color:hsl(35, 99%, 36%)">nil</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token function" style="color:hsl(221, 87%, 60%)">panic</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">err</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">// Parameterized query (safe from SQL injection)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">reader</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> err </span><span class="token operator" style="color:hsl(221, 87%, 60%)">:=</span><span class="token plain"> spice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">SqlWithParams</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    ctx</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token string" style="color:hsl(119, 34%, 47%)">"SELECT * FROM users WHERE id = $1 AND created_at &gt; $2"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    userId</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    startTime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><br></span></code></pre></div></div>
<p><strong>Upgrade</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">go get github.com/spiceai/gospice/v8@v8.0.0</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://docs.spice.ai/sdks/go" target="_blank" rel="noopener noreferrer" class="">Go SDK Documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.10.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/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/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</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/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.10.1#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<ul>
<li class="">GET <code>/v1/spicepods</code> no longer returns the full <code>spicepod.yaml</code> JSON representation. A summary is returned instead. See <a href="https://github.com/spiceai/spiceai/pull/8404" target="_blank" rel="noopener noreferrer" class="">#8404</a>.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.10.1#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 82+ recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.10.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.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.10.1</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.10.1#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.10.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<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="">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="">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="">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: 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="">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="">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="">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="">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="">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="">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="">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="">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="">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="">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="">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="">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 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>
</ul>]]></content>
        <author>
            <name>Jack Eadie</name>
            <uri>https://github.com/Jeadie</uri>
        </author>
        <category label="release" term="release"/>
        <category label="cayenne" term="cayenne"/>
        <category label="acceleration" term="acceleration"/>
        <category label="sdk" term="sdk"/>
        <category label="security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.10.0 (Dec 9, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.10.0</id>
        <link href="https://spiceai.org/blog/releases/v1.10.0"/>
        <updated>2025-12-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.10.0! ⚡]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.10.0! ⚡</p>
<p>Spice v1.10.0 introduces a new <strong>Caching Acceleration Mode</strong> with stale-while-revalidate (SWR) semantics for disk-persisted, low-latency queries with background refresh. This release also adds the <strong>TinyLFU eviction policy</strong> for the SQL results cache, a preview of the <strong>DynamoDB Streams connector</strong> for real-time CDC, <strong>S3 location predicate pruning</strong> for faster partitioned queries, improved <strong>distributed query execution</strong>, and multiple security hardening improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v1100">What's New in v1.10.0<a href="https://spiceai.org/blog/releases/v1.10.0#whats-new-in-v1100" class="hash-link" aria-label="Direct link to What's New in v1.10.0" title="Direct link to What's New in v1.10.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="caching-acceleration-mode">Caching Acceleration Mode<a href="https://spiceai.org/blog/releases/v1.10.0#caching-acceleration-mode" class="hash-link" aria-label="Direct link to Caching Acceleration Mode" title="Direct link to Caching Acceleration Mode" translate="no">​</a></h3>
<p><strong>Low-Latency Queries with Background Refresh</strong>: This release introduces a new <code>caching</code> <a href="https://spiceai.org/docs/components/data-accelerators" target="_blank" rel="noopener noreferrer" class="">acceleration mode</a> that implements the stale-while-revalidate (SWR) pattern. Queries return cached results immediately while data refreshes asynchronously in the background, eliminating query latency spikes during refresh cycles. Cached data persists to disk using DuckDB, SQLite, or Cayenne file modes.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Stale-While-Revalidate (SWR)</strong>: Returns cached data immediately while refreshing in the background, reducing query latency</li>
<li class=""><strong>Disk Persistence</strong>: Cached results persist across restarts using DuckDB, SQLite, or Cayenne file modes</li>
<li class=""><strong>Configurable Refresh</strong>: Control refresh intervals with <code>refresh_check_interval</code> to balance freshness and source load</li>
</ul>
<blockquote>
<p><strong>Recommendation</strong>: Use <a href="https://spiceai.org/docs/reference/spicepod/datasets#accelerationretention_check_enabled" target="_blank" rel="noopener noreferrer" class="">retention configuration</a> with caching acceleration to ensure stale data is cleaned up over time.</p>
</blockquote>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> http</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//localhost</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">7400</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cached_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">time_column</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> fetched_at</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Persist cache to disk</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> caching</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_check_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10m</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention_check_enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention_period</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 24h</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention_check_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 1h</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">Data Acceleration Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="tinylfu-cache-eviction-policy">TinyLFU Cache Eviction Policy<a href="https://spiceai.org/blog/releases/v1.10.0#tinylfu-cache-eviction-policy" class="hash-link" aria-label="Direct link to TinyLFU Cache Eviction Policy" title="Direct link to TinyLFU Cache Eviction Policy" translate="no">​</a></h3>
<p><strong>Higher Cache Hit Rates for SQL Results Cache</strong>: A new TinyLFU <a href="https://spiceai.org/docs/features/caching#cache-eviction-policies" target="_blank" rel="noopener noreferrer" class="">cache eviction policy</a> is now available for the SQL results cache. TinyLFU is a probabilistic cache admission policy that maintains higher hit rates than LRU while keeping memory usage predictable, making it ideal for workloads with varying query frequency patterns.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">caching</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql_results</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">eviction_policy</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tiny_lfu </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># default: lru</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/caching" target="_blank" rel="noopener noreferrer" class="">Caching Documentation</a> and the <a href="https://docs.rs/moka/latest/moka/#tinylfu" target="_blank" rel="noopener noreferrer" class="">Moka TinyLFU Documentation</a> for details of the algorithm.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-streams-data-connector-preview">DynamoDB Streams Data Connector (Preview)<a href="https://spiceai.org/blog/releases/v1.10.0#dynamodb-streams-data-connector-preview" class="hash-link" aria-label="Direct link to DynamoDB Streams Data Connector (Preview)" title="Direct link to DynamoDB Streams Data Connector (Preview)" translate="no">​</a></h3>
<p><strong>Real-Time Change Data Capture for DynamoDB</strong>: The DynamoDB connector now integrates with DynamoDB Streams for real-time change data capture (CDC). This enables continuous synchronization of DynamoDB table changes into Spice for real-time query, search, and LLM-inference.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Real-Time CDC</strong>: Automatically captures inserts, updates, and deletes from DynamoDB tables as they occur</li>
<li class=""><strong>Table Bootstrapping</strong>: Performs an initial full table scan before streaming changes, ensuring complete data consistency</li>
<li class=""><strong>Acceleration Integration</strong>: Works with <code>refresh_mode: changes</code> to incrementally update accelerated datasets</li>
</ul>
<blockquote>
<p><strong>Note</strong>: DynamoDB Streams must be enabled on your DynamoDB table. This feature is in preview.</p>
</blockquote>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> orders_stream</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> changes </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Enable Streams capture</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/dynamodb#streams" target="_blank" rel="noopener noreferrer" class="">DynamoDB Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="opentelemetry-metrics-exporter">OpenTelemetry Metrics Exporter<a href="https://spiceai.org/blog/releases/v1.10.0#opentelemetry-metrics-exporter" class="hash-link" aria-label="Direct link to OpenTelemetry Metrics Exporter" title="Direct link to OpenTelemetry Metrics Exporter" translate="no">​</a></h3>
<p>Spice can now push metrics to an <a href="https://opentelemetry.io/" target="_blank" rel="noopener noreferrer" class="">OpenTelemetry</a> collector, enabling integration with platforms such as <a href="https://www.jaegertracing.io/" target="_blank" rel="noopener noreferrer" class="">Jaeger</a>, <a href="https://newrelic.com/" target="_blank" rel="noopener noreferrer" class="">New Relic</a>, <a href="https://www.honeycomb.io/" target="_blank" rel="noopener noreferrer" class="">Honeycomb</a>, and other OpenTelemetry-compatible backends.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Protocol Support</strong>: Supports the gRPC (default port 4317) protocol</li>
<li class=""><strong>Configurable Push Interval</strong>: Control how frequently metrics are pushed to the collector</li>
</ul>
<p>Example spicepod.yaml configuration for gRPC:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">telemetry</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">otel_exporter</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">endpoint</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'localhost:4317'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">push_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'30s'</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/observability" target="_blank" rel="noopener noreferrer" class="">Observability &amp; Monitoring Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="s3-connector-improvements">S3 Connector Improvements<a href="https://spiceai.org/blog/releases/v1.10.0#s3-connector-improvements" class="hash-link" aria-label="Direct link to S3 Connector Improvements" title="Direct link to S3 Connector Improvements" translate="no">​</a></h3>
<p><strong>S3 Location Predicate Pruning</strong>: The <a href="https://spiceai.org/docs/components/data-connectors/s3" target="_blank" rel="noopener noreferrer" class="">S3 data connector</a> now supports location-based predicate pruning, dramatically reducing data scanned by pushing down location filter predicates to S3 listing operations. For partitioned datasets (e.g., <code>year=2025/month=12/</code>), Spice now skips listing irrelevant partitions entirely, significantly reducing query latency and S3 API costs.</p>
<p><strong>AWS S3 Tables Write Support</strong>: Full read/write capability for <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html" target="_blank" rel="noopener noreferrer" class="">AWS S3 Tables</a>, enabling direct integration with AWS's managed table format for S3. Use standard SQL <code>INSERT INTO</code> to write data.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/s3" target="_blank" rel="noopener noreferrer" class="">S3 Data Connector Documentation</a> and <a href="https://spiceai.org/docs/components/data-connectors/glue" target="_blank" rel="noopener noreferrer" class="">Glue Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="faster-distributed-query-execution">Faster Distributed Query Execution<a href="https://spiceai.org/blog/releases/v1.10.0#faster-distributed-query-execution" class="hash-link" aria-label="Direct link to Faster Distributed Query Execution" title="Direct link to Faster Distributed Query Execution" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/features/distributed-query" target="_blank" rel="noopener noreferrer" class="">Distributed query</a> planning and execution have been significantly improved:</p>
<ul>
<li class=""><strong>Fixed executor registration</strong> in cluster mode for more reliable distributed deployments</li>
<li class=""><strong>Improved hostname resolution</strong> for Flight server binding, enabling better executor discovery</li>
<li class=""><strong>Distributed accelerator registration</strong>: Data accelerators now properly register in distributed mode</li>
<li class=""><strong>Optimized query planning</strong>: <code>DistributeFileScanOptimizer</code> improvements for faster planning with large datasets</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="search-improvements">Search Improvements<a href="https://spiceai.org/blog/releases/v1.10.0#search-improvements" class="hash-link" aria-label="Direct link to Search Improvements" title="Direct link to Search Improvements" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search</a> capabilities have been improved with several performance and reliability enhancements:</p>
<ul>
<li class=""><strong>Fixed FTS query blocking</strong>: Full-text search queries no longer block unnecessarily, improving query responsiveness</li>
<li class=""><strong>Optimized vector index operations</strong>: Eliminated unnecessary <code>list_vectors</code> calls for better performance</li>
<li class=""><strong>Improved limit pushdown</strong>: <code>IndexerExec</code> now properly handles limit pushdown for more efficient searches</li>
</ul>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security-hardening">Security Hardening<a href="https://spiceai.org/blog/releases/v1.10.0#security-hardening" class="hash-link" aria-label="Direct link to Security Hardening" title="Direct link to Security Hardening" translate="no">​</a></h3>
<p>Multiple security improvements have been implemented:</p>
<ul>
<li class=""><strong>SQL Identifier Quoting</strong>: Hardened SQL identifier quoting across all database connectors (PostgreSQL, MySQL, DuckDB, etc.) to prevent SQL injection attacks through table or column names</li>
<li class=""><strong>Token Redaction</strong>: Sensitive authentication tokens are now fully redacted in debug and error output, preventing accidental credential exposure in logs</li>
<li class=""><strong>Path Traversal Prevention</strong>: Fixed tar extraction operations to prevent directory traversal vulnerabilities when processing archived files</li>
<li class=""><strong>Input Sanitization</strong>: Added strict validation for <code>top_n_sample</code> order_by clause parsing to prevent injection attacks</li>
<li class=""><strong>Glue Credential Handling</strong>: Prevented automatic loading of AWS credentials from environment in Glue connector, ensuring explicit credential configuration</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="developer-experience-improvements">Developer Experience Improvements<a href="https://spiceai.org/blog/releases/v1.10.0#developer-experience-improvements" class="hash-link" aria-label="Direct link to Developer Experience Improvements" title="Direct link to Developer Experience Improvements" translate="no">​</a></h3>
<ul>
<li class=""><strong>Health probe metrics</strong>: Added health probe latency metrics for better observability</li>
<li class=""><strong>CLI improvements</strong>: Fixed <code>.clear history</code> command in the REPL to fully clear persisted history</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.10.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/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/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.10.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.10.0#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.10.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.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.10.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.10.0</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.10.0#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.10.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Test-operator: Add tpcds_q8 to the default row-count validation skip list by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8185" target="_blank" rel="noopener noreferrer" class="">#8185</a></li>
<li class="">fix: Remove unwrap_used from test by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8212" target="_blank" rel="noopener noreferrer" class="">#8212</a></li>
<li class="">Run glue_iceberg_integration_test_catalog as part of main integration tests by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8222" target="_blank" rel="noopener noreferrer" class="">#8222</a></li>
<li class="">Add TPCH sf100 testoperator spicepods with dispatch by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8192" target="_blank" rel="noopener noreferrer" class="">#8192</a></li>
<li class="">Build with CPU native flags by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8224" target="_blank" rel="noopener noreferrer" class="">#8224</a></li>
<li class="">fix: Apply assertion clippy in CI/Makefile only by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8229" target="_blank" rel="noopener noreferrer" class="">#8229</a></li>
<li class="">feat: Support running queries only in testoperator by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8211" target="_blank" rel="noopener noreferrer" class="">#8211</a></li>
<li class="">DuckDB query planning: aggregate pushdown by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8174" target="_blank" rel="noopener noreferrer" class="">#8174</a></li>
<li class="">install.sh improvements by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8252" target="_blank" rel="noopener noreferrer" class="">#8252</a></li>
<li class="">Fix <code>.clear history</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8254" target="_blank" rel="noopener noreferrer" class="">#8254</a></li>
<li class="">Improve the output of dataset loading by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8256" target="_blank" rel="noopener noreferrer" class="">#8256</a></li>
<li class="">Refactor view validation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8258" target="_blank" rel="noopener noreferrer" class="">#8258</a></li>
<li class="">Upgrade AWS crates by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8259" target="_blank" rel="noopener noreferrer" class="">#8259</a></li>
<li class="">fix: Pushdown dynamic filters to partition scans by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8240" target="_blank" rel="noopener noreferrer" class="">#8240</a></li>
<li class="">Harden SQL identifier quoting in connectors by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8276" target="_blank" rel="noopener noreferrer" class="">#8276</a></li>
<li class="">Cayenne <code>sort_columns</code> on insert by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8091" target="_blank" rel="noopener noreferrer" class="">#8091</a></li>
<li class="">Redact token debug output by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8280" target="_blank" rel="noopener noreferrer" class="">#8280</a></li>
<li class="">fix: Cayenne configuration options by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8281" target="_blank" rel="noopener noreferrer" class="">#8281</a></li>
<li class="">Prevent path traversal in untar by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8284" target="_blank" rel="noopener noreferrer" class="">#8284</a></li>
<li class="">Fix cluster mode executor registration by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8292" target="_blank" rel="noopener noreferrer" class="">#8292</a></li>
<li class="">Unignore s3_vectors_kafka_stream test by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8289" target="_blank" rel="noopener noreferrer" class="">#8289</a></li>
<li class="">Post-release house keeping by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8293" target="_blank" rel="noopener noreferrer" class="">#8293</a></li>
<li class="">Improve generate_changelog script by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8273" target="_blank" rel="noopener noreferrer" class="">#8273</a></li>
<li class="">Acceleration mode <code>caching</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8237" target="_blank" rel="noopener noreferrer" class="">#8237</a></li>
<li class="">Sanitization and security checks by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7854" target="_blank" rel="noopener noreferrer" class="">#7854</a></li>
<li class="">Add health probe latency metric by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8300" target="_blank" rel="noopener noreferrer" class="">#8300</a></li>
<li class="">Add distributed registration for data accelerators by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8299" target="_blank" rel="noopener noreferrer" class="">#8299</a></li>
<li class="">Pass IndexedTableProvider down in 'changes_stream' and 'append_stream' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8295" target="_blank" rel="noopener noreferrer" class="">#8295</a></li>
<li class="">Add <code>dynamodb-streams</code> crate by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8283" target="_blank" rel="noopener noreferrer" class="">#8283</a></li>
<li class="">Distributed query: resolve executor hostname when determining Flight server binding by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8304" target="_blank" rel="noopener noreferrer" class="">#8304</a></li>
<li class="">Return computed embeddings from index for partitioned S3Vectors by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8306" target="_blank" rel="noopener noreferrer" class="">#8306</a></li>
<li class="">[DDB Streams] Skeleton for DynamoDB Streams by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8296" target="_blank" rel="noopener noreferrer" class="">#8296</a></li>
<li class="">DistributeFileScanOptimizer: Improve planning performance by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8305" target="_blank" rel="noopener noreferrer" class="">#8305</a></li>
<li class="">feat: Add an ExactLeftAccumulator implementation by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8302" target="_blank" rel="noopener noreferrer" class="">#8302</a></li>
<li class="">deps: Upgrade Vortex to 0.56 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8311" target="_blank" rel="noopener noreferrer" class="">#8311</a></li>
<li class="">DynamoDB table bootstrapping + streaming by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8312" target="_blank" rel="noopener noreferrer" class="">#8312</a></li>
<li class="">Avoid calling S3Vector <code>list_vectors</code> (or equivalent) when indexing into <code>VectorIndex</code>s by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8282" target="_blank" rel="noopener noreferrer" class="">#8282</a></li>
<li class="">Add on_conflict testing support to append benchmark by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8314" target="_blank" rel="noopener noreferrer" class="">#8314</a></li>
<li class="">docker: Add valid home directory to fix duckdb extension loading issue by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8318" target="_blank" rel="noopener noreferrer" class="">#8318</a></li>
<li class="">Add GH Workflow to run Append benchmark test by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8321" target="_blank" rel="noopener noreferrer" class="">#8321</a></li>
<li class="">Exclude MySQL SF100 from test-operator dispatch by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8320" target="_blank" rel="noopener noreferrer" class="">#8320</a></li>
<li class="">feat: Update clippy lints by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8317" target="_blank" rel="noopener noreferrer" class="">#8317</a></li>
<li class="">Add S3 location predicate pruning to listing connector by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8319" target="_blank" rel="noopener noreferrer" class="">#8319</a></li>
<li class="">Review feedback for caching mode accelerator by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8326" target="_blank" rel="noopener noreferrer" class="">#8326</a></li>
<li class="">Also include Dockerfile home changes for release build by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8327" target="_blank" rel="noopener noreferrer" class="">#8327</a></li>
<li class="">Change communication channel from Discord to Slack by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8330" target="_blank" rel="noopener noreferrer" class="">#8330</a></li>
<li class="">Replace Discord link with Slack link in README by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8331" target="_blank" rel="noopener noreferrer" class="">#8331</a></li>
<li class="">fix(glue): Prevent OpenDAL from automatic loading of AWS credentials from environment by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8337" target="_blank" rel="noopener noreferrer" class="">#8337</a></li>
<li class="">Block on index read for FTS queries by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8339" target="_blank" rel="noopener noreferrer" class="">#8339</a></li>
<li class="">Fix search query provider by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8343" target="_blank" rel="noopener noreferrer" class="">#8343</a></li>
<li class="">Support for writing into AWS S3 Tables by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8344" target="_blank" rel="noopener noreferrer" class="">#8344</a></li>
<li class="">Acceleration file_create mode by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8347" target="_blank" rel="noopener noreferrer" class="">#8347</a></li>
<li class="">Don't block on lock in FTS query path by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8348" target="_blank" rel="noopener noreferrer" class="">#8348</a></li>
<li class="">feat: Add an optimizer rule to replace join accumulator for Cayenne by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8316" target="_blank" rel="noopener noreferrer" class="">#8316</a></li>
<li class="">S3 Vectors limit updates by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8352" target="_blank" rel="noopener noreferrer" class="">#8352</a></li>
<li class="">Sanitize top_n_sample order_by parsing by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8356" target="_blank" rel="noopener noreferrer" class="">#8356</a></li>
<li class="">Add distributed registration for data connectors by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8354" target="_blank" rel="noopener noreferrer" class="">#8354</a></li>
<li class="">Improve <code>IndexerExec</code> to properly handle limit pushdown by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8366" target="_blank" rel="noopener noreferrer" class="">#8366</a></li>
<li class="">Fix Cayenne partition_by metadata flaky integration test by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8367" target="_blank" rel="noopener noreferrer" class="">#8367</a></li>
<li class="">Rework caching accelerator to use the <code>stale-while-revalidate</code> pattern. by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8365" target="_blank" rel="noopener noreferrer" class="">#8365</a></li>
<li class="">Add TinyLFU caching policy by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8370" target="_blank" rel="noopener noreferrer" class="">#8370</a></li>
<li class="">Make Arrow acceleration <code>on_conflict</code> verification more robust by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8375" target="_blank" rel="noopener noreferrer" class="">#8375</a></li>
<li class="">Add additional test for verify_on_conflict_matches_primary_key (Arrow acceleration) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8376" target="_blank" rel="noopener noreferrer" class="">#8376</a></li>
<li class="">Add v1.10.0-rc1 release notes by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8373" target="_blank" rel="noopener noreferrer" class="">#8373</a></li>
<li class="">docs: Remove DuckDB agg pushdown from release notes by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8383" target="_blank" rel="noopener noreferrer" class="">#8383</a></li>
<li class="">Testoperator dispatch: add Append support and test configurations by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8360" target="_blank" rel="noopener noreferrer" class="">#8360</a></li>
<li class="">fix: Increase TPCDS DuckDB connection pool size by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8386" target="_blank" rel="noopener noreferrer" class="">#8386</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8385" target="_blank" rel="noopener noreferrer" class="">#8385</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8389" target="_blank" rel="noopener noreferrer" class="">#8389</a></li>
<li class="">Fix Windows build by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8391" target="_blank" rel="noopener noreferrer" class="">#8391</a></li>
<li class="">DuckDB aggregate pushdown: fix partitioning and schema rewrite bugs by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8397" target="_blank" rel="noopener noreferrer" class="">#8397</a></li>
<li class="">Delta table: Store current snapshot ref with table instance  by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8358" target="_blank" rel="noopener noreferrer" class="">#8358</a></li>
<li class="">GetAppDefinition: Check if executor is part of cluster by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8396" target="_blank" rel="noopener noreferrer" class="">#8396</a></li>
<li class="">1.10.0-rc1 housekeeping by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8394" target="_blank" rel="noopener noreferrer" class="">#8394</a></li>
<li class="">Change debug log to warning for vector engine config by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8378" target="_blank" rel="noopener noreferrer" class="">#8378</a></li>
<li class="">Clarify /v1/nsql datasets sampling hint by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8395" target="_blank" rel="noopener noreferrer" class="">#8395</a></li>
<li class="">Use bmi1 target feature for x86_64 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8401" target="_blank" rel="noopener noreferrer" class="">#8401</a></li>
<li class="">benchmarks: Default to update snapshots when run on a non-release branch by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8402" target="_blank" rel="noopener noreferrer" class="">#8402</a></li>
<li class="">Update threat model for v1.9.2 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8400" target="_blank" rel="noopener noreferrer" class="">#8400</a></li>
<li class="">Fix iceberg tables metadata - assign ids to all fields, including nested by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/8351" target="_blank" rel="noopener noreferrer" class="">#8351</a></li>
<li class="">Fix databricks_spark_connect_m2m_integration_test_catalog snapshot by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/8403" target="_blank" rel="noopener noreferrer" class="">#8403</a></li>
<li class="">Move all GitHub Actions workflows to use exact commit sha by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8409" target="_blank" rel="noopener noreferrer" class="">#8409</a></li>
<li class="">Upgrade datafusion-tableproviders (df v50) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8261" target="_blank" rel="noopener noreferrer" class="">#8261</a></li>
<li class="">Batching for CDC by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8359" target="_blank" rel="noopener noreferrer" class="">#8359</a></li>
<li class="">fix: make DuckDB attachments logic more robust by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8411" target="_blank" rel="noopener noreferrer" class="">#8411</a></li>
<li class="">Persistent checkpoints for DynamoDB Streams by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8345" target="_blank" rel="noopener noreferrer" class="">#8345</a></li>
<li class="">Distributed query: Support AsyncFuncExec and Spice UDFs in Ballista by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8414" target="_blank" rel="noopener noreferrer" class="">#8414</a></li>
<li class="">Pin GitHub Actions to fix Testoperator build action by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8416" target="_blank" rel="noopener noreferrer" class="">#8416</a></li>
<li class="">Watermarks support for DynamoDB by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8417" target="_blank" rel="noopener noreferrer" class="">#8417</a></li>
<li class="">Fix typo in <code>.vscode/launch.json</code> by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8415" target="_blank" rel="noopener noreferrer" class="">#8415</a></li>
<li class="">DuckSqlExec: Update equivalence properties when rewriting schema by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8420" target="_blank" rel="noopener noreferrer" class="">#8420</a></li>
<li class="">Validate that the commit for datafusion-table-providers exists on the spiceai branch by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8421" target="_blank" rel="noopener noreferrer" class="">#8421</a></li>
<li class="">Append Tests: add support for retention testing by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8419" target="_blank" rel="noopener noreferrer" class="">#8419</a></li>
<li class="">New crate <code>google-genai</code>  by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8390" target="_blank" rel="noopener noreferrer" class="">#8390</a></li>
<li class="">federation: Improve error message and add debug logging for cast failures by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8422" target="_blank" rel="noopener noreferrer" class="">#8422</a></li>
<li class="">DynamoDB Streams Error Handling by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8418" target="_blank" rel="noopener noreferrer" class="">#8418</a></li>
<li class="">Append tests: add support for <code>with_retention_data</code> to dispatch by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8430" target="_blank" rel="noopener noreferrer" class="">#8430</a></li>
<li class="">Append tests: add support for test metrics reporting by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8432" target="_blank" rel="noopener noreferrer" class="">#8432</a></li>
<li class="">test-operator: fix metrics reporting by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8435" target="_blank" rel="noopener noreferrer" class="">#8435</a></li>
<li class="">Follow-up improvements and bug fixes by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8433" target="_blank" rel="noopener noreferrer" class="">#8433</a></li>
<li class="">Periodic snapshots for append/changes streams by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8407" target="_blank" rel="noopener noreferrer" class="">#8407</a></li>
<li class="">Add support for <code>caching_stale_if_error</code> to caching accelerator; fix multiple upstream requests during SWR; fix Arrow accelerator by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8425" target="_blank" rel="noopener noreferrer" class="">#8425</a></li>
<li class="">Disable dataset health monitor for dynamic HTTP connector by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8441" target="_blank" rel="noopener noreferrer" class="">#8441</a></li>
<li class="">Metrics + <code>snapshots_trigger_threshold </code> for DynamoDB Streams by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8437" target="_blank" rel="noopener noreferrer" class="">#8437</a></li>
<li class="">Clear the in-flight revalidations cache after a revalidation has completed. by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8443" target="_blank" rel="noopener noreferrer" class="">#8443</a></li>
<li class="">dont build 'spicepod-validator' on 'make install' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8426" target="_blank" rel="noopener noreferrer" class="">#8426</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8436" target="_blank" rel="noopener noreferrer" class="">#8436</a></li>
<li class="">fix: Disable Cayenne HashJoin rewriter optimizer by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8439" target="_blank" rel="noopener noreferrer" class="">#8439</a></li>
<li class="">Testoperator: add <code>duckdb-partitioned</code> query override by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8446" target="_blank" rel="noopener noreferrer" class="">#8446</a></li>
<li class="">Add a check to validate that results cache SWR and caching accelerator SWR are not both set. by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8445" target="_blank" rel="noopener noreferrer" class="">#8445</a></li>
<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 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="">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="">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>
</ul>]]></content>
        <author>
            <name>William Croxson</name>
            <uri>https://github.com/peasee</uri>
        </author>
        <category label="release" term="release"/>
        <category label="caching" term="caching"/>
        <category label="acceleration" term="acceleration"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="cayenne" term="cayenne"/>
        <category label="opentelemetry" term="opentelemetry"/>
        <category label="data-connector" term="data-connector"/>
        <category label="distributed query" term="distributed query"/>
        <category label="performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.10.0-rc.1 (Dec 2, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.10-rc.1</id>
        <link href="https://spiceai.org/blog/releases/v1.10-rc.1"/>
        <updated>2025-12-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.10.0-rc.1! ⚡]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.10.0-rc.1! ⚡</p>
<p>v1.10.0-rc1 is a release candidate for early testing of v1.10 features including an all new <code>caching</code> acceleration mode, <code>tiny_lfu</code> caching policy, a new DynamoDB Streams connector (Preview), improvements to the DynamoDB connector, faster distributed query execution, S3 connector improvements, and security hardening for v1.10.0-stable.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v1100-rc1">What's New in v1.10.0-rc1<a href="https://spiceai.org/blog/releases/v1.10-rc.1#whats-new-in-v1100-rc1" class="hash-link" aria-label="Direct link to What's New in v1.10.0-rc1" title="Direct link to What's New in v1.10.0-rc1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="caching-acceleration-mode-with-swr-and-tinylfu">Caching Acceleration Mode with SWR and TinyLFU<a href="https://spiceai.org/blog/releases/v1.10-rc.1#caching-acceleration-mode-with-swr-and-tinylfu" class="hash-link" aria-label="Direct link to Caching Acceleration Mode with SWR and TinyLFU" title="Direct link to Caching Acceleration Mode with SWR and TinyLFU" translate="no">​</a></h3>
<p>This release introduces a new <code>caching</code> <a href="https://spiceai.org/docs/components/data-accelerators" target="_blank" rel="noopener noreferrer" class="">acceleration mode</a> that implements the stale-while-revalidate (SWR) pattern using Data Accelerators such as DuckDB or Cayenne, enabling queries to return file-persisted cached results immediately while asynchronously refreshing data in the background. Combined with the new TinyLFU <a href="https://spiceai.org/docs/features/caching#cache-eviction-policies" target="_blank" rel="noopener noreferrer" class="">cache eviction policy</a>, Spice can now maintain higher cache hit rates while keeping memory usage predictable.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Stale-While-Revalidate (SWR)</strong>: Returns cached data immediately while refreshing in the background</li>
<li class=""><strong>Data Accelerator Support</strong>: Cached accelerators can persist data to disk using DuckDB, SQLite, or Cayenne file modes.</li>
<li class=""><strong>TinyLFU Cache Policy</strong>: Probabilistic cache admission policy that maintains high hit rates with minimal overhead</li>
<li class=""><strong>Predictable Memory Usage</strong>: Configurable memory limits with automatic eviction of less frequently used entries</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">caching</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql_results</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">eviction_policy</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tiny_lfu </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># default lru</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket/data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cached_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Persist cache to disk</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> caching</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_check_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10m</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">Data Acceleration Documentation</a> and <a href="https://spiceai.org/docs/features/caching" target="_blank" rel="noopener noreferrer" class="">Caching Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-streams-data-connector-in-preview">DynamoDB Streams Data Connector in Preview<a href="https://spiceai.org/blog/releases/v1.10-rc.1#dynamodb-streams-data-connector-in-preview" class="hash-link" aria-label="Direct link to DynamoDB Streams Data Connector in Preview" title="Direct link to DynamoDB Streams Data Connector in Preview" translate="no">​</a></h3>
<p>DynamoDB Connector now integrates with DynamoDB Streams which enables real-time streaming with support for both table bootstrapping and continuous change data capture (CDC). This connector automatically detects changes in DynamoDB tables and streams them into Spice for real-time query, search, and LLM-inference.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Real-Time CDC</strong>: Automatically captures inserts, updates, and deletes from DynamoDB tables</li>
<li class=""><strong>Table Bootstrapping</strong>: Initial full table load before streaming changes</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> orders_stream</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> changes</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/dynamodb#streams" target="_blank" rel="noopener noreferrer" class="">DynamoDB Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-accelerator-enhancements">Cayenne Accelerator Enhancements<a href="https://spiceai.org/blog/releases/v1.10-rc.1#cayenne-accelerator-enhancements" class="hash-link" aria-label="Direct link to Cayenne Accelerator Enhancements" title="Direct link to Cayenne Accelerator Enhancements" translate="no">​</a></h3>
<p>The <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne data accelerator</a> now supports:</p>
<ul>
<li class=""><strong>Sort Columns Configuration</strong>: Optimize inserts by pre-sorting data on specified columns for improved query performance</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket/data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sorted_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cayenne</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file_create</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sort_columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> timestamp</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain">region</span><br></span></code></pre></div></div>
<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="s3-connector-improvements">S3 Connector Improvements<a href="https://spiceai.org/blog/releases/v1.10-rc.1#s3-connector-improvements" class="hash-link" aria-label="Direct link to S3 Connector Improvements" title="Direct link to S3 Connector Improvements" translate="no">​</a></h3>
<p><strong>S3 Location Predicate Pruning</strong>: The S3 <a href="https://spiceai.org/docs/components/data-connectors/s3" target="_blank" rel="noopener noreferrer" class="">data connector</a> now supports location-based predicate pruning, dramatically reducing data scanned by pushing down predicates to S3 listing operations. This optimization is especially effective for partitioned datasets stored in S3.</p>
<p><strong>AWS S3 Tables Write Support</strong>: Full read/write capability for <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html" target="_blank" rel="noopener noreferrer" class="">AWS S3 Tables</a>, enabling fast integration with AWS's table format for S3.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/s3" target="_blank" rel="noopener noreferrer" class="">S3 Tables Data Connector Documentation</a> and <a href="https://spiceai.org/docs/components/data-connectors/glue" target="_blank" rel="noopener noreferrer" class="">Glue Data Connection Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="faster-distributed-query-execution">Faster Distributed Query Execution<a href="https://spiceai.org/blog/releases/v1.10-rc.1#faster-distributed-query-execution" class="hash-link" aria-label="Direct link to Faster Distributed Query Execution" title="Direct link to Faster Distributed Query Execution" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/features/distributed-query" target="_blank" rel="noopener noreferrer" class="">Distributed query</a> planning and execution have been significantly improved:</p>
<ul>
<li class=""><strong>Fixed executor registration</strong> in cluster mode for more reliable distributed deployments</li>
<li class=""><strong>Improved hostname resolution</strong> for Flight server binding, enabling better executor discovery</li>
<li class=""><strong>Distributed accelerator registration</strong>: Data accelerators now properly register in distributed mode</li>
<li class=""><strong>Optimized query planning</strong>: <code>DistributeFileScanOptimizer</code> improvements for faster planning with large datasets</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="search-improvements">Search Improvements<a href="https://spiceai.org/blog/releases/v1.10-rc.1#search-improvements" class="hash-link" aria-label="Direct link to Search Improvements" title="Direct link to Search Improvements" translate="no">​</a></h3>
<p><a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search</a> capabilities have been improved with several performance and reliability enhancements:</p>
<ul>
<li class=""><strong>Fixed FTS query blocking</strong>: Full-text search queries no longer block unnecessarily, improving query responsiveness</li>
<li class=""><strong>Optimized vector index operations</strong>: Eliminated unnecessary <code>list_vectors</code> calls for better performance</li>
<li class=""><strong>Improved limit pushdown</strong>: <code>IndexerExec</code> now properly handles limit pushdown for more efficient searches</li>
</ul>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security-hardening">Security Hardening<a href="https://spiceai.org/blog/releases/v1.10-rc.1#security-hardening" class="hash-link" aria-label="Direct link to Security Hardening" title="Direct link to Security Hardening" translate="no">​</a></h3>
<p>Multiple security improvements have been implemented:</p>
<ul>
<li class=""><strong>SQL identifier quoting</strong>: Hardened SQL identifier quoting across all connectors to prevent injection attacks</li>
<li class=""><strong>Token redaction</strong>: Sensitive tokens are now fully redacted in debug output to prevent credential leakage</li>
<li class=""><strong>Path traversal prevention</strong>: Fixed tar extraction to prevent path traversal vulnerabilities</li>
<li class=""><strong>Input sanitization</strong>: Added validation for <code>top_n_sample</code> order_by parsing</li>
<li class=""><strong>Improved credential handling</strong>: Improved credential management in Glue connector</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="developer-experience-improvements">Developer Experience Improvements<a href="https://spiceai.org/blog/releases/v1.10-rc.1#developer-experience-improvements" class="hash-link" aria-label="Direct link to Developer Experience Improvements" title="Direct link to Developer Experience Improvements" translate="no">​</a></h3>
<ul>
<li class=""><strong>Health probe metrics</strong>: Added health probe latency metrics for better observability</li>
<li class=""><strong>CLI improvements</strong>: Fixed <code>.clear history</code> command in the REPL to fully clear persisted history</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.10-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/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/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.10-rc.1#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.10-rc.1#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No major cookbook updates. The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> still offers 82+ recipes to help you prototype quickly.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.10-rc.1#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To try v1.10.0-rc1, 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade --version 1.10.0-rc1</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.10.0-rc1</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.10.0-rc1</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai --version 1.10.0-rc1</span><br></span></code></pre></div></div>
<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/blog/releases/v1.10-rc.1#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.10-rc.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Test-operator: Add tpcds_q8 to the default row-count validation skip list by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8185" target="_blank" rel="noopener noreferrer" class="">#8185</a></li>
<li class="">fix: Remove unwrap_used from test by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8212" target="_blank" rel="noopener noreferrer" class="">#8212</a></li>
<li class="">Run glue_iceberg_integration_test_catalog as part of main integration tests by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8222" target="_blank" rel="noopener noreferrer" class="">#8222</a></li>
<li class="">Add TPCH sf100 testoperator spicepods with dispatch by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8192" target="_blank" rel="noopener noreferrer" class="">#8192</a></li>
<li class="">Build with CPU native flags by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8224" target="_blank" rel="noopener noreferrer" class="">#8224</a></li>
<li class="">Make copilot check for empty copyright header by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8245" target="_blank" rel="noopener noreferrer" class="">#8245</a></li>
<li class="">fix: Apply assertion clippy in CI/Makefile only by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8229" target="_blank" rel="noopener noreferrer" class="">#8229</a></li>
<li class="">feat: Support running queries only in testoperator by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8211" target="_blank" rel="noopener noreferrer" class="">#8211</a></li>
<li class="">DuckDB query planning: aggregate pushdown by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8174" target="_blank" rel="noopener noreferrer" class="">#8174</a></li>
<li class="">install.sh improvements by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8252" target="_blank" rel="noopener noreferrer" class="">#8252</a></li>
<li class="">Fix <code>.clear history</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8254" target="_blank" rel="noopener noreferrer" class="">#8254</a></li>
<li class="">fix: Pushdown dynamic filters to partition scans by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8240" target="_blank" rel="noopener noreferrer" class="">#8240</a></li>
<li class="">Harden SQL identifier quoting in connectors by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8276" target="_blank" rel="noopener noreferrer" class="">#8276</a></li>
<li class="">Cayenne <code>sort_columns</code> on insert by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8091" target="_blank" rel="noopener noreferrer" class="">#8091</a></li>
<li class="">Redact token debug output by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8280" target="_blank" rel="noopener noreferrer" class="">#8280</a></li>
<li class="">fix: Cayenne configuration options by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8281" target="_blank" rel="noopener noreferrer" class="">#8281</a></li>
<li class="">Prevent path traversal in untar by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8284" target="_blank" rel="noopener noreferrer" class="">#8284</a></li>
<li class="">Fix cluster mode executor registration by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8292" target="_blank" rel="noopener noreferrer" class="">#8292</a></li>
<li class="">Unignore s3_vectors_kafka_stream test by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8289" target="_blank" rel="noopener noreferrer" class="">#8289</a></li>
<li class="">Post-release house keeping by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8293" target="_blank" rel="noopener noreferrer" class="">#8293</a></li>
<li class="">Improve generate_changelog script by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8273" target="_blank" rel="noopener noreferrer" class="">#8273</a></li>
<li class="">Acceleration mode <code>caching</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8237" target="_blank" rel="noopener noreferrer" class="">#8237</a></li>
<li class="">Sanitization and security checks by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7854" target="_blank" rel="noopener noreferrer" class="">#7854</a></li>
<li class="">Add health probe latency metric by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8300" target="_blank" rel="noopener noreferrer" class="">#8300</a></li>
<li class="">Add distributed registration for data accelerators by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8299" target="_blank" rel="noopener noreferrer" class="">#8299</a></li>
<li class="">Pass IndexedTableProvider down in 'changes_stream' and 'append_stream' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8295" target="_blank" rel="noopener noreferrer" class="">#8295</a></li>
<li class="">Add <code>dynamodb-streams</code> crate by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8283" target="_blank" rel="noopener noreferrer" class="">#8283</a></li>
<li class="">Distributed query: resolve executor hostname when determining Flight server binding by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8304" target="_blank" rel="noopener noreferrer" class="">#8304</a></li>
<li class="">Return computed embeddings from index for partitioned S3Vectors by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8306" target="_blank" rel="noopener noreferrer" class="">#8306</a></li>
<li class="">[DDB Streams] Skeleton for DynamoDB Streams by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8296" target="_blank" rel="noopener noreferrer" class="">#8296</a></li>
<li class="">DistributeFileScanOptimizer: Improve planning performance by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8305" target="_blank" rel="noopener noreferrer" class="">#8305</a></li>
<li class="">feat: Add an ExactLeftAccumulator implementation by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8302" target="_blank" rel="noopener noreferrer" class="">#8302</a></li>
<li class="">deps: Upgrade Vortex to 0.56 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8311" target="_blank" rel="noopener noreferrer" class="">#8311</a></li>
<li class="">DynamoDB table bootstrapping + streaming by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8312" target="_blank" rel="noopener noreferrer" class="">#8312</a></li>
<li class="">Avoid calling S3Vector <code>list_vectors</code> (or equivalent) when indexing into <code>VectorIndex</code>s by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8282" target="_blank" rel="noopener noreferrer" class="">#8282</a></li>
<li class="">Add on_conflict testing support to append benchmark by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8314" target="_blank" rel="noopener noreferrer" class="">#8314</a></li>
<li class="">docker: Add valid home directory to fix duckdb extension loading issue by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8318" target="_blank" rel="noopener noreferrer" class="">#8318</a></li>
<li class="">Add GH Workflow to run Append benchmark test by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8321" target="_blank" rel="noopener noreferrer" class="">#8321</a></li>
<li class="">Exclude MySQL SF100 from test-operator dispatch by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8320" target="_blank" rel="noopener noreferrer" class="">#8320</a></li>
<li class="">feat: Update clippy lints by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8317" target="_blank" rel="noopener noreferrer" class="">#8317</a></li>
<li class="">Add S3 location predicate pruning to listing connector by <a href="https://github.com/spiceai/spiceai/pull/8319" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a></li>
<li class="">Review feedback for caching mode accelerator by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8326" target="_blank" rel="noopener noreferrer" class="">#8326</a></li>
<li class="">Also include Dockerfile home changes for release build by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8327" target="_blank" rel="noopener noreferrer" class="">#8327</a></li>
<li class="">Change communication channel from Discord to Slack by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8330" target="_blank" rel="noopener noreferrer" class="">#8330</a></li>
<li class="">Replace Discord link with Slack link in README by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8331" target="_blank" rel="noopener noreferrer" class="">#8331</a></li>
<li class="">fix(glue): Prevent OpenDAL from automatic loading of AWS credentials from environment by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8337" target="_blank" rel="noopener noreferrer" class="">#8337</a></li>
<li class="">Block on index read for FTS queries by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8339" target="_blank" rel="noopener noreferrer" class="">#8339</a></li>
<li class="">Fix search query provider by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8343" target="_blank" rel="noopener noreferrer" class="">#8343</a></li>
<li class="">Support for writing into AWS S3 Tables by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8344" target="_blank" rel="noopener noreferrer" class="">#8344</a></li>
<li class="">Acceleration file_create mode by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8347" target="_blank" rel="noopener noreferrer" class="">#8347</a></li>
<li class="">Don't block on lock in FTS query path by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8348" target="_blank" rel="noopener noreferrer" class="">#8348</a></li>
<li class="">feat: Add an optimizer rule to replace join accumulator for Cayenne by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8316" target="_blank" rel="noopener noreferrer" class="">#8316</a></li>
<li class="">S3 Vectors limit updates by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8352" target="_blank" rel="noopener noreferrer" class="">#8352</a></li>
<li class="">Sanitize top_n_sample order_by parsing by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8356" target="_blank" rel="noopener noreferrer" class="">#8356</a></li>
<li class="">Update version to v1.10.0-rc.1 by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/8362" target="_blank" rel="noopener noreferrer" class="">#8362</a></li>
<li class="">Improve <code>IndexerExec</code> to properly handle limit pushdown by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8366" target="_blank" rel="noopener noreferrer" class="">#8366</a></li>
<li class="">Fix Cayenne partition_by metadata flaky integration test by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8367" target="_blank" rel="noopener noreferrer" class="">#8367</a></li>
<li class="">Rework caching accelerator to use the <code>stale-while-revalidate</code> pattern. by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8365" target="_blank" rel="noopener noreferrer" class="">#8365</a></li>
<li class="">Add TinyLFU caching policy by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8370" target="_blank" rel="noopener noreferrer" class="">#8370</a></li>
</ul>]]></content>
        <author>
            <name>David Stancu</name>
            <uri>https://github.com/mach-kernel</uri>
        </author>
        <category label="release" term="release"/>
        <category label="caching" term="caching"/>
        <category label="acceleration" term="acceleration"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="cayenne" term="cayenne"/>
        <category label="data-connector" term="data-connector"/>
        <category label="distributed query" term="distributed query"/>
        <category label="performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.9.1 (Nov 24, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.9.1</id>
        <link href="https://spiceai.org/blog/releases/v1.9.1"/>
        <updated>2025-11-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.9.1!🔥]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.9.1!🔥</p>
<p>v1.9.1 introduces <strong>Amazon Bedrock Nova 2 Multimodal embeddings support</strong> with high-dimensional vectors up to 3,072 dimensions and purpose-optimized embeddings for semantic search and retrieval operations, <strong>DynamoDB timestamp filter pushdown</strong> for more efficient append-mode acceleration with configurable time formatting, <strong>HTTP Data Connector health probe configuration</strong> for improved endpoint validation reliability, and <strong>Spice .NET SDK v0.2</strong> with expanded .NET version support and updated gRPC libraries. This release focuses on bug fixes, stability, and performance improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="amazon-bedrock-nova-2-multimodal-embeddings">Amazon Bedrock Nova 2 Multimodal embeddings<a href="https://spiceai.org/blog/releases/v1.9.1#amazon-bedrock-nova-2-multimodal-embeddings" class="hash-link" aria-label="Direct link to Amazon Bedrock Nova 2 Multimodal embeddings" title="Direct link to Amazon Bedrock Nova 2 Multimodal embeddings" translate="no">​</a></h2>
<p>Spice now supports the Amazon Nova 2 Multimodal embeddings models via the Bedrock models provider, enabling high-quality text embeddings for semantic search and vector similarity operations. The Nova embeddings model offers configurable dimensions and advanced features like truncation modes and embedding purpose optimization.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>High-Dimensional Embeddings</strong>: Support for up to 3,072 dimensions for rich semantic representations</li>
<li class=""><strong>Configurable Truncation</strong>: Control how input text is truncated when exceeding token limits (<code>START</code>, <code>END</code>, or <code>NONE</code>)</li>
<li class=""><strong>Purpose Optimization</strong>: Optimize embeddings for specific use cases (<code>GENERIC_INDEX</code>, <code>GENERIC_RETRIEVAL</code>, or <code>CLASSIFICATION</code>)</li>
<li class=""><strong>Multimodal Model</strong>: Leverages Amazon's Nova 2 multimodal architecture for consistent embeddings across different content types</li>
</ul>
<p>Example <code>spicepod.yml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">amazon.nova</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">2</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">multimodal</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">v1</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> nova_embeddings</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dimensions</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'3072'</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Required: Output dimensions</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">truncation_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> START </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Optional: START, END, or NONE (default: NONE)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embedding_purpose</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> GENERIC_RETRIEVAL </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Optional. GENERIC_INDEX is default</span><br></span></code></pre></div></div>
<p>For more details on the embedding parameters and configuration options, refer to the <a href="https://docs.aws.amazon.com/nova/latest/userguide/embeddings-schema.html" target="_blank" rel="noopener noreferrer" class="">Amazon Nova Embeddings Documentation</a> and the <a href="https://spiceai.org/docs/features/embeddings" target="_blank" rel="noopener noreferrer" class="">Spice Embeddings Documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-timestamp-filter-pushdown">DynamoDB Timestamp Filter Pushdown<a href="https://spiceai.org/blog/releases/v1.9.1#dynamodb-timestamp-filter-pushdown" class="hash-link" aria-label="Direct link to DynamoDB Timestamp Filter Pushdown" title="Direct link to DynamoDB Timestamp Filter Pushdown" translate="no">​</a></h2>
<p>The DynamoDB Data Connector now supports timestamp filter pushdown, enabling more efficient append-mode acceleration refreshes by pushing timestamp filters directly to DynamoDB queries. Since DynamoDB stores timestamps as strings rather than native datetime types, this feature includes configurable timestamp formatting to ensure correct parsing and filtering.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class="">Filters on timestamp columns are now pushed down to DynamoDB, reducing data transfer and improving query performance</li>
<li class="">Support for Go-style datetime formatting patterns to handle various timestamp string formats</li>
<li class="">Uses ISO 8601 format by default when no custom format is specified</li>
</ul>
<p>Example <code>spicepod.yml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">time_column</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> created_at</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">time_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> timestamptz</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">time_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 2006</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">01</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">02T15</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">04</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">05.000Z07</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">00</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> append</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/dynamodb" target="_blank" rel="noopener noreferrer" class="">DynamoDB Data Connector Documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="http-data-connector-health-probe-configuration">HTTP Data Connector Health Probe Configuration<a href="https://spiceai.org/blog/releases/v1.9.1#http-data-connector-health-probe-configuration" class="hash-link" aria-label="Direct link to HTTP Data Connector Health Probe Configuration" title="Direct link to HTTP Data Connector Health Probe Configuration" translate="no">​</a></h2>
<p>The HTTP Data Connector now supports configurable health probe paths for endpoint validation. Instead of using a random non-existent path, the system can now validate endpoints using a user-specified path, improving flexibility and reliability for health checks.</p>
<p>Example <code>spicepod.yml</code> 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">health_probe</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /health</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">check</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/https" target="_blank" rel="noopener noreferrer" class="">HTTP Data Connector Documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-net-sdk-v02">Spice .NET SDK v0.2<a href="https://spiceai.org/blog/releases/v1.9.1#spice-net-sdk-v02" class="hash-link" aria-label="Direct link to Spice .NET SDK v0.2" title="Direct link to Spice .NET SDK v0.2" translate="no">​</a></h2>
<p>The Spice .NET SDK has been upgraded with expanded .NET version support, custom User-Agent configuration, and updated gRPC libraries: <a href="https://github.com/spiceai/spice-dotnet/releases/tag/v0.2.0" target="_blank" rel="noopener noreferrer" class="">spice-dotnet v0.2.0</a>. The SDK is available on <a href="https://www.nuget.org/packages/SpiceAI" target="_blank" rel="noopener noreferrer" class="">NuGet</a>.</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>Expanded .NET Support</strong>: Now supports .NET Standard 2.0, .NET Core 8.0, 9.0, and 10.0.</li>
<li class=""><strong>Custom User-Agent</strong>: Configure custom User-Agent headers for client identification and telemetry.</li>
<li class=""><strong>Updated gRPC Libraries</strong>: Upgraded gRPC dependencies and <code>netstandard</code> for improved performance and reliability</li>
</ul>
<p><strong>Upgrade Example</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">dotnet add package SpiceAI --version 0.2.0</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://github.com/spiceai/spice-dotnet/blob/trunk/README.md" target="_blank" rel="noopener noreferrer" class="">.NET SDK Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.9.1#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Fixed view loading to respect topological order, preventing dependency resolution errors.</li>
<li class=""><strong>Reliability</strong>: Migrated from deprecated <code>trust_dns_resolver</code> to <code>hickory_resolver</code> for improved DNS resolution reliability.</li>
<li class=""><strong>Security</strong>: Fixed arbitrary file access vulnerability during archive extraction ("Zip Slip") to prevent potential security exploits.</li>
<li class=""><strong>Distributed Query</strong>: Fixed object store initialization across scheduler/executor gap, improving reliability for distributed query execution.</li>
<li class=""><strong>Distributed Query</strong>: Optimized query routing by preventing <code>runtime.*</code> schema queries from being sent to the scheduler, improving performance for metadata queries.</li>
<li class=""><strong>Performance</strong>: Added Blake3 and xxHash support with xxh3_64 as the default caching hashing algorithm for improved cache and query performance.</li>
<li class=""><strong>Performance</strong>: Optimized default Zstd compression level to 6 for better balance between compression ratio and speed.</li>
<li class=""><strong>UX</strong>: Improved dataset loading output with clearer progress indicators and status messages.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.9.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.9.1#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.9.1#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p>No major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.9.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.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.9.1</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.9.1#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.9.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">fix integration tests: order by the query to make snapshots deterministic by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8198" target="_blank" rel="noopener noreferrer" class="">#8198</a></li>
<li class="">Add health probe override by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8236" target="_blank" rel="noopener noreferrer" class="">#8236</a></li>
<li class="">Use Moka optionally_get_with for SWR single-in-flight semantics by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8231" target="_blank" rel="noopener noreferrer" class="">#8231</a></li>
<li class="">fix: Arbitrary file access during archive extraction ("Zip Slip") by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8242" target="_blank" rel="noopener noreferrer" class="">#8242</a></li>
<li class="">Migrate trust_dns_resolver to hickory_resolver by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8243" target="_blank" rel="noopener noreferrer" class="">#8243</a></li>
<li class="">fix: Deny assert macros in non-test code by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8223" target="_blank" rel="noopener noreferrer" class="">#8223</a></li>
<li class="">Distributed query: Object store initialization across scheduler/executor gap, misc bugfixes &amp; improvements by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8009" target="_blank" rel="noopener noreferrer" class="">#8009</a></li>
<li class="">Add Blake3, enable xxHash, set xxh3_64 as default, add bench by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8157" target="_blank" rel="noopener noreferrer" class="">#8157</a></li>
<li class="">Make cache zstd default compression level 6 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8234" target="_blank" rel="noopener noreferrer" class="">#8234</a></li>
<li class="">Use seed for xxh3 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8232" target="_blank" rel="noopener noreferrer" class="">#8232</a></li>
<li class="">DynamoDB Timestamp Filter Pushdown by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8235" target="_blank" rel="noopener noreferrer" class="">#8235</a></li>
<li class="">Add ready_wait for mongo-arrow benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8246" target="_blank" rel="noopener noreferrer" class="">#8246</a></li>
<li class="">Add support for <code>amazon.nova-2-multimodal-embeddings-v1:0</code> by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8225" target="_blank" rel="noopener noreferrer" class="">#8225</a></li>
<li class="">Improve the output of dataset loading by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8256" target="_blank" rel="noopener noreferrer" class="">#8256</a></li>
<li class="">Load views in topological order by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8255" target="_blank" rel="noopener noreferrer" class="">#8255</a></li>
<li class="">Distributed query: Do not send <code>runtime.*</code> schema queries to scheduler by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8271" target="_blank" rel="noopener noreferrer" class="">#8271</a></li>
<li class="">Remove input length check for Nova model. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8270" target="_blank" rel="noopener noreferrer" class="">#8270</a></li>
</ul>]]></content>
        <author>
            <name>Viktor Yershov</name>
            <uri>https://github.com/krinart</uri>
        </author>
        <category label="release" term="release"/>
        <category label="bedrock" term="bedrock"/>
        <category label="embeddings" term="embeddings"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="data-connector" term="data-connector"/>
        <category label="sdk" term="sdk"/>
        <category label="performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.9.0 (Nov 19, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.9.0</id>
        <link href="https://spiceai.org/blog/releases/v1.9.0"/>
        <updated>2025-11-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.9.0-stable!]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.9.0-stable! <!-- -->🌶</p>
<p>v1.9.0-stable introduces <strong>Spice Cayenne</strong>, a new high-performance data accelerator built on the <strong>Vortex</strong> columnar format that delivers better than DuckDB performance without single-file scaling limitations, and a preview of <strong>Multi-Node Distributed Query</strong> based on Apache Ballista. v1.9.0 also upgrades to DataFusion v50, DuckDB v1.4.2, and Delta-Kernel v0.16 for even higher query performance, expands search capabilities with full-text search on views and multi-column embeddings, and delivers many additional features and improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v190">What's New in v1.9.0<a href="https://spiceai.org/blog/releases/v1.9.0#whats-new-in-v190" class="hash-link" aria-label="Direct link to What's New in v1.9.0" title="Direct link to What's New in v1.9.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-data-accelerator-beta">Cayenne Data Accelerator (Beta)<a href="https://spiceai.org/blog/releases/v1.9.0#cayenne-data-accelerator-beta" class="hash-link" aria-label="Direct link to Cayenne Data Accelerator (Beta)" title="Direct link to Cayenne Data Accelerator (Beta)" translate="no">​</a></h3>
<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">Data Accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex columnar format</a>, a Linux Foundation project. Cayenne delivers query and ingestion performance better than DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>
<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing data in Vortex's compressed columnar format. This architecture provides:</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>
<li class=""><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>
<li class=""><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>
<li class=""><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>
<li class=""><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>
<li class=""><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> accelerated_data_30d</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cayenne</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> append</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention_sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '30 days'</span><br></span></code></pre></div></div>
<p>Note, the Cayenne Data Accelerator is in <a href="https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/beta.md" target="_blank" rel="noopener noreferrer" class="">Beta</a> with limitations.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne Documentation</a>, the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex project</a>, and the <a href="https://duckdb.org/2025/05/27/ducklake" target="_blank" rel="noopener noreferrer" class="">DuckLake announcement</a> that partly inspired this design.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="multi-node-distributed-query-preview">Multi-Node Distributed Query (Preview)<a href="https://spiceai.org/blog/releases/v1.9.0#multi-node-distributed-query-preview" class="hash-link" aria-label="Direct link to Multi-Node Distributed Query (Preview)" title="Direct link to Multi-Node Distributed Query (Preview)" translate="no">​</a></h3>
<p><strong>Apache Ballista Integration</strong>: Spice now supports distributed query execution based on <a href="https://github.com/apache/datafusion-ballista" target="_blank" rel="noopener noreferrer" class="">Apache Ballista</a>, enabling distributed queries across multiple executor nodes for improved performance on large datasets. This feature is in <strong>preview</strong> in v1.9.0.</p>
<p><strong>Architecture</strong>:</p>
<p>A distributed Spice cluster consists of:</p>
<ul>
<li class=""><strong>Scheduler</strong>: Responsible for distributed query planning and work queue management for the executor fleet</li>
<li class=""><strong>Executors</strong>: One or more nodes responsible for running physical query plans</li>
</ul>
<p><strong>Getting Started</strong>:</p>
<p>Start a scheduler instance using an existing Spicepod. The scheduler is the only spiced instance that needs to be configured:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Start scheduler (note the flight bind address override if you want it reachable outside localhost)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spiced --cluster-mode scheduler </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--flight</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">0.0</span><span class="token plain">.0.0:50051</span><br></span></code></pre></div></div>
<p>Start one or more executors configured with the scheduler's flight URI:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Start executor (automatically selects a free port if 50051 is taken)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spiced --cluster-mode executor --scheduler-url spiced://localhost:50051</span><br></span></code></pre></div></div>
<p><strong>Query Execution</strong>:</p>
<p>Queries run through the scheduler will now show a <code>distributed_plan</code> in <code>EXPLAIN</code> output, demonstrating how the query is distributed across executor nodes:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">EXPLAIN</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">count</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> my_dataset</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p><strong>Current Limitations</strong>:</p>
<ul>
<li class="">Accelerated datasets are currently <strong>not supported</strong>. This feature is designed for querying partitioned data lake formats (Parquet, Delta Lake, Iceberg, etc.)</li>
<li class="">The feature is in <strong>preview</strong> and may have stability or performance limitations</li>
<li class="">Specific acceleration support is planned for future releases</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="datafusion-v50-upgrade">DataFusion v50 Upgrade<a href="https://spiceai.org/blog/releases/v1.9.0#datafusion-v50-upgrade" class="hash-link" aria-label="Direct link to DataFusion v50 Upgrade" title="Direct link to DataFusion v50 Upgrade" translate="no">​</a></h3>
<p>Spice.ai is built on the <a href="https://datafusion.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion</a> query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>
<p><strong>Performance Improvements 🚀</strong>:</p>
<ul>
<li class="">
<p><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</p>
</li>
<li class="">
<p><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</p>
</li>
</ul>
<p><strong>Apache Spark Compatible Functions</strong>: Added support for Spark-compatible functions including <code>array</code>, <code>bit_get/bit_count</code>, <code>bitmap_count</code>, <code>crc32/sha1</code>, <code>date_add/date_sub</code>, <code>if</code>, <code>last_day</code>, <code>like/ilike</code>, <code>luhn_check</code>, <code>mod/pmod</code>, <code>next_day</code>, <code>parse_url</code>, <code>rint</code>, and <code>width_bucket</code>.</p>
<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>
<p>See the <a href="https://github.com/apache/datafusion/releases" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion 50.0.3 Release</a> for more details.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-v142-upgrade-and-accelerator-improvements">DuckDB v1.4.2 Upgrade and Accelerator Improvements<a href="https://spiceai.org/blog/releases/v1.9.0#duckdb-v142-upgrade-and-accelerator-improvements" class="hash-link" aria-label="Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements" title="Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements" translate="no">​</a></h3>
<p><strong>DuckDB v1.4.2</strong>: DuckDB has been upgraded to v1.4.2, which includes several <a href="https://duckdb.org/2024/09/16/announcing-duckdb-140#performance-and-optimizations" target="_blank" rel="noopener noreferrer" class="">performance optimizations</a>.</p>
<p><strong>Composite ART Index Support</strong>: DuckDB in Spice now supports composite (multi-column) Adaptive Radix Tree (ART) indexes for accelerated table scans. When queries filter on multiple columns fully covered by a composite index, the optimizer automatically uses index scans instead of full table scans, delivering significant performance improvements for selective queries.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">indexes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">'(region, product_id)'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Performance example with composite index on 7.5M rows:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Without index: 0.282s</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- With composite index (region, product_id): 0.037s</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Performance improvement: 7.6x faster with composite index</span><br></span></code></pre></div></div>
<p><strong>DuckDB Intermediate Materialization</strong>: Queries with indexes now use intermediate materialization (<code>WITH ... AS MATERIALIZED</code>) to leverage faster index scans. Currently supported for non-federated queries (<code>query_federation: disabled</code>) against a single table with indexes only. When predicates cover more columns than the index, the optimizer rewrites queries to first materialize index-filtered results, then apply remaining predicates. This optimization can deliver significant performance improvements for selective queries.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//sales_data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">query_federation</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> disabled </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Required currently for intermediate materialization</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">indexes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">'(region, product_id)'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Performance 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Query with indexed columns (region, product_id) plus additional filter (amount)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> amount </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1000</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Optimized execution time: 0.031s (with intermediate materialization)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Standard execution time: 0.108s (without optimization)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Performance improvement: ~3.5x faster</span><br></span></code></pre></div></div>
<p>The optimizer automatically rewrites the query to:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">WITH</span><span class="token plain"> _intermediate_materialize </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> MATERIALIZED </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> _intermediate_materialize </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> amount </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1000</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>
<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>
<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my_bucket/large_table/</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> partitioned_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '7 days'</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-accelerators/duckdb" target="_blank" rel="noopener noreferrer" class="">DuckDB Data Accelerator Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="http-data-connector">HTTP Data Connector<a href="https://spiceai.org/blog/releases/v1.9.0#http-data-connector" class="hash-link" aria-label="Direct link to HTTP Data Connector" title="Direct link to HTTP Data Connector" translate="no">​</a></h3>
<ul>
<li class="">
<p><strong>Querying endpoints as tables</strong>: The HTTP/HTTPS Data Connectors now supports querying HTTP endpoints directly as tables in SQL queries with dynamic filters. This feature transforms REST APIs into queryable data sources, making it easy to integrate external service data.</p>
</li>
<li class="">
<p>Query HTTP endpoint that returns structured data (JSON, CSV, etc.) as if it were a database table</p>
</li>
<li class="">
<p>Configurable retry logic, timeouts, and POST request support for more complex API interactions</p>
</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">max_retries</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">3</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">client_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">allowed_request_paths</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /search/people</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">request_query_filters</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">request_body_filters</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Example SQL query:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> request_path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> request_query</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> request_path </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/search/people'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_query </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'q=michael'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>If a <code>request_body</code> is supplied it will be posted to the endpoint:</p>
<p>Example SQL query:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> request_path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> request_query</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> request_path </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/search/people'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_query </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'q=michael'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_body </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{"name": "michael"}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>HTTP endpoints can be accelerated using <code>refresh_sql</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">allowed_request_paths</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /search/people</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">request_query_filters</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">request_body_filters</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> full</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">|</span><span class="token scalar string" style="color:hsl(119, 34%, 47%)"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        SELECT request_path, request_query, content </span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        FROM tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        WHERE request_path = '/search/people'</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">          AND request_query IN ('q=michael', 'q=luke')</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/https" target="_blank" rel="noopener noreferrer" class="">HTTP Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-data-connector-improvements">DynamoDB Data Connector Improvements<a href="https://spiceai.org/blog/releases/v1.9.0#dynamodb-data-connector-improvements" class="hash-link" aria-label="Direct link to DynamoDB Data Connector Improvements" title="Direct link to DynamoDB Data Connector Improvements" translate="no">​</a></h3>
<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> ddb_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">scan_segments</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/dynamodb" target="_blank" rel="noopener noreferrer" class="">DynamoDB Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="s3-data-connector-improvements">S3 Data Connector Improvements<a href="https://spiceai.org/blog/releases/v1.9.0#s3-data-connector-improvements" class="hash-link" aria-label="Direct link to S3 Data Connector Improvements" title="Direct link to S3 Data Connector Improvements" translate="no">​</a></h3>
<p><strong>S3 Versioning Support</strong>: Spice now supports <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html" target="_blank" rel="noopener noreferrer" class="">S3 Versioning</a> for all connectors using object-store (S3, Delta Lake, etc.), ensuring range reads over versioned files are atomically correct. When S3 versioning is enabled, Spice automatically tracks version IDs during file discovery and uses them for all subsequent range reads, preventing inconsistencies from concurrent file modifications.</p>
<p><strong>Current limitations</strong>:</p>
<ul>
<li class="">Multi-file connections (e.g., partitioned datasets) do not yet support version tracking across all files</li>
<li class="">Version tracking is automatic when S3 versioning is enabled on the bucket</li>
</ul>
<p><strong>S3 Single-File Refresh Skipping</strong>: Spice now optimizes S3 single-file dataset refreshes by caching file metadata (ETag, Version ID, size, timestamp) and skipping unnecessary data fetches when the underlying file hasn't changed. This optimization dramatically reduces bandwidth usage and improves refresh performance for scenarios where data doesn't change frequently. The feature is enabled by default for accelerated S3 single-file datasets and includes metrics tracking for skipped refreshes.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket/data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_check_interval</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></span></code></pre></div></div>
<p>When the file's metadata hasn't changed between refresh checks, Spice will skip the data fetch entirely, logging:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Skipping refresh for dataset 's3_data': file metadata unchanged</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/s3" target="_blank" rel="noopener noreferrer" class="">S3 Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="search--embeddings-enhancements">Search &amp; Embeddings Enhancements<a href="https://spiceai.org/blog/releases/v1.9.0#search--embeddings-enhancements" class="hash-link" aria-label="Direct link to Search &amp; Embeddings Enhancements" title="Direct link to Search &amp; Embeddings Enhancements" translate="no">​</a></h3>
<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>
<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>
<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">views</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> aggregated_reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> SELECT review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> review_text FROM reviews WHERE rating </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">&gt;</span><span class="token plain"> 4</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">column</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> review_text</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">model</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">text</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embedding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">small</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/search" target="_blank" rel="noopener noreferrer" class="">Search Documentation</a> and <a href="https://spiceai.org/docs/features/embeddings" target="_blank" rel="noopener noreferrer" class="">Embeddings Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dedicated-query-thread-pool-now-enabled-by-default">Dedicated Query Thread Pool (Now Enabled by Default)<a href="https://spiceai.org/blog/releases/v1.9.0#dedicated-query-thread-pool-now-enabled-by-default" class="hash-link" aria-label="Direct link to Dedicated Query Thread Pool (Now Enabled by Default)" title="Direct link to Dedicated Query Thread Pool (Now Enabled by Default)" translate="no">​</a></h3>
<p><strong>Dedicated Query Thread Pool</strong>: Query execution and accelerated refreshes now run on their own dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health checks fast and avoiding unnecessary Kubernetes pod restarts under load.</p>
<p>This feature was opt-in in previous releases and is now <strong>enabled by default</strong>. To disable it and revert to the previous behavior, add the following spicepod.yaml configuration:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dedicated_thread_pool</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> none</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/reference/spicepod/runtime" target="_blank" rel="noopener noreferrer" class="">Runtime Configuration Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-performance-optimizations">Query Performance Optimizations<a href="https://spiceai.org/blog/releases/v1.9.0#query-performance-optimizations" class="hash-link" aria-label="Direct link to Query Performance Optimizations" title="Direct link to Query Performance Optimizations" translate="no">​</a></h3>
<p><strong>Stale-While-Revalidate Cache Control</strong>: Query results now support "stale-while-revalidate" cache control, allowing stale cached data to be served immediately while asynchronously refreshing the cache entry in the background. This improves response times for frequently-accessed queries while maintaining data freshness. Requires cache key type to be set to "sql (raw)" for proper operation.</p>
<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>
<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-result-caching-compressed-encoding-stale-while-revalidate-cache-control">Query Result Caching: Compressed Encoding, Stale-While-Revalidate Cache Control<a href="https://spiceai.org/blog/releases/v1.9.0#query-result-caching-compressed-encoding-stale-while-revalidate-cache-control" class="hash-link" aria-label="Direct link to Query Result Caching: Compressed Encoding, Stale-While-Revalidate Cache Control" title="Direct link to Query Result Caching: Compressed Encoding, Stale-While-Revalidate Cache Control" translate="no">​</a></h3>
<p><strong>Zstd Compression Encoding</strong>: Query result caching now supports optional <a href="https://facebook.github.io/zstd/" target="_blank" rel="noopener noreferrer" class="">Zstandard (zstd)</a> compression encoding to reduce memory usage for cached query results. This is particularly beneficial for large result sets, reducing cache memory footprint while maintaining fast decompression times. Encoding can be configured via the <code>encoding</code> parameter with options <code>none</code> (default) or <code>zstd</code>.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">caching</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql_results</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">max_size</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 128MiB</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">item_ttl</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 1m</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">encoding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> zstd </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Enable zstd compression</span><br></span></code></pre></div></div>
<p><strong>HTTP Cache-Control Support</strong>: The query result cache now supports the <code>stale-while-revalidate</code> <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#stale-while-revalidate" target="_blank" rel="noopener noreferrer" class="">Cache-Control directive</a>, enabling faster response times by serving stale cached results immediately while asynchronously refreshing the cache in the background. This feature is particularly useful for applications that can tolerate slightly stale data in exchange for improved performance.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">caching</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql_results</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">max_size</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 128MiB</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">item_ttl</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 1m</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">stale_while_revalidate_ttl</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 1m </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># serve stale items for up to 1 minute after `item_ttl` expires</span><br></span></code></pre></div></div>
<p><strong>How it works</strong>:</p>
<p>When a cache entry is stale but within the <code>stale-while-revalidate</code> window, Spice will:</p>
<ol>
<li class="">Immediately return the stale cached result to the client</li>
<li class="">Asynchronously re-execute the query in the background to refresh the cache</li>
<li class="">Future requests will use the refreshed data</li>
</ol>
<p><strong>Configuration</strong>:</p>
<p>Use the <code>Cache-Control</code> HTTP header with the <code>stale-while-revalidate</code> directive:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Cache-Control: max-age=300, stale-while-revalidate=60</span><br></span></code></pre></div></div>
<p>This configuration caches results for 5 minutes (300 seconds), and allows serving stale results for an additional 60 seconds while refreshing in the background.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li class="">Must use plan or raw SQL cache keys (set <code>cache_key_type</code> to <code>sql</code> or <code>plan</code> in results_caching configuration)</li>
<li class="">Background revalidation re-executes queries through the normal query path</li>
<li class="">Timestamp tracking automatically determines cache entry age for staleness checks</li>
</ul>
<p>Example configuration via HTTP header:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">GET /v1/sql</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Cache-Control: max-age=600, stale-while-revalidate=120</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">X-Cache-Key-Type: sql</span><br></span></code></pre></div></div>
<p>This feature improves application responsiveness while ensuring data freshness through background updates.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/features/caching" target="_blank" rel="noopener noreferrer" class="">Results Caching Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security--reliability-improvements">Security &amp; Reliability Improvements<a href="https://spiceai.org/blog/releases/v1.9.0#security--reliability-improvements" class="hash-link" aria-label="Direct link to Security &amp; Reliability Improvements" title="Direct link to Security &amp; Reliability Improvements" translate="no">​</a></h3>
<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>
<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>
<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>
<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="aws-authentication-improvements">AWS Authentication Improvements<a href="https://spiceai.org/blog/releases/v1.9.0#aws-authentication-improvements" class="hash-link" aria-label="Direct link to AWS Authentication Improvements" title="Direct link to AWS Authentication Improvements" translate="no">​</a></h3>
<p><strong>Improved Credential Retry Logic</strong>: AWS SDK credential initialization has been significantly improved with more robust retry logic and better error handling. The system now automatically retries transient credential resolution failures using Fibonacci backoff, allowing Spice to tolerate extended AWS outages (up to ~48 hours) without manual intervention.</p>
<p><strong>Key features</strong>:</p>
<ul>
<li class=""><strong>Automatic retry with backoff</strong>: Implements Fibonacci backoff for transient credential failures (network issues, temporary AWS service disruptions)</li>
<li class=""><strong>Better error handling</strong>: Distinguishes between retryable errors (connector errors) and non-retryable errors (misconfiguration)</li>
<li class=""><strong>Unauthenticated access support</strong>: Properly supports unauthenticated access to public S3 buckets without requiring credentials</li>
<li class=""><strong>Improved error messages</strong>: Provides detailed logging with attempt numbers, retry intervals, and error context for better troubleshooting</li>
</ul>
<p>The improvements ensure more reliable AWS service integration, particularly in environments with intermittent network connectivity or during AWS service degradations.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="observability--tracing">Observability &amp; Tracing<a href="https://spiceai.org/blog/releases/v1.9.0#observability--tracing" class="hash-link" aria-label="Direct link to Observability &amp; Tracing" title="Direct link to Observability &amp; Tracing" translate="no">​</a></h3>
<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>
<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="git-data-connector-alpha">Git Data Connector (Alpha)<a href="https://spiceai.org/blog/releases/v1.9.0#git-data-connector-alpha" class="hash-link" aria-label="Direct link to Git Data Connector (Alpha)" title="Direct link to Git Data Connector (Alpha)" translate="no">​</a></h3>
<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//github.com/myorg/myrepo</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git_metrics</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> csv</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/git" target="_blank" rel="noopener noreferrer" class="">Git Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-java-sdk-040">Spice Java SDK 0.4.0<a href="https://spiceai.org/blog/releases/v1.9.0#spice-java-sdk-040" class="hash-link" aria-label="Direct link to Spice Java SDK 0.4.0" title="Direct link to Spice Java SDK 0.4.0" translate="no">​</a></h3>
<p>The Spice Java SDK has been upgraded with support for configurable Arrow memory limit: <a href="https://github.com/spiceai/spice-java/releases/tag/v0.4.0" target="_blank" rel="noopener noreferrer" class="">spice-java v0.4.0</a></p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">SpiceClient client = SpiceClient.builder()</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    .withArrowMemoryLimitMB(1024) // 1GB limit</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    .build();</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://github.com/spiceai/spice-java/blob/trunk/README.md" target="_blank" rel="noopener noreferrer" class="">Java SDK Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cli-improvements">CLI Improvements<a href="https://spiceai.org/blog/releases/v1.9.0#cli-improvements" class="hash-link" aria-label="Direct link to CLI Improvements" title="Direct link to CLI Improvements" translate="no">​</a></h3>
<p><strong>Install Specific Versions</strong>: The <code>spice install</code> command now supports installing specific versions of the Spice runtime and CLI. This enables easy version management, downgrading, or installation of specific releases for testing or compatibility requirements.</p>
<p>Usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install a specific version</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install v1.8.3</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install a specific version with AI flavor</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install v1.8.3 ai</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install latest version (existing behavior)</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install ai</span><br></span></code></pre></div></div>
<p>Note: Homebrew installations require manual version management via <code>brew install spiceai/spiceai/spice@&lt;version&gt;</code>.</p>
<p><strong>Persistent Query History</strong>: The Spice CLI REPL (SQL, search, and chat interfaces) now persists command history to <code>~/.spice/query_history.txt</code>, making your query history available across sessions. The history file is automatically created if it doesn't exist, with graceful fallback if the home directory cannot be determined.</p>
<p><strong>New REPL Commands</strong>:</p>
<ul>
<li class=""><code>.clear</code> - Clear the screen using ANSI escape codes for a clean workspace</li>
<li class=""><code>.clear history</code> - Clear and persist the query history, removing all stored commands</li>
</ul>
<p><strong>Tab Completion</strong>: Tab completion now includes suggestions based on your command history, making it faster to re-run or modify previous queries.</p>
<p>Example usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; SELECT * FROM my_table;</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; .clear          # Clears the screen</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; .clear history  # Clears command history</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; # Use arrow keys or tab to access previous commands</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://docs.spiceai.org/cli" target="_blank" rel="noopener noreferrer" class="">CLI Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.9.0#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>
<li class=""><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>
<li class=""><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>
<li class=""><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>
<li class=""><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>
<li class=""><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>
<li class=""><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>
<li class=""><strong>Validation</strong>: Added timestamp support for partition expressions.</li>
<li class=""><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>
<li class=""><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.9.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.9.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.9.0#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p><strong>New HTTP Data Connector Recipe</strong>: New recipe demonstrating how to query REST APIs and HTTP(s) endpoints. See <a href="https://github.com/spiceai/cookbook/tree/trunk/http" target="_blank" rel="noopener noreferrer" class="">HTTP Connector Recipe</a> for details.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.9.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.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.9.0</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.9.0#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.9.0#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<ul>
<li class=""><strong>DataFusion</strong>: <a href="https://datafusion.apache.org/blog/2025/09/29/datafusion-50.0.0/" target="_blank" rel="noopener noreferrer" class="">Upgraded to v50</a></li>
<li class=""><strong>Apache Arrow</strong>: <a href="https://github.com/apache/arrow-rs/releases/tag/56.0.0" target="_blank" rel="noopener noreferrer" class="">Upgraded to v56</a></li>
<li class=""><strong>DuckDB</strong>: <a href="https://github.com/duckdb/duckdb/releases/tag/v1.4.2" target="_blank" rel="noopener noreferrer" class="">Upgraded to v1.4.2</a></li>
<li class=""><strong>Delta Kernel</strong>: <a href="https://github.com/delta-io/delta-kernel-rs/blob/main/CHANGELOG.md#v0160-2025-09-19" target="_blank" rel="noopener noreferrer" class="">Upgraded to v0.16.0</a></li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.9.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Fix for search field as metadata for chunked search indexes by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7429" target="_blank" rel="noopener noreferrer" class="">#7429</a></li>
<li class="">Bump object_store from 0.12.3 to 0.12.4 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7433" target="_blank" rel="noopener noreferrer" class="">#7433</a></li>
<li class="">Properly respect disabling snapshots by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7431" target="_blank" rel="noopener noreferrer" class="">#7431</a></li>
<li class="">Revert "Properly respect disabling snapshots" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7439" target="_blank" rel="noopener noreferrer" class="">#7439</a></li>
<li class="">Revert "Disable snapshots by default" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7438" target="_blank" rel="noopener noreferrer" class="">#7438</a></li>
<li class="">Add preview warning for write access mode by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7440" target="_blank" rel="noopener noreferrer" class="">#7440</a></li>
<li class="">fix: regexp_match for DuckDB datasets by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7443" target="_blank" rel="noopener noreferrer" class="">#7443</a></li>
<li class="">Add feature is currently in preview warning for snapshots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7442" target="_blank" rel="noopener noreferrer" class="">#7442</a></li>
<li class="">[Logger] Also emit Datafusion logs by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7441" target="_blank" rel="noopener noreferrer" class="">#7441</a></li>
<li class="">add missing snapshot by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7446" target="_blank" rel="noopener noreferrer" class="">#7446</a></li>
<li class="">Fix tracing so that ai_completions are parented under sql_query by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7415" target="_blank" rel="noopener noreferrer" class="">#7415</a></li>
<li class="">Enable snapshot acceleration by default by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7451" target="_blank" rel="noopener noreferrer" class="">#7451</a></li>
<li class="">Disable acceleration refresh metrics by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7450" target="_blank" rel="noopener noreferrer" class="">#7450</a></li>
<li class="">Add v1.8 release notes by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7430" target="_blank" rel="noopener noreferrer" class="">#7430</a></li>
<li class="">fix: partition name validation by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7452" target="_blank" rel="noopener noreferrer" class="">#7452</a></li>
<li class="">Fix lint error due to ignore without reasons by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7454" target="_blank" rel="noopener noreferrer" class="">#7454</a></li>
<li class="">Add models and CUDA support to spiced install script by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7457" target="_blank" rel="noopener noreferrer" class="">#7457</a></li>
<li class="">Post-release 1.8 updates by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7455" target="_blank" rel="noopener noreferrer" class="">#7455</a></li>
<li class="">Remove println in datafusion by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7461" target="_blank" rel="noopener noreferrer" class="">#7461</a></li>
<li class="">Update end_game.md to notify once release is done by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7460" target="_blank" rel="noopener noreferrer" class="">#7460</a></li>
<li class="">Remove italics from snapshot logging by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7463" target="_blank" rel="noopener noreferrer" class="">#7463</a></li>
<li class="">Update openapi.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7466" target="_blank" rel="noopener noreferrer" class="">#7466</a></li>
<li class="">Fix generate spicepod schema by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7464" target="_blank" rel="noopener noreferrer" class="">#7464</a></li>
<li class="">Fix generate acknowledements by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7465" target="_blank" rel="noopener noreferrer" class="">#7465</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7469" target="_blank" rel="noopener noreferrer" class="">#7469</a></li>
<li class="">fix: Ensure ListingTable partitions are pruned when filters are not used by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7471" target="_blank" rel="noopener noreferrer" class="">#7471</a></li>
<li class="">Create <code>runtime-secrets</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7474" target="_blank" rel="noopener noreferrer" class="">#7474</a></li>
<li class="">Create <code>runtime-parameters</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7475" target="_blank" rel="noopener noreferrer" class="">#7475</a></li>
<li class="">Don't download the snapshot if the acceleration is present by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7477" target="_blank" rel="noopener noreferrer" class="">#7477</a></li>
<li class="">Bump hyper-util from 0.1.16 to 0.1.17 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7434" target="_blank" rel="noopener noreferrer" class="">#7434</a></li>
<li class="">Add missing remote CLI feature by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7478" target="_blank" rel="noopener noreferrer" class="">#7478</a></li>
<li class="">Add 1.8.0 release analytics by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7481" target="_blank" rel="noopener noreferrer" class="">#7481</a></li>
<li class="">CLI multi-line input support for <code>spice sql</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7479" target="_blank" rel="noopener noreferrer" class="">#7479</a></li>
<li class="">fix: duckdb partitioning cannot reload config by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7482" target="_blank" rel="noopener noreferrer" class="">#7482</a></li>
<li class="">fix: Make search cache test use a slower uncached search by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7473" target="_blank" rel="noopener noreferrer" class="">#7473</a></li>
<li class="">Add support for S3 dataset params by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7476" target="_blank" rel="noopener noreferrer" class="">#7476</a></li>
<li class="">Add DuckDB TPC-H memory limit variations by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7484" target="_blank" rel="noopener noreferrer" class="">#7484</a></li>
<li class="">Add better snapshot validation for incorrectly configured spicepods by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7487" target="_blank" rel="noopener noreferrer" class="">#7487</a></li>
<li class="">Move blocking/sync I/O to spawn blocking by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7462" target="_blank" rel="noopener noreferrer" class="">#7462</a></li>
<li class="">Add DuckDB file accelerator 2G and 4G dispatches by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7491" target="_blank" rel="noopener noreferrer" class="">#7491</a></li>
<li class="">Validate spicepod file exists before running tests by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7492" target="_blank" rel="noopener noreferrer" class="">#7492</a></li>
<li class="">Make snapshot reading/writing more robust with Iceberg-like metadata.json by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7486" target="_blank" rel="noopener noreferrer" class="">#7486</a></li>
<li class="">Re-use build-testoperator and ensure it's cached by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7494" target="_blank" rel="noopener noreferrer" class="">#7494</a></li>
<li class="">Fix duckdb test operator limit casing by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7498" target="_blank" rel="noopener noreferrer" class="">#7498</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7499" target="_blank" rel="noopener noreferrer" class="">#7499</a></li>
<li class="">Create <code>runtime-request-context</code> crate by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7459" target="_blank" rel="noopener noreferrer" class="">#7459</a></li>
<li class="">Add integration tests for Acceleration DB snapshotting by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7489" target="_blank" rel="noopener noreferrer" class="">#7489</a></li>
<li class="">Two minor fixes for AI udf tests by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7503" target="_blank" rel="noopener noreferrer" class="">#7503</a></li>
<li class="">Add model response timeout for ai udf tests by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7504" target="_blank" rel="noopener noreferrer" class="">#7504</a></li>
<li class="">Show error if FTS is misconfigured for datasets/views by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7458" target="_blank" rel="noopener noreferrer" class="">#7458</a></li>
<li class="">Add test for chunked search index with search field as metadata by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7513" target="_blank" rel="noopener noreferrer" class="">#7513</a></li>
<li class="">Add sccache for build test operator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7515" target="_blank" rel="noopener noreferrer" class="">#7515</a></li>
<li class="">Enhancement: Add <code>spill_compression</code> to runtime config by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7505" target="_blank" rel="noopener noreferrer" class="">#7505</a></li>
<li class="">Improve GitHub Data Connector by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7510" target="_blank" rel="noopener noreferrer" class="">#7510</a></li>
<li class="">Add <code>RequestTimeoutException</code> to S3 client by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7514" target="_blank" rel="noopener noreferrer" class="">#7514</a></li>
<li class="">Add <code>sha=&lt;&gt;</code> to snapshot logging by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7521" target="_blank" rel="noopener noreferrer" class="">#7521</a></li>
<li class="">Add Type to GitHub Data Connector issues and fix double aliasing for project author by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7519" target="_blank" rel="noopener noreferrer" class="">#7519</a></li>
<li class="">DuckDB acceleration: fix memory leak in duckdb_arrow_scan by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7524" target="_blank" rel="noopener noreferrer" class="">#7524</a></li>
<li class="">Fix partition_by accelerations when a projection is applied on empty partition sets by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7526" target="_blank" rel="noopener noreferrer" class="">#7526</a></li>
<li class="">Nullable fields for index columns by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7523" target="_blank" rel="noopener noreferrer" class="">#7523</a></li>
<li class="">Fix missing winver dependency for Windows by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7538" target="_blank" rel="noopener noreferrer" class="">#7538</a></li>
<li class="">Update mongo config for benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7546" target="_blank" rel="noopener noreferrer" class="">#7546</a></li>
<li class="">Add acceleration snapshots cookbook to template by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7527" target="_blank" rel="noopener noreferrer" class="">#7527</a></li>
<li class="">Bump github/codeql-action from 3 to 4 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7535" target="_blank" rel="noopener noreferrer" class="">#7535</a></li>
<li class="">Bump golang.org/x/sys from 0.36.0 to 0.37.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7529" target="_blank" rel="noopener noreferrer" class="">#7529</a></li>
<li class="">Make <code>spice chat</code> play nice with Unix pipes by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7525" target="_blank" rel="noopener noreferrer" class="">#7525</a></li>
<li class="">Configurable DuckDB duckdb_index_scan_percentage &amp; duckdb_index_scan_max_count by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7551" target="_blank" rel="noopener noreferrer" class="">#7551</a></li>
<li class="">[cherry-pick] Release notes for release 1.8.1 by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7556" target="_blank" rel="noopener noreferrer" class="">#7556</a></li>
<li class="">Fix 1.8.1 release notes by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7558" target="_blank" rel="noopener noreferrer" class="">#7558</a></li>
<li class="">FTS index with nonfilterable metadata; search field not metadata by default. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7548" target="_blank" rel="noopener noreferrer" class="">#7548</a></li>
<li class="">Properly set auth headers in github_release.py by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7560" target="_blank" rel="noopener noreferrer" class="">#7560</a></li>
<li class="">project_schema when using EmptyExec by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7543" target="_blank" rel="noopener noreferrer" class="">#7543</a></li>
<li class="">Add 1.8.1 release analytics by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7561" target="_blank" rel="noopener noreferrer" class="">#7561</a></li>
<li class="">Bump golang.org/x/mod from 0.28.0 to 0.29.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7530" target="_blank" rel="noopener noreferrer" class="">#7530</a></li>
<li class="">Hive-style partitioning for DuckDB file mode by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7563" target="_blank" rel="noopener noreferrer" class="">#7563</a></li>
<li class="">Vortex Data Accelerator (Dev grade) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7566" target="_blank" rel="noopener noreferrer" class="">#7566</a></li>
<li class="">Only load eval scorers when eval defined by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7549" target="_blank" rel="noopener noreferrer" class="">#7549</a></li>
<li class="">Bump octocrab from 0.45.0 to 0.47.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7531" target="_blank" rel="noopener noreferrer" class="">#7531</a></li>
<li class="">Bump regex from 1.11.3 to 1.12.1 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7532" target="_blank" rel="noopener noreferrer" class="">#7532</a></li>
<li class="">Fix custom file path for Vortex Data Accelerator by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7570" target="_blank" rel="noopener noreferrer" class="">#7570</a></li>
<li class="">Add List type support to Vortex Data Accelerator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7569" target="_blank" rel="noopener noreferrer" class="">#7569</a></li>
<li class="">Bump parking_lot from 0.12.4 to 0.12.5 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7534" target="_blank" rel="noopener noreferrer" class="">#7534</a></li>
<li class="">Bump tokio-postgres from 0.7.14 to 0.7.15 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7533" target="_blank" rel="noopener noreferrer" class="">#7533</a></li>
<li class="">Remove duplicate line from 1.8.1 release notes by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7580" target="_blank" rel="noopener noreferrer" class="">#7580</a></li>
<li class="">Upgrade Go from v1.24.2 to v1.25.3 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7582" target="_blank" rel="noopener noreferrer" class="">#7582</a></li>
<li class="">Fix race condition in S3 Vectors index and bucket creation by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7577" target="_blank" rel="noopener noreferrer" class="">#7577</a></li>
<li class="">Add <code>runtime-async</code> crate with managed Tokio runtime by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7575" target="_blank" rel="noopener noreferrer" class="">#7575</a></li>
<li class="">Optimize GitHub Actions workflows by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7584" target="_blank" rel="noopener noreferrer" class="">#7584</a></li>
<li class="">Use 'location' as primary key for document tables by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7567" target="_blank" rel="noopener noreferrer" class="">#7567</a></li>
<li class="">Extend query-related metrics by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7571" target="_blank" rel="noopener noreferrer" class="">#7571</a></li>
<li class="">Enabling acceleration refresh metrics by using <code>runtime.metrics</code> config by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7583" target="_blank" rel="noopener noreferrer" class="">#7583</a></li>
<li class="">S3Vector service metrics in client by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7502" target="_blank" rel="noopener noreferrer" class="">#7502</a></li>
<li class="">Fix score order for one test case by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7595" target="_blank" rel="noopener noreferrer" class="">#7595</a></li>
<li class=""><code>ObjectMeta</code> filter pushdown for <code>ObjectStoreTextTable</code> by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7572" target="_blank" rel="noopener noreferrer" class="">#7572</a></li>
<li class="">Return <code>TableProvider</code> from <code>CandidateGeneration::search</code>. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7559" target="_blank" rel="noopener noreferrer" class="">#7559</a></li>
<li class="">EmptyHashJoinExecPhysicalOptimization, and use in VectorScanTableProvider by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7587" target="_blank" rel="noopener noreferrer" class="">#7587</a></li>
<li class="">Update official Docker builds to use release binaries by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7597" target="_blank" rel="noopener noreferrer" class="">#7597</a></li>
<li class="">New Generate Changelog workflow by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7562" target="_blank" rel="noopener noreferrer" class="">#7562</a></li>
<li class="">BytesProcessedExec to allow optimizer to do limit pushdown by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7539" target="_blank" rel="noopener noreferrer" class="">#7539</a></li>
<li class="">GitHub Data Connector add Projects, improve rate-limiting and error handling by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7547" target="_blank" rel="noopener noreferrer" class="">#7547</a></li>
<li class="">Add copilot-instructions to help improve Copilot reviews by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7606" target="_blank" rel="noopener noreferrer" class="">#7606</a></li>
<li class="">Add support for DuckDB table-based partitioning by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7581" target="_blank" rel="noopener noreferrer" class="">#7581</a></li>
<li class="">fix: Use nextest for integration models tests by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7617" target="_blank" rel="noopener noreferrer" class="">#7617</a></li>
<li class="">Fix license issue in table-providers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7620" target="_blank" rel="noopener noreferrer" class="">#7620</a></li>
<li class="">Remove <code>Build Docker Image</code> from PR checks by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7621" target="_blank" rel="noopener noreferrer" class="">#7621</a></li>
<li class="">Combine PR Lint + Build checks by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7623" target="_blank" rel="noopener noreferrer" class="">#7623</a></li>
<li class="">Remove Cache Rust builds step by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7625" target="_blank" rel="noopener noreferrer" class="">#7625</a></li>
<li class="">Rename <code>duckdb_partition_mode</code> to <code>partition_mode</code> param by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7622" target="_blank" rel="noopener noreferrer" class="">#7622</a></li>
<li class="">DuckDB table partitioning: delete partitions that no longer exist after full refresh by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7614" target="_blank" rel="noopener noreferrer" class="">#7614</a></li>
<li class="">Build integration test binaries in single job by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7624" target="_blank" rel="noopener noreferrer" class="">#7624</a></li>
<li class="">Make DuckDB table partition data write threshold configurable by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7626" target="_blank" rel="noopener noreferrer" class="">#7626</a></li>
<li class="">Handle table relations in HTTP v1/search by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7615" target="_blank" rel="noopener noreferrer" class="">#7615</a></li>
<li class="">Fix E2E Test sporadic failures on the macOS runners by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7627" target="_blank" rel="noopener noreferrer" class="">#7627</a></li>
<li class="">Emit <code>query_active_count</code> metric by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7589" target="_blank" rel="noopener noreferrer" class="">#7589</a></li>
<li class="">fix: Disable go cache in actions by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7631" target="_blank" rel="noopener noreferrer" class="">#7631</a></li>
<li class="">fix: Don't nullify DuckDB release callbacks for schemas by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7628" target="_blank" rel="noopener noreferrer" class="">#7628</a></li>
<li class="">Fix integration tests by reverting the use of batch inserts w/ prepared statements by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7630" target="_blank" rel="noopener noreferrer" class="">#7630</a></li>
<li class="">Split integration tests into 3 partitions by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7635" target="_blank" rel="noopener noreferrer" class="">#7635</a></li>
<li class="">Initial Pepper data accelerator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7592" target="_blank" rel="noopener noreferrer" class="">#7592</a></li>
<li class="">Only build the E2E Test CI binaries once by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7633" target="_blank" rel="noopener noreferrer" class="">#7633</a></li>
<li class="">Update BytesProcessedExec snapshots by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7637" target="_blank" rel="noopener noreferrer" class="">#7637</a></li>
<li class="">Properly set RequestContext for stream execution in Flight by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7591" target="_blank" rel="noopener noreferrer" class="">#7591</a></li>
<li class="">Add task for creating release branch in docs by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7642" target="_blank" rel="noopener noreferrer" class="">#7642</a></li>
<li class="">Add missing mongodb params by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7647" target="_blank" rel="noopener noreferrer" class="">#7647</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7649" target="_blank" rel="noopener noreferrer" class="">#7649</a></li>
<li class="">Release notes for v1.8.2 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7645" target="_blank" rel="noopener noreferrer" class="">#7645</a></li>
<li class="">docs: Update error handling in copilot instructions by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7652" target="_blank" rel="noopener noreferrer" class="">#7652</a></li>
<li class="">Pepper accelerator INSERT OVERWRITE support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7643" target="_blank" rel="noopener noreferrer" class="">#7643</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7650" target="_blank" rel="noopener noreferrer" class="">#7650</a></li>
<li class="">Run Datafusion queries on a separate Tokio runtime by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7586" target="_blank" rel="noopener noreferrer" class="">#7586</a></li>
<li class="">Add explicit steps for docs DRI in end game by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7658" target="_blank" rel="noopener noreferrer" class="">#7658</a></li>
<li class="">Add Release 1.8.2 QA Analytics by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7661" target="_blank" rel="noopener noreferrer" class="">#7661</a></li>
<li class="">Pepper full / append refresh support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7662" target="_blank" rel="noopener noreferrer" class="">#7662</a></li>
<li class="">Add 'client_timeout' for s3 vector by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7501" target="_blank" rel="noopener noreferrer" class="">#7501</a></li>
<li class="">Improvements to Endgame template by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7660" target="_blank" rel="noopener noreferrer" class="">#7660</a></li>
<li class="">Fix OSS docker release trigger when release marked as latest by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7668" target="_blank" rel="noopener noreferrer" class="">#7668</a></li>
<li class="">Use '#[serde(deny_unknown_fields)]' for base spicepod components by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7669" target="_blank" rel="noopener noreferrer" class="">#7669</a></li>
<li class="">DataFusion upgrade template to include Ballista by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7679" target="_blank" rel="noopener noreferrer" class="">#7679</a></li>
<li class="">S3 Vector index spilling by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7613" target="_blank" rel="noopener noreferrer" class="">#7613</a></li>
<li class="">Refresh request context bindings / fix trunk integration tests by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7680" target="_blank" rel="noopener noreferrer" class="">#7680</a></li>
<li class="">Fix integration tests for refresh append by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7681" target="_blank" rel="noopener noreferrer" class="">#7681</a></li>
<li class="">Distributed query support by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7585" target="_blank" rel="noopener noreferrer" class="">#7585</a></li>
<li class="">Run acceleration refreshes on separate Tokio runtime by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7671" target="_blank" rel="noopener noreferrer" class="">#7671</a></li>
<li class="">Support DESCRIBE in clustered mode by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7686" target="_blank" rel="noopener noreferrer" class="">#7686</a></li>
<li class="">use hyphen instead of period for index name spill separator by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7697" target="_blank" rel="noopener noreferrer" class="">#7697</a></li>
<li class="">Add streaming option to /nsql endpoint by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7695" target="_blank" rel="noopener noreferrer" class="">#7695</a></li>
<li class="">Task History <code>min_sql_duration</code> filter support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7698" target="_blank" rel="noopener noreferrer" class="">#7698</a></li>
<li class="">Spawn <code>object_store</code> IO tasks on the original Tokio runtime by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7689" target="_blank" rel="noopener noreferrer" class="">#7689</a></li>
<li class="">Update openapi.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7700" target="_blank" rel="noopener noreferrer" class="">#7700</a></li>
<li class="">Adjust DataFusion runtime worker threads by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7704" target="_blank" rel="noopener noreferrer" class="">#7704</a></li>
<li class="">Gate dedicated SQL engine CPU runtime behind opt-in param <code>dedicated_thread_pool</code> by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7705" target="_blank" rel="noopener noreferrer" class="">#7705</a></li>
<li class="">Add TPCH S3 refresh spicepod by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7706" target="_blank" rel="noopener noreferrer" class="">#7706</a></li>
<li class="">DuckDB: include ANALYZE after write to update query optimizer statistics by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7714" target="_blank" rel="noopener noreferrer" class="">#7714</a></li>
<li class="">Display execution time in Spice REPL for no results by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7713" target="_blank" rel="noopener noreferrer" class="">#7713</a></li>
<li class="">Task History capture and store SQL query plans by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7701" target="_blank" rel="noopener noreferrer" class="">#7701</a></li>
<li class="">Pepper TPC-H SF-1 benchmark by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7717" target="_blank" rel="noopener noreferrer" class="">#7717</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7720" target="_blank" rel="noopener noreferrer" class="">#7720</a></li>
<li class="">Optimize prepared statements (parameterized queries) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7703" target="_blank" rel="noopener noreferrer" class="">#7703</a></li>
<li class="">Pepper accelerator tests (Clickbench, TPC-H SF-5, SF-100) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7721" target="_blank" rel="noopener noreferrer" class="">#7721</a></li>
<li class="">Add support for DuckDB <code>connection_pool_size</code> param by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7716" target="_blank" rel="noopener noreferrer" class="">#7716</a></li>
<li class="">Add health probing to testoperator runs by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7709" target="_blank" rel="noopener noreferrer" class="">#7709</a></li>
<li class="">Simplify <code>AcceleratedTable</code> by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7724" target="_blank" rel="noopener noreferrer" class="">#7724</a></li>
<li class="">Add some basic indexing tests for 'FullTextDatabaseIndex' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7688" target="_blank" rel="noopener noreferrer" class="">#7688</a></li>
<li class="">DuckDB: <code>on_refresh_recompute_statistics</code> param + ANALYZE for table-based partitioning by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7719" target="_blank" rel="noopener noreferrer" class="">#7719</a></li>
<li class="">Fix Windows builds by excluding pepper/vortex by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7729" target="_blank" rel="noopener noreferrer" class="">#7729</a></li>
<li class="">Enable separate CPU runtime thread pool for DataFusion by default by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7732" target="_blank" rel="noopener noreferrer" class="">#7732</a></li>
<li class="">'runtime-datafusion' crate for runtime related DataFusion components by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7666" target="_blank" rel="noopener noreferrer" class="">#7666</a></li>
<li class="">Pepper expanded append refresh support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7670" target="_blank" rel="noopener noreferrer" class="">#7670</a></li>
<li class="">Pepper basic partitioning by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7731" target="_blank" rel="noopener noreferrer" class="">#7731</a></li>
<li class="">Stable pepper benchmark snapshots by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7739" target="_blank" rel="noopener noreferrer" class="">#7739</a></li>
<li class="">Delta Lake Connector: Support <code>AWS_SESSION_TOKEN</code> parameter by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7752" target="_blank" rel="noopener noreferrer" class="">#7752</a></li>
<li class="">Pepper use SQLite WAL by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7757" target="_blank" rel="noopener noreferrer" class="">#7757</a></li>
<li class="">v1.8.3 release notes by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7745" target="_blank" rel="noopener noreferrer" class="">#7745</a></li>
<li class="">Increase testoperator health check threshold to 50ms by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7767" target="_blank" rel="noopener noreferrer" class="">#7767</a></li>
<li class="">Data Accelerator Graceful Shutdown by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7756" target="_blank" rel="noopener noreferrer" class="">#7756</a></li>
<li class="">Remove Windows CUDA builds by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7768" target="_blank" rel="noopener noreferrer" class="">#7768</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7771" target="_blank" rel="noopener noreferrer" class="">#7771</a></li>
<li class="">Bump actions/download-artifact from 5 to 6 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7746" target="_blank" rel="noopener noreferrer" class="">#7746</a></li>
<li class="">Bump serde from 1.0.226 to 1.0.228 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7743" target="_blank" rel="noopener noreferrer" class="">#7743</a></li>
<li class="">Fix casing for keywords and additional columns by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7770" target="_blank" rel="noopener noreferrer" class="">#7770</a></li>
<li class="">Bump actions/upload-artifact from 4 to 5 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7750" target="_blank" rel="noopener noreferrer" class="">#7750</a></li>
<li class="">Bump criterion from 0.5.1 to 0.7.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7740" target="_blank" rel="noopener noreferrer" class="">#7740</a></li>
<li class="">Bump rustls-native-certs from 0.8.1 to 0.8.2 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7744" target="_blank" rel="noopener noreferrer" class="">#7744</a></li>
<li class="">Git Data Connector (Alpha) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7772" target="_blank" rel="noopener noreferrer" class="">#7772</a></li>
<li class="">Pepper accelerator delete support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7616" target="_blank" rel="noopener noreferrer" class="">#7616</a></li>
<li class="">Update Helm chart instructions for Helm in end_game.md by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7776" target="_blank" rel="noopener noreferrer" class="">#7776</a></li>
<li class="">Turso data accelerator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7472" target="_blank" rel="noopener noreferrer" class="">#7472</a></li>
<li class="">Apply retention SQL filter to refresh fetch by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7778" target="_blank" rel="noopener noreferrer" class="">#7778</a></li>
<li class="">Add Parquet buffering option for DuckDB partitioned writes (tables mode) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7735" target="_blank" rel="noopener noreferrer" class="">#7735</a></li>
<li class="">fix: EmptyExec when list indexes is empty by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7784" target="_blank" rel="noopener noreferrer" class="">#7784</a></li>
<li class="">1.8.3 post-release housekeeping by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7783" target="_blank" rel="noopener noreferrer" class="">#7783</a></li>
<li class="">feat: Upgrade to Datafusion v50 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7777" target="_blank" rel="noopener noreferrer" class="">#7777</a></li>
<li class="">fix: Replace vortex datafusion with public crate by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7791" target="_blank" rel="noopener noreferrer" class="">#7791</a></li>
<li class="">Full-text search on views by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7733" target="_blank" rel="noopener noreferrer" class="">#7733</a></li>
<li class="">Revert "Apply retention SQL filter to refresh fetch (#7778)" by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7796" target="_blank" rel="noopener noreferrer" class="">#7796</a></li>
<li class="">fix: Add ingest duration and acceleration size metrics to testoperator by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7792" target="_blank" rel="noopener noreferrer" class="">#7792</a></li>
<li class="">Set local timezone to UTC for DuckDB by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7797" target="_blank" rel="noopener noreferrer" class="">#7797</a></li>
<li class="">add Timestamp support for partition expressions by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7803" target="_blank" rel="noopener noreferrer" class="">#7803</a></li>
<li class="">Fix trunk lint by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7804" target="_blank" rel="noopener noreferrer" class="">#7804</a></li>
<li class="">Add missing mongodb params by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7807" target="_blank" rel="noopener noreferrer" class="">#7807</a></li>
<li class="">Embedding columns on view components by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7795" target="_blank" rel="noopener noreferrer" class="">#7795</a></li>
<li class="">Add Turso as a Pepper Catalog metastore by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7793" target="_blank" rel="noopener noreferrer" class="">#7793</a></li>
<li class="">Run retention_sql on refresh commit for DuckDB by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7785" target="_blank" rel="noopener noreferrer" class="">#7785</a></li>
<li class="">docs: Update datafusion upgrade checklist by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7812" target="_blank" rel="noopener noreferrer" class="">#7812</a></li>
<li class="">Vector engines on views by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7808" target="_blank" rel="noopener noreferrer" class="">#7808</a></li>
<li class="">Handle refresh worker panics and add recovery test by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7815" target="_blank" rel="noopener noreferrer" class="">#7815</a></li>
<li class="">chunk large record batches to control memory usage by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7802" target="_blank" rel="noopener noreferrer" class="">#7802</a></li>
<li class="">fix: cannot determine vector dimension for partitioned indexes by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7818" target="_blank" rel="noopener noreferrer" class="">#7818</a></li>
<li class="">Upgrade to Turso v0.3 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7821" target="_blank" rel="noopener noreferrer" class="">#7821</a></li>
<li class="">fix: Ensure custom *Exec ExecutionPlans push down dynamic filters by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7811" target="_blank" rel="noopener noreferrer" class="">#7811</a></li>
<li class="">handle casing in RRF by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7825" target="_blank" rel="noopener noreferrer" class="">#7825</a></li>
<li class="">Enable 'turso' for pepper acceleration by default by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7826" target="_blank" rel="noopener noreferrer" class="">#7826</a></li>
<li class="">Improved DynamoDB Data Connector by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7715" target="_blank" rel="noopener noreferrer" class="">#7715</a></li>
<li class="">Initial support for llama.cpp as LLM inference backend by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7794" target="_blank" rel="noopener noreferrer" class="">#7794</a></li>
<li class="">Pepper: Implement retention SQL on refresh commit by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7814" target="_blank" rel="noopener noreferrer" class="">#7814</a></li>
<li class="">Fix Dockerfiles for arm64 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7834" target="_blank" rel="noopener noreferrer" class="">#7834</a></li>
<li class="">[DynamoDB] Handle filter edge-cases by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7830" target="_blank" rel="noopener noreferrer" class="">#7830</a></li>
<li class="">[DynamoDB] Support parallelization for <code>Scan</code> request by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7829" target="_blank" rel="noopener noreferrer" class="">#7829</a></li>
<li class="">Don't feature gate Pepper by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7832" target="_blank" rel="noopener noreferrer" class="">#7832</a></li>
<li class="">Fix llama.cpp static link by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7835" target="_blank" rel="noopener noreferrer" class="">#7835</a></li>
<li class="">fix: docker nightly builds by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7837" target="_blank" rel="noopener noreferrer" class="">#7837</a></li>
<li class="">Use GitHub-hosted macOS runner only for tag releases by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7836" target="_blank" rel="noopener noreferrer" class="">#7836</a></li>
<li class="">Fix Bug: DuckDB INTERNAL Error: Failed to load metadata pointer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7839" target="_blank" rel="noopener noreferrer" class="">#7839</a></li>
<li class="">Fix docker arm64 build to use aegis in pure-rust mode by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7840" target="_blank" rel="noopener noreferrer" class="">#7840</a></li>
<li class="">Revert "Use GitHub-hosted macOS runner only for tag releases" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7843" target="_blank" rel="noopener noreferrer" class="">#7843</a></li>
<li class="">Rename Pepper to Cayenne by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7844" target="_blank" rel="noopener noreferrer" class="">#7844</a></li>
<li class="">Tighten CLI permissions and install script by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7845" target="_blank" rel="noopener noreferrer" class="">#7845</a></li>
<li class="">Set mvcc for Cayenne Turso metastore by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7850" target="_blank" rel="noopener noreferrer" class="">#7850</a></li>
<li class="">Optimize Prepared Statements by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7859" target="_blank" rel="noopener noreferrer" class="">#7859</a></li>
<li class="">Remove unwrap from ODBC connector, fix secrets, and kuberenetes secre… by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7846" target="_blank" rel="noopener noreferrer" class="">#7846</a></li>
<li class="">Improve and secure HTTP client usage by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7847" target="_blank" rel="noopener noreferrer" class="">#7847</a></li>
<li class="">Pin Oracle Instant Client download to a SHA by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7851" target="_blank" rel="noopener noreferrer" class="">#7851</a></li>
<li class="">Improve experience for missing or invalid Spicepod.yaml by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7849" target="_blank" rel="noopener noreferrer" class="">#7849</a></li>
<li class="">chore: Fix PR linting by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7865" target="_blank" rel="noopener noreferrer" class="">#7865</a></li>
<li class="">Revert FlightIPC issues by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7870" target="_blank" rel="noopener noreferrer" class="">#7870</a></li>
<li class="">Bump Jimver/cuda-toolkit from 0.2.28 to 0.2.29 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7878" target="_blank" rel="noopener noreferrer" class="">#7878</a></li>
<li class="">Optimize macOS and Windows builds by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7863" target="_blank" rel="noopener noreferrer" class="">#7863</a></li>
<li class="">Improve error message by adding 'cayenne' to the list of valid accelerator engines by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7882" target="_blank" rel="noopener noreferrer" class="">#7882</a></li>
<li class="">fix: Kafka message delivery failed by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7883" target="_blank" rel="noopener noreferrer" class="">#7883</a></li>
<li class="">fix: allow parameter index without dollar signs by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7887" target="_blank" rel="noopener noreferrer" class="">#7887</a></li>
<li class="">docs: Update component criteria by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7891" target="_blank" rel="noopener noreferrer" class="">#7891</a></li>
<li class="">Temporary disable <code>supports_limit_pushdown</code> for <code>SchemaCastScanExec</code> by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7893" target="_blank" rel="noopener noreferrer" class="">#7893</a></li>
<li class="">fix: Make integration run with no relevant changes, disable makefile targets on PR by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7896" target="_blank" rel="noopener noreferrer" class="">#7896</a></li>
<li class="">Add Cayenne benchmark and concurrency tests and remove indexes for Turso MVCC by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7879" target="_blank" rel="noopener noreferrer" class="">#7879</a></li>
<li class="">Remove '.embeddings[].metadata' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7897" target="_blank" rel="noopener noreferrer" class="">#7897</a></li>
<li class="">Revert llama.cpp engine by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7898" target="_blank" rel="noopener noreferrer" class="">#7898</a></li>
<li class="">Make Cayenne snapshotting more robust by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7899" target="_blank" rel="noopener noreferrer" class="">#7899</a></li>
<li class="">Release notes v1.9.0-rc1 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7902" target="_blank" rel="noopener noreferrer" class="">#7902</a></li>
<li class="">Fix <code>dataset_acceleration_last_refresh_time_ms</code> unit to milliseconds in description by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7901" target="_blank" rel="noopener noreferrer" class="">#7901</a></li>
<li class="">Fix lint error in record_explain_plan functionality by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7906" target="_blank" rel="noopener noreferrer" class="">#7906</a></li>
<li class="">Cleanup old snapshots after full refresh by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7908" target="_blank" rel="noopener noreferrer" class="">#7908</a></li>
<li class="">Cayenne deletion vector caching support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7903" target="_blank" rel="noopener noreferrer" class="">#7903</a></li>
<li class="">Split filters into partition filters (for pruning) and data filters by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7889" target="_blank" rel="noopener noreferrer" class="">#7889</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7911" target="_blank" rel="noopener noreferrer" class="">#7911</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7912" target="_blank" rel="noopener noreferrer" class="">#7912</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7913" target="_blank" rel="noopener noreferrer" class="">#7913</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7916" target="_blank" rel="noopener noreferrer" class="">#7916</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7917" target="_blank" rel="noopener noreferrer" class="">#7917</a></li>
<li class="">Add Cayenne &amp; Turso accelerators to E2E CI test matrix by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7922" target="_blank" rel="noopener noreferrer" class="">#7922</a></li>
<li class="">Make preview warnings consistent by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7921" target="_blank" rel="noopener noreferrer" class="">#7921</a></li>
<li class="">Filter and write optimizations by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7918" target="_blank" rel="noopener noreferrer" class="">#7918</a></li>
<li class="">fix: Set sccache region explicitly by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7928" target="_blank" rel="noopener noreferrer" class="">#7928</a></li>
<li class="">fix: Enable integration test merge group checks by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7927" target="_blank" rel="noopener noreferrer" class="">#7927</a></li>
<li class="">Update testoperator release branch from 1.8 to 1.9 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7926" target="_blank" rel="noopener noreferrer" class="">#7926</a></li>
<li class="">Update DuckDB to 1.4.1 with composite ART scans by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7884" target="_blank" rel="noopener noreferrer" class="">#7884</a></li>
<li class="">Don't build Windows on trunk pushes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7931" target="_blank" rel="noopener noreferrer" class="">#7931</a></li>
<li class="">fix: Use correct minio secret in build binary push by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7934" target="_blank" rel="noopener noreferrer" class="">#7934</a></li>
<li class="">Update test-framework workers to use dedicated Flight client by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7938" target="_blank" rel="noopener noreferrer" class="">#7938</a></li>
<li class="">Fix financebench, configure s3vectors for appropriate snapshotting by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7935" target="_blank" rel="noopener noreferrer" class="">#7935</a></li>
<li class="">Don't try to initialize accelerator if it is disabled by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7932" target="_blank" rel="noopener noreferrer" class="">#7932</a></li>
<li class="">Add spark UDFs to Spice by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7936" target="_blank" rel="noopener noreferrer" class="">#7936</a></li>
<li class="">Fix extra async_trait in cayenne metadata catalog by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7942" target="_blank" rel="noopener noreferrer" class="">#7942</a></li>
<li class="">deps: Upgrade to Rust 1.90 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7941" target="_blank" rel="noopener noreferrer" class="">#7941</a></li>
<li class="">Add cayenne accelerator to README.md by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7905" target="_blank" rel="noopener noreferrer" class="">#7905</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7948" target="_blank" rel="noopener noreferrer" class="">#7948</a></li>
<li class="">Run integration tests with <code>AWS_EC2_METADATA_DISABLED</code> flag by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7952" target="_blank" rel="noopener noreferrer" class="">#7952</a></li>
<li class="">Only retry credentials on ConnectorError by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7944" target="_blank" rel="noopener noreferrer" class="">#7944</a></li>
<li class="">fix: Improve join reordering by ensuring <code>JoinSelection</code> is applied by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7828" target="_blank" rel="noopener noreferrer" class="">#7828</a></li>
<li class="">fix: Remove unused deps, consolidate workspace deps by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7953" target="_blank" rel="noopener noreferrer" class="">#7953</a></li>
<li class="">bump async-openai commit by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7929" target="_blank" rel="noopener noreferrer" class="">#7929</a></li>
<li class="">deps: Use vortex fork by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7954" target="_blank" rel="noopener noreferrer" class="">#7954</a></li>
<li class="">Enable tracing in delta lake integration tests by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7951" target="_blank" rel="noopener noreferrer" class="">#7951</a></li>
<li class="">Update datasets in S3 vectors test case by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7956" target="_blank" rel="noopener noreferrer" class="">#7956</a></li>
<li class="">Add spiced metrics scraping to test operator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7937" target="_blank" rel="noopener noreferrer" class="">#7937</a></li>
<li class="">Memoize S3 vectors ListIndex API call with configurable TTL by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7910" target="_blank" rel="noopener noreferrer" class="">#7910</a></li>
<li class="">Cayenne performance optimizations by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7907" target="_blank" rel="noopener noreferrer" class="">#7907</a></li>
<li class="">Setup HotFix issue template by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7957" target="_blank" rel="noopener noreferrer" class="">#7957</a></li>
<li class="">Fix AWS SDK credential cache retry handling by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7943" target="_blank" rel="noopener noreferrer" class="">#7943</a></li>
<li class="">Infer RRF <code>join_key</code> from <code>TableProvider::constraints</code> and implement <code>SearchQueryProvider::constraints</code>. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7959" target="_blank" rel="noopener noreferrer" class="">#7959</a></li>
<li class="">[Optimizer]: DuckDB intermediate materialization (non-federated) by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7964" target="_blank" rel="noopener noreferrer" class="">#7964</a></li>
<li class="">1.7.3 post-release housekeeping by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7962" target="_blank" rel="noopener noreferrer" class="">#7962</a></li>
<li class="">Fix <code>digest_many</code> UDF for <code>ColumnarValue::Array</code>. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7960" target="_blank" rel="noopener noreferrer" class="">#7960</a></li>
<li class="">Fix spiced metrics reporting as part of benchmark tests by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7967" target="_blank" rel="noopener noreferrer" class="">#7967</a></li>
<li class="">Avoid pushing down Spice specific UDFs to accelerators during federation by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7909" target="_blank" rel="noopener noreferrer" class="">#7909</a></li>
<li class="">CLI file persisted history with <code>.clear</code> and <code>.clear history</code> commands by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7970" target="_blank" rel="noopener noreferrer" class="">#7970</a></li>
<li class="">ResultsCache Cache-Control <code>stale-while-revalidate</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7963" target="_blank" rel="noopener noreferrer" class="">#7963</a></li>
<li class="">Use GetVectors API instead of returnData by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7083" target="_blank" rel="noopener noreferrer" class="">#7083</a></li>
<li class="">Make DuckDB intermediate materialization logic more robust by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7971" target="_blank" rel="noopener noreferrer" class="">#7971</a></li>
<li class="">[Cayenne] Configurable target Vortex file size by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7972" target="_blank" rel="noopener noreferrer" class="">#7972</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7974" target="_blank" rel="noopener noreferrer" class="">#7974</a></li>
<li class="">Bump github.com/klauspost/compress from 1.17.11 to 1.18.1 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7872" target="_blank" rel="noopener noreferrer" class="">#7872</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7978" target="_blank" rel="noopener noreferrer" class="">#7978</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7982" target="_blank" rel="noopener noreferrer" class="">#7982</a></li>
<li class="">Run Integration tests on spiceai-dev-runners by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7985" target="_blank" rel="noopener noreferrer" class="">#7985</a></li>
<li class="">[CLI] Fix cursor issue due to flush by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7981" target="_blank" rel="noopener noreferrer" class="">#7981</a></li>
<li class="">fix: Support S3 versioning, Vortex dynamic filter pushdown by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7984" target="_blank" rel="noopener noreferrer" class="">#7984</a></li>
<li class="">Make <code>cluster</code> a default feature by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7994" target="_blank" rel="noopener noreferrer" class="">#7994</a></li>
<li class="">Optimize DuckDB Intermediate Index Materialization for No-Index Case by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7998" target="_blank" rel="noopener noreferrer" class="">#7998</a></li>
<li class="">HTTP connector with dynamic filter support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7969" target="_blank" rel="noopener noreferrer" class="">#7969</a></li>
<li class="">Revert federation 'can_execute_plan' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7999" target="_blank" rel="noopener noreferrer" class="">#7999</a></li>
<li class="">Fix stale caching by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7995" target="_blank" rel="noopener noreferrer" class="">#7995</a></li>
<li class="">Fix count(*) for http connector by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8001" target="_blank" rel="noopener noreferrer" class="">#8001</a></li>
<li class="">[CLI] Install specific version by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8006" target="_blank" rel="noopener noreferrer" class="">#8006</a></li>
<li class="">Fix stale with revalidate request/response by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8005" target="_blank" rel="noopener noreferrer" class="">#8005</a></li>
<li class="">Fallback <code>RequestContext</code> for cluster queries by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8007" target="_blank" rel="noopener noreferrer" class="">#8007</a></li>
<li class="">Use use_rustls_tls for Spice Cloud /connect by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8008" target="_blank" rel="noopener noreferrer" class="">#8008</a></li>
<li class="">Use delta-kernel-rs 0.16x + Parquet reader with object meta API changes by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8011" target="_blank" rel="noopener noreferrer" class="">#8011</a></li>
<li class="">fix: Update datafusion &amp; arrow-rs with S3 versioning fix by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8012" target="_blank" rel="noopener noreferrer" class="">#8012</a></li>
<li class="">Add 1.9.0-rc.2 release notes by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7993" target="_blank" rel="noopener noreferrer" class="">#7993</a></li>
<li class="">Update Datafusion version by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8014" target="_blank" rel="noopener noreferrer" class="">#8014</a></li>
<li class="">[Acceleration] DuckDB tables mode partitioner + CTE rewrite optimizer by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8013" target="_blank" rel="noopener noreferrer" class="">#8013</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8015" target="_blank" rel="noopener noreferrer" class="">#8015</a></li>
<li class="">Update acknowledgements by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8016" target="_blank" rel="noopener noreferrer" class="">#8016</a></li>
<li class="">Upgrade shutdown signal Ordering by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8017" target="_blank" rel="noopener noreferrer" class="">#8017</a></li>
<li class="">Set max-age: 0 during stale by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8018" target="_blank" rel="noopener noreferrer" class="">#8018</a></li>
<li class="">Add E2E test release for Helm by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8023" target="_blank" rel="noopener noreferrer" class="">#8023</a></li>
<li class="">Bump github.com/olekukonko/tablewriter from 0.0.5 to 1.1.1 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7989" target="_blank" rel="noopener noreferrer" class="">#7989</a></li>
<li class="">Bump schemars from 0.9.0 to 1.0.4 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7877" target="_blank" rel="noopener noreferrer" class="">#7877</a></li>
<li class="">Update <code>generate_changelog</code> script by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8028" target="_blank" rel="noopener noreferrer" class="">#8028</a></li>
<li class="">Update QA analytics Release 1.9.0-rc.2 by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8027" target="_blank" rel="noopener noreferrer" class="">#8027</a></li>
<li class="">[CLI] Improve auto-complete by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8022" target="_blank" rel="noopener noreferrer" class="">#8022</a></li>
<li class="">Improve verify helm workflow by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8024" target="_blank" rel="noopener noreferrer" class="">#8024</a></li>
<li class="">Bump azure_core from 0.28.0 to 0.30.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7986" target="_blank" rel="noopener noreferrer" class="">#7986</a></li>
<li class="">Test operator load test row count validation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8036" target="_blank" rel="noopener noreferrer" class="">#8036</a></li>
<li class="">fix: Revert HTTP response offloading by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8041" target="_blank" rel="noopener noreferrer" class="">#8041</a></li>
<li class="">Disable advanced filters pruning for partitioned tables by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8037" target="_blank" rel="noopener noreferrer" class="">#8037</a></li>
<li class="">fix: Ensure Vortex UncompressedSizeInBytes is calculated by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8044" target="_blank" rel="noopener noreferrer" class="">#8044</a></li>
<li class="">Add 1.9.0-rc.3 release notes by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8048" target="_blank" rel="noopener noreferrer" class="">#8048</a></li>
<li class="">fix: Update test snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8046" target="_blank" rel="noopener noreferrer" class="">#8046</a></li>
<li class="">add benchmark spicepods by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8047" target="_blank" rel="noopener noreferrer" class="">#8047</a></li>
<li class="">DynamoDB TPC-H SF1 Benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8043" target="_blank" rel="noopener noreferrer" class="">#8043</a></li>
<li class="">Bump github.com/AzureAD/microsoft-authentication-library-for-go from 1.5.0 to 1.6.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7988" target="_blank" rel="noopener noreferrer" class="">#7988</a></li>
<li class="">Bump golang.org/x/sys from 0.37.0 to 0.38.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7987" target="_blank" rel="noopener noreferrer" class="">#7987</a></li>
<li class="">v1.9.0-rc.2 README updates by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8035" target="_blank" rel="noopener noreferrer" class="">#8035</a></li>
<li class="">Bump suppaftp from 5.4.0 to 6.3.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7875" target="_blank" rel="noopener noreferrer" class="">#7875</a></li>
<li class="">Bump ctor from 0.5.0 to 0.6.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7873" target="_blank" rel="noopener noreferrer" class="">#7873</a></li>
<li class="">WW README Update by <a href="https://github.com/wyattwenzel" target="_blank" rel="noopener noreferrer" class="">@wyattwenzel</a> in <a href="https://github.com/spiceai/spiceai/pull/8058" target="_blank" rel="noopener noreferrer" class="">#8058</a></li>
<li class="">Reenable dynamic federation support by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8026" target="_blank" rel="noopener noreferrer" class="">#8026</a></li>
<li class="">fix: Prevent SortExec from ordering below SchemaCastScanExec by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8061" target="_blank" rel="noopener noreferrer" class="">#8061</a></li>
<li class="">Skip logging and return OK() on error during shutdown by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8057" target="_blank" rel="noopener noreferrer" class="">#8057</a></li>
<li class="">Partition pruning with complex expressions by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8040" target="_blank" rel="noopener noreferrer" class="">#8040</a></li>
<li class="">Update openapi.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8064" target="_blank" rel="noopener noreferrer" class="">#8064</a></li>
<li class="">Make DynamoDB snapshots consistent by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8069" target="_blank" rel="noopener noreferrer" class="">#8069</a></li>
<li class="">Add check for error log by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8070" target="_blank" rel="noopener noreferrer" class="">#8070</a></li>
<li class="">Fix tracing of 's3_vector_query_and_get' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8065" target="_blank" rel="noopener noreferrer" class="">#8065</a></li>
<li class="">DuckDB v1.4.2 by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8073" target="_blank" rel="noopener noreferrer" class="">#8073</a></li>
<li class="">Fix failing OpenAI test by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8076" target="_blank" rel="noopener noreferrer" class="">#8076</a></li>
<li class="">Enable 'test_recency_scoring' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8068" target="_blank" rel="noopener noreferrer" class="">#8068</a></li>
<li class="">Test operator: avoid duplicate Flight requests when using --http-clients by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8071" target="_blank" rel="noopener noreferrer" class="">#8071</a></li>
<li class="">Update load tests to use truth percentile values by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8079" target="_blank" rel="noopener noreferrer" class="">#8079</a></li>
<li class="">Update DynamoDB to RC by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8060" target="_blank" rel="noopener noreferrer" class="">#8060</a></li>
<li class=""><code>CachedQueryVector</code> to avoid recomputing embedding vector for spilling/partitioned vector indexes. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8059" target="_blank" rel="noopener noreferrer" class="">#8059</a></li>
<li class="">Fix DuckDB on_commit sink race by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8081" target="_blank" rel="noopener noreferrer" class="">#8081</a></li>
<li class="">Add partitioned duckdb by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8083" target="_blank" rel="noopener noreferrer" class="">#8083</a></li>
<li class="">[CLI] Security and santization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8082" target="_blank" rel="noopener noreferrer" class="">#8082</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8084" target="_blank" rel="noopener noreferrer" class="">#8084</a></li>
<li class="">Fix partition_by expression by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8087" target="_blank" rel="noopener noreferrer" class="">#8087</a></li>
<li class="">Data Components security fixes and sanitization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8086" target="_blank" rel="noopener noreferrer" class="">#8086</a></li>
<li class="">Runtime security and sanitization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8088" target="_blank" rel="noopener noreferrer" class="">#8088</a></li>
<li class="">Add spicepod-validator tool and fix spicepods by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8089" target="_blank" rel="noopener noreferrer" class="">#8089</a></li>
<li class="">Skip data fetches for S3 single file refreshes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8072" target="_blank" rel="noopener noreferrer" class="">#8072</a></li>
<li class="">MCP security and sanitization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8090" target="_blank" rel="noopener noreferrer" class="">#8090</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8099" target="_blank" rel="noopener noreferrer" class="">#8099</a></li>
<li class="">Update acknowledgements by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8098" target="_blank" rel="noopener noreferrer" class="">#8098</a></li>
<li class="">Add install-dev target back to Makefile by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8100" target="_blank" rel="noopener noreferrer" class="">#8100</a></li>
<li class="">fix 'testoperator run search' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8101" target="_blank" rel="noopener noreferrer" class="">#8101</a></li>
<li class="">Update datafusion-table-providers - fix nullability inferences for MySQL and PostgreSQL, and fix full text search for PostgreSQL by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/8092" target="_blank" rel="noopener noreferrer" class="">#8092</a></li>
<li class="">Remove duplicate install-with-models by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8107" target="_blank" rel="noopener noreferrer" class="">#8107</a></li>
<li class="">Improve Cayenne partitioning by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8097" target="_blank" rel="noopener noreferrer" class="">#8097</a></li>
<li class="">Testoperator dispatch: respect <code>verify_results</code> dispatch configuration by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8106" target="_blank" rel="noopener noreferrer" class="">#8106</a></li>
<li class="">Include 'match' column only if chunk offsets found in seach query 'LogicalPlan' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8102" target="_blank" rel="noopener noreferrer" class="">#8102</a></li>
<li class="">Fix validation path by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8109" target="_blank" rel="noopener noreferrer" class="">#8109</a></li>
<li class="">Fix dispatch paths by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8110" target="_blank" rel="noopener noreferrer" class="">#8110</a></li>
<li class="">Fix dispatch spicepod paths by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8112" target="_blank" rel="noopener noreferrer" class="">#8112</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8113" target="_blank" rel="noopener noreferrer" class="">#8113</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8114" target="_blank" rel="noopener noreferrer" class="">#8114</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8116" target="_blank" rel="noopener noreferrer" class="">#8116</a></li>
<li class="">Update test Spicepods by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8131" target="_blank" rel="noopener noreferrer" class="">#8131</a></li>
<li class="">Add validation to reference schema by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8111" target="_blank" rel="noopener noreferrer" class="">#8111</a></li>
<li class="">Include root error when failing to find latest timestamp in accelerated table by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8132" target="_blank" rel="noopener noreferrer" class="">#8132</a></li>
<li class="">fix: HTTP Connector validation, query and body by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8115" target="_blank" rel="noopener noreferrer" class="">#8115</a></li>
<li class="">Update nsql model list by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8141" target="_blank" rel="noopener noreferrer" class="">#8141</a></li>
<li class="">Update DynamoDB Benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8135" target="_blank" rel="noopener noreferrer" class="">#8135</a></li>
<li class="">Fix Dremio E2E test by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8139" target="_blank" rel="noopener noreferrer" class="">#8139</a></li>
<li class="">fix: Update MongoDB benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8143" target="_blank" rel="noopener noreferrer" class="">#8143</a></li>
<li class="">fix: Update DynamoDB benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8142" target="_blank" rel="noopener noreferrer" class="">#8142</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8145" target="_blank" rel="noopener noreferrer" class="">#8145</a></li>
<li class="">fix: Update iceberg[catalog] benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8144" target="_blank" rel="noopener noreferrer" class="">#8144</a></li>
<li class="">Improve HTTP Connector UX by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8146" target="_blank" rel="noopener noreferrer" class="">#8146</a></li>
<li class="">QueryOverrides for DynamoDB benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8151" target="_blank" rel="noopener noreferrer" class="">#8151</a></li>
<li class="">test-framework: add row count validation skipping with TPC-DS defaults by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8149" target="_blank" rel="noopener noreferrer" class="">#8149</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8148" target="_blank" rel="noopener noreferrer" class="">#8148</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8154" target="_blank" rel="noopener noreferrer" class="">#8154</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8155" target="_blank" rel="noopener noreferrer" class="">#8155</a></li>
<li class="">fix: Update test snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8160" target="_blank" rel="noopener noreferrer" class="">#8160</a></li>
<li class="">Suppress <code>delta_kernel::listed_log_files</code> warnings by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8158" target="_blank" rel="noopener noreferrer" class="">#8158</a></li>
<li class="">Update table providers to fix warning by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8156" target="_blank" rel="noopener noreferrer" class="">#8156</a></li>
<li class="">Suppress MCP limit log by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8159" target="_blank" rel="noopener noreferrer" class="">#8159</a></li>
<li class="">Remove incorrect tool name validation by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8161" target="_blank" rel="noopener noreferrer" class="">#8161</a></li>
<li class="">Disable results validation for federated/glue[csv].yaml by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8163" target="_blank" rel="noopener noreferrer" class="">#8163</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/8164" target="_blank" rel="noopener noreferrer" class="">#8164</a></li>
<li class="">Fix dynamodb overrides by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8165" target="_blank" rel="noopener noreferrer" class="">#8165</a></li>
<li class="">Fix dynamo db overrides again by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8166" target="_blank" rel="noopener noreferrer" class="">#8166</a></li>
<li class="">few more dynamodb overrides by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8167" target="_blank" rel="noopener noreferrer" class="">#8167</a></li>
<li class="">Add stub release notes for v1.9.0-rc.4 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8168" target="_blank" rel="noopener noreferrer" class="">#8168</a></li>
<li class="">Add v1.9.0-rc.4 release notes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8169" target="_blank" rel="noopener noreferrer" class="">#8169</a></li>
<li class="">fix: Cayenne concurrent table creation by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8176" target="_blank" rel="noopener noreferrer" class="">#8176</a></li>
<li class="">fix: Avoid pruning bucket partitions for != and NOT IN operators by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8177" target="_blank" rel="noopener noreferrer" class="">#8177</a></li>
</ul>]]></content>
        <author>
            <name>Phillip LeBlanc</name>
            <uri>https://x.com/leblancphill</uri>
        </author>
        <category label="release" term="release"/>
        <category label="cayenne" term="cayenne"/>
        <category label="acceleration" term="acceleration"/>
        <category label="distributed-query" term="distributed-query"/>
        <category label="ballista" term="ballista"/>
        <category label="datafusion" term="datafusion"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="duckdb" term="duckdb"/>
        <category label="full-text-search" term="full-text-search"/>
        <category label="vector-search" term="vector-search"/>
        <category label="hybrid-search" term="hybrid-search"/>
        <category label="data-connector" term="data-connector"/>
        <category label="performance" term="performance"/>
        <category label="sql" term="sql"/>
        <category label="vortex" term="vortex"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.9.0-rc.4 (Nov 18, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.9.0-rc.4</id>
        <link href="https://spiceai.org/blog/releases/v1.9.0-rc.4"/>
        <updated>2025-11-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.9.0-rc.4!]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.9.0-rc.4! <!-- -->🌶</p>
<p>This release candidate brings <strong>DuckDB v1.4.2</strong>, <strong>Cayenne partitioning improvements</strong>, and comprehensive <strong>security hardening</strong> across the CLI, data connectors, runtime, and MCP. v1.9.0-rc.4 also includes <strong>MySQL and PostgreSQL</strong> connector improvements with fixed nullability inferences and full-text search support, <strong>DynamoDB consistency</strong> improvements, <strong>HTTP connector</strong> validation and UX enhancements, and numerous reliability and performance optimizations. Significant improvements were also made to test and automation infrastructure to ensure high quality releases.</p>
<p>v1.9.0 introduces <strong>Spice Cayenne</strong>, a new high-performance data accelerator built on the <strong>Vortex</strong> columnar format that delivers better than DuckDB performance without single-file scaling limitations, and a preview of <strong>Multi-Node Distributed Query</strong> based on Apache Ballista. v1.9.0 also upgrades to DataFusion v50 for even higher query performance, expands search capabilities with full-text search on views and multi-column embeddings, and delivers many additional features and improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v190">What's New in v1.9.0<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#whats-new-in-v190" class="hash-link" aria-label="Direct link to What's New in v1.9.0" title="Direct link to What's New in v1.9.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-data-accelerator-beta">Cayenne Data Accelerator (Beta)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#cayenne-data-accelerator-beta" class="hash-link" aria-label="Direct link to Cayenne Data Accelerator (Beta)" title="Direct link to Cayenne Data Accelerator (Beta)" translate="no">​</a></h3>
<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">Data Accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex columnar format</a>, a Linux Foundation project. Cayenne delivers query and ingestion performance better than DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>
<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing data in Vortex's compressed columnar format. This architecture provides:</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>
<li class=""><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>
<li class=""><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>
<li class=""><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>
<li class=""><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>
<li class=""><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> accelerated_data_30d</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cayenne</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> append</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention_sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '30 days'</span><br></span></code></pre></div></div>
<p>Note, the Cayenne Data Accelerator is in <a href="https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/beta.md" target="_blank" rel="noopener noreferrer" class="">Beta</a> with limitations.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne Documentation</a>, the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex project</a>, and the <a href="https://duckdb.org/2025/05/27/ducklake" target="_blank" rel="noopener noreferrer" class="">DuckLake announcement</a> that partly inspired this design.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="multi-node-distributed-query-preview">Multi-Node Distributed Query (Preview)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#multi-node-distributed-query-preview" class="hash-link" aria-label="Direct link to Multi-Node Distributed Query (Preview)" title="Direct link to Multi-Node Distributed Query (Preview)" translate="no">​</a></h3>
<p><strong>Apache Ballista Integration</strong>: Spice now supports distributed query execution based on <a href="https://github.com/apache/datafusion-ballista" target="_blank" rel="noopener noreferrer" class="">Apache Ballista</a>, enabling distributed queries across multiple executor nodes for improved performance on large datasets. This feature is in <strong>preview</strong> in v1.9.0-rc.3.</p>
<p><strong>Architecture</strong>:</p>
<p>A distributed Spice cluster consists of:</p>
<ul>
<li class=""><strong>Scheduler</strong>: Responsible for distributed query planning and work queue management for the executor fleet</li>
<li class=""><strong>Executors</strong>: One or more nodes responsible for running physical query plans</li>
</ul>
<p><strong>Getting Started</strong>:</p>
<p>Start a scheduler instance using an existing Spicepod. The scheduler is the only spiced instance that needs to be configured:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Start scheduler (note the flight bind address override if you want it reachable outside localhost)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spiced --cluster-mode scheduler </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--flight</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">0.0</span><span class="token plain">.0.0:50051</span><br></span></code></pre></div></div>
<p>Start one or more executors configured with the scheduler's flight URI:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Start executor (automatically selects a free port if 50051 is taken)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spiced --cluster-mode executor --scheduler-url spiced://localhost:50051</span><br></span></code></pre></div></div>
<p><strong>Query Execution</strong>:</p>
<p>Queries run through the scheduler will now show a <code>distributed_plan</code> in <code>EXPLAIN</code> output, demonstrating how the query is distributed across executor nodes:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">EXPLAIN</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">count</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> my_dataset</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p><strong>Current Limitations</strong>:</p>
<ul>
<li class="">Accelerated datasets are currently <strong>not supported</strong>. This feature is designed for querying partitioned data lake formats (Parquet, Delta Lake, Iceberg, etc.)</li>
<li class="">The feature is in <strong>preview</strong> and may have stability or performance limitations</li>
<li class="">Specific acceleration support is planned for future releases</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="datafusion-v50-upgrade">DataFusion v50 Upgrade<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#datafusion-v50-upgrade" class="hash-link" aria-label="Direct link to DataFusion v50 Upgrade" title="Direct link to DataFusion v50 Upgrade" translate="no">​</a></h3>
<p>Spice.ai is built on the <a href="https://datafusion.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion</a> query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>
<p><strong>Performance Improvements 🚀</strong>:</p>
<ul>
<li class="">
<p><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</p>
</li>
<li class="">
<p><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</p>
</li>
</ul>
<p><strong>Apache Spark Compatible Functions</strong>: Added support for Spark-compatible functions including <code>array</code>, <code>bit_get/bit_count</code>, <code>bitmap_count</code>, <code>crc32/sha1</code>, <code>date_add/date_sub</code>, <code>if</code>, <code>last_day</code>, <code>like/ilike</code>, <code>luhn_check</code>, <code>mod/pmod</code>, <code>next_day</code>, <code>parse_url</code>, <code>rint</code>, and <code>width_bucket</code>.</p>
<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>
<p>See the <a href="https://github.com/apache/datafusion/releases" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion 50.0.3 Release</a> for more details.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-v142-upgrade-and-accelerator-improvements">DuckDB v1.4.2 Upgrade and Accelerator Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#duckdb-v142-upgrade-and-accelerator-improvements" class="hash-link" aria-label="Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements" title="Direct link to DuckDB v1.4.2 Upgrade and Accelerator Improvements" translate="no">​</a></h3>
<p><strong>DuckDB v1.4.2</strong>: DuckDB has been upgraded to v1.4.2, which includes several <a href="https://duckdb.org/2024/09/16/announcing-duckdb-140#performance-and-optimizations" target="_blank" rel="noopener noreferrer" class="">performance optimizations</a>.</p>
<p><strong>Composite ART Index Support</strong>: DuckDB in Spice now supports composite (multi-column) Adaptive Radix Tree (ART) indexes for accelerated table scans. When queries filter on multiple columns fully covered by a composite index, the optimizer automatically uses index scans instead of full table scans, delivering significant performance improvements for selective queries.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">indexes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">'(region, product_id)'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Performance example with composite index on 7.5M rows:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Without index: 0.282s</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- With composite index (region, product_id): 0.037s</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Performance improvement: 7.6x faster with composite index</span><br></span></code></pre></div></div>
<p><strong>DuckDB Intermediate Materialization</strong>: Queries with indexes now use intermediate materialization (<code>WITH ... AS MATERIALIZED</code>) to leverage faster index scans. Currently supported for non-federated queries (<code>query_federation: disabled</code>) against a single table with indexes only. When predicates cover more columns than the index, the optimizer rewrites queries to first materialize index-filtered results, then apply remaining predicates. This optimization can deliver significant performance improvements for selective queries.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//sales_data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">query_federation</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> disabled </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Required currently for intermediate materialization</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">indexes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">'(region, product_id)'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Performance 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Query with indexed columns (region, product_id) plus additional filter (amount)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> amount </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1000</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Optimized execution time: 0.031s (with intermediate materialization)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Standard execution time: 0.108s (without optimization)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Performance improvement: ~3.5x faster</span><br></span></code></pre></div></div>
<p>The optimizer automatically rewrites the query to:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">WITH</span><span class="token plain"> _intermediate_materialize </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> MATERIALIZED </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> _intermediate_materialize </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> amount </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1000</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>
<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>
<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my_bucket/large_table/</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> partitioned_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '7 days'</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="http-data-connector">HTTP Data Connector<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#http-data-connector" class="hash-link" aria-label="Direct link to HTTP Data Connector" title="Direct link to HTTP Data Connector" translate="no">​</a></h3>
<ul>
<li class="">
<p><strong>Querying endpoints as tables</strong>: The HTTP/HTTPS Data Connectors now supports querying HTTP endpoints directly as tables in SQL queries with dynamic filters. This feature transforms REST APIs into queryable data sources, making it easy to integrate external service data.</p>
</li>
<li class="">
<p>Query HTTP endpoint that returns structured data (JSON, CSV, etc.) as if it were a database table</p>
</li>
<li class="">
<p>Configurable retry logic, timeouts, and POST request support for more complex API interactions</p>
</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">max_retries</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">3</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">client_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></span></code></pre></div></div>
<p>Example SQL query:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> request_path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> request_query</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> request_path </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/search/people'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_query </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'q=michael'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>If a <code>request_body</code> is supplied it will be posted to the endpoint:</p>
<p>Example SQL query:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> request_path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> request_query</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> request_path </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/search/people'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_query </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'q=michael'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_body </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{"name": "michael"}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>HTTP endpoints can be accelerated using <code>refresh_sql</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> full</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">|</span><span class="token scalar string" style="color:hsl(119, 34%, 47%)"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        SELECT request_path, request_query, content </span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        FROM tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        WHERE request_path = '/search/people'</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">          AND request_query IN ('q=michael', 'q=luke')</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-data-connector-improvements">DynamoDB Data Connector Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#dynamodb-data-connector-improvements" class="hash-link" aria-label="Direct link to DynamoDB Data Connector Improvements" title="Direct link to DynamoDB Data Connector Improvements" translate="no">​</a></h3>
<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> ddb_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">scan_segments</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="s3-versioning-support">S3 Versioning Support<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#s3-versioning-support" class="hash-link" aria-label="Direct link to S3 Versioning Support" title="Direct link to S3 Versioning Support" translate="no">​</a></h3>
<p><strong>Atomic Range Reads for Versioned Files</strong>: Spice now supports <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html" target="_blank" rel="noopener noreferrer" class="">S3 Versioning</a> for all connectors using object-store (S3, Delta Lake, etc.), ensuring range reads over versioned files are atomically correct. When S3 versioning is enabled, Spice automatically tracks version IDs during file discovery and uses them for all subsequent range reads, preventing inconsistencies from concurrent file modifications.</p>
<p><strong>Current limitations</strong>:</p>
<ul>
<li class="">Multi-file connections (e.g., partitioned datasets) do not yet support version tracking across all files</li>
<li class="">Version tracking is automatic when S3 versioning is enabled on the bucket</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="search--embeddings-enhancements">Search &amp; Embeddings Enhancements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#search--embeddings-enhancements" class="hash-link" aria-label="Direct link to Search &amp; Embeddings Enhancements" title="Direct link to Search &amp; Embeddings Enhancements" translate="no">​</a></h3>
<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>
<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>
<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">views</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> aggregated_reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> SELECT review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> review_text FROM reviews WHERE rating </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">&gt;</span><span class="token plain"> 4</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">column</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> review_text</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">model</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">text</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embedding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">small</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dedicated-query-thread-pool-now-enabled-by-default">Dedicated Query Thread Pool (Now Enabled by Default)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#dedicated-query-thread-pool-now-enabled-by-default" class="hash-link" aria-label="Direct link to Dedicated Query Thread Pool (Now Enabled by Default)" title="Direct link to Dedicated Query Thread Pool (Now Enabled by Default)" translate="no">​</a></h3>
<p><strong>Dedicated Query Thread Pool</strong>: Query execution and accelerated refreshes now run on their own dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health checks fast and avoiding unnecessary Kubernetes pod restarts under load.</p>
<p>This feature was opt-in in previous releases and is now <strong>enabled by default</strong>. To disable it and revert to the previous behavior, add the following spicepod.yaml configuration:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dedicated_thread_pool</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> none</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-performance-optimizations">Query Performance Optimizations<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#query-performance-optimizations" class="hash-link" aria-label="Direct link to Query Performance Optimizations" title="Direct link to Query Performance Optimizations" translate="no">​</a></h3>
<p><strong>Stale-While-Revalidate Cache Control</strong>: Query results now support "stale-while-revalidate" cache control, allowing stale cached data to be served immediately while asynchronously refreshing the cache entry in the background. This improves response times for frequently-accessed queries while maintaining data freshness. Requires cache key type to be set to "sql (raw)" for proper operation.</p>
<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>
<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-result-cache-stale-while-revalidate">Query Result Cache: Stale-While-Revalidate<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#query-result-cache-stale-while-revalidate" class="hash-link" aria-label="Direct link to Query Result Cache: Stale-While-Revalidate" title="Direct link to Query Result Cache: Stale-While-Revalidate" translate="no">​</a></h3>
<p><strong>HTTP Cache-Control Support</strong>: The query result cache now supports the <code>stale-while-revalidate</code> Cache-Control directive, enabling faster response times by serving stale cached results immediately while asynchronously refreshing the cache in the background. This feature is particularly useful for applications that can tolerate slightly stale data in exchange for improved performance.</p>
<p><strong>How it works</strong>:</p>
<p>When a cache entry is stale but within the <code>stale-while-revalidate</code> window, Spice will:</p>
<ol>
<li class="">Immediately return the stale cached result to the client</li>
<li class="">Asynchronously re-execute the query in the background to refresh the cache</li>
<li class="">Future requests will use the refreshed data</li>
</ol>
<p><strong>Configuration</strong>:</p>
<p>Use the <code>Cache-Control</code> HTTP header with the <code>stale-while-revalidate</code> directive:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Cache-Control: max-age=300, stale-while-revalidate=60</span><br></span></code></pre></div></div>
<p>This configuration caches results for 5 minutes (300 seconds), and allows serving stale results for an additional 60 seconds while refreshing in the background.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li class="">Must use plan or raw SQL cache keys (set <code>cache_key_type</code> to <code>sql</code> or <code>plan</code> in results_caching configuration)</li>
<li class="">Background revalidation re-executes queries through the normal query path</li>
<li class="">Timestamp tracking automatically determines cache entry age for staleness checks</li>
</ul>
<p>Example configuration via HTTP header:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">GET /v1/sql</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Cache-Control: max-age=600, stale-while-revalidate=120</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">X-Cache-Key-Type: sql</span><br></span></code></pre></div></div>
<p>This feature improves application responsiveness while ensuring data freshness through background updates.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security--reliability-improvements">Security &amp; Reliability Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#security--reliability-improvements" class="hash-link" aria-label="Direct link to Security &amp; Reliability Improvements" title="Direct link to Security &amp; Reliability Improvements" translate="no">​</a></h3>
<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>
<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>
<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>
<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="aws-authentication-improvements">AWS Authentication Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#aws-authentication-improvements" class="hash-link" aria-label="Direct link to AWS Authentication Improvements" title="Direct link to AWS Authentication Improvements" translate="no">​</a></h3>
<p><strong>Improved Credential Retry Logic</strong>: AWS SDK credential initialization has been significantly improved with more robust retry logic and better error handling. The system now automatically retries transient credential resolution failures using Fibonacci backoff, allowing Spice to tolerate extended AWS outages (up to ~48 hours) without manual intervention.</p>
<p><strong>Key features</strong>:</p>
<ul>
<li class=""><strong>Automatic retry with backoff</strong>: Implements Fibonacci backoff for transient credential failures (network issues, temporary AWS service disruptions)</li>
<li class=""><strong>Configurable retry limits</strong>: Supports up to 300 retry attempts with a maximum retry interval of 600 seconds</li>
<li class=""><strong>Better error handling</strong>: Distinguishes between retryable errors (connector errors) and non-retryable errors (misconfiguration)</li>
<li class=""><strong>Unauthenticated access support</strong>: Properly supports unauthenticated access to public S3 buckets without requiring credentials</li>
<li class=""><strong>Improved error messages</strong>: Provides detailed logging with attempt numbers, retry intervals, and error context for better troubleshooting</li>
</ul>
<p>The improvements ensure more reliable AWS service integration, particularly in environments with intermittent network connectivity or during AWS service degradations.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="observability--tracing">Observability &amp; Tracing<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#observability--tracing" class="hash-link" aria-label="Direct link to Observability &amp; Tracing" title="Direct link to Observability &amp; Tracing" translate="no">​</a></h3>
<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>
<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="git-data-connector-alpha">Git Data Connector (Alpha)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#git-data-connector-alpha" class="hash-link" aria-label="Direct link to Git Data Connector (Alpha)" title="Direct link to Git Data Connector (Alpha)" translate="no">​</a></h3>
<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//github.com/myorg/myrepo</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git_metrics</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> csv</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/git" target="_blank" rel="noopener noreferrer" class="">Git Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-java-sdk-040">Spice Java SDK 0.4.0<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#spice-java-sdk-040" class="hash-link" aria-label="Direct link to Spice Java SDK 0.4.0" title="Direct link to Spice Java SDK 0.4.0" translate="no">​</a></h3>
<p>The Spice Java SDK have been upgraded with support configurable Arrow memory limit: <a href="https://github.com/spiceai/spice-java/releases/tag/v0.4.0" target="_blank" rel="noopener noreferrer" class="">spice-java v0.4.0</a></p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">SpiceClient client = SpiceClient.builder()</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    .withArrowMemoryLimitMB(1024) // 1GB limit</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    .build();</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cli-improvements">CLI Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#cli-improvements" class="hash-link" aria-label="Direct link to CLI Improvements" title="Direct link to CLI Improvements" translate="no">​</a></h3>
<p><strong>Install Specific Versions</strong>: The <code>spice install</code> command now supports installing specific versions of the Spice runtime and CLI. This enables easy version management, downgrading, or installation of specific releases for testing or compatibility requirements.</p>
<p>Usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install a specific version</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install v1.8.3</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install a specific version with AI flavor</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install v1.8.3 ai</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install latest version (existing behavior)</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install ai</span><br></span></code></pre></div></div>
<p>Note: Homebrew installations require manual version management via <code>brew install spiceai/spiceai/spice@&lt;version&gt;</code>.</p>
<p><strong>Persistent Query History</strong>: The Spice CLI REPL (SQL, search, and chat interfaces) now persists command history to <code>~/.spice/query_history.txt</code>, making your query history available across sessions. The history file is automatically created if it doesn't exist, with graceful fallback if the home directory cannot be determined.</p>
<p><strong>New REPL Commands</strong>:</p>
<ul>
<li class=""><code>.clear</code> - Clear the screen using ANSI escape codes for a clean workspace</li>
<li class=""><code>.clear history</code> - Clear and persist the query history, removing all stored commands</li>
</ul>
<p><strong>Tab Completion</strong>: Tab completion now includes suggestions based on your command history, making it faster to re-run or modify previous queries.</p>
<p>Example usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; SELECT * FROM my_table;</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; .clear          # Clears the screen</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; .clear history  # Clears command history</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; # Use arrow keys or tab to access previous commands</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>
<li class=""><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>
<li class=""><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>
<li class=""><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>
<li class=""><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>
<li class=""><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>
<li class=""><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>
<li class=""><strong>Validation</strong>: Added timestamp support for partition expressions.</li>
<li class=""><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>
<li class=""><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p><strong>New HTTP Data Connector Recipe</strong>: New recipe demonstrating how to query REST APIs and HTTP(s) endpoints. See <a href="https://github.com/spiceai/cookbook/tree/trunk/http" target="_blank" rel="noopener noreferrer" class="">HTTP Connector Recipe</a> for details.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.9.0-rc.4</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<ul>
<li class=""><strong>DataFusion</strong>: <a href="https://datafusion.apache.org/blog/2025/09/29/datafusion-50.0.0/" target="_blank" rel="noopener noreferrer" class="">Upgraded to v50</a></li>
<li class=""><strong>Apache Arrow</strong>: <a href="https://github.com/apache/arrow-rs/releases/tag/56.0.0" target="_blank" rel="noopener noreferrer" class="">Upgraded to v56</a></li>
<li class=""><strong>DuckDB</strong>: <a href="https://github.com/duckdb/duckdb/releases/tag/v1.4.2" target="_blank" rel="noopener noreferrer" class="">Upgraded to v1.4.2</a></li>
<li class=""><strong>Delta Kernel</strong>: <a href="https://github.com/delta-io/delta-kernel-rs/blob/main/CHANGELOG.md#v0160-2025-09-19" target="_blank" rel="noopener noreferrer" class="">Upgraded to v0.16.0</a></li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog-rc4">Changelog (rc.4)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.4#changelog-rc4" class="hash-link" aria-label="Direct link to Changelog (rc.4)" title="Direct link to Changelog (rc.4)" translate="no">​</a></h3>
<ul>
<li class="">Upgrade shutdown signal Ordering by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8017" target="_blank" rel="noopener noreferrer" class="">#8017</a></li>
<li class="">Set max-age: 0 during stale by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8018" target="_blank" rel="noopener noreferrer" class="">#8018</a></li>
<li class="">Add E2E test release for Helm by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8023" target="_blank" rel="noopener noreferrer" class="">#8023</a></li>
<li class="">Update <code>generate_changelog</code> script by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8028" target="_blank" rel="noopener noreferrer" class="">#8028</a></li>
<li class="">[CLI] Improve auto-complete by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8022" target="_blank" rel="noopener noreferrer" class="">#8022</a></li>
<li class="">Improve verify helm workflow by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8024" target="_blank" rel="noopener noreferrer" class="">#8024</a></li>
<li class="">fix: Ensure Vortex UncompressedSizeInBytes is calculated by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8044" target="_blank" rel="noopener noreferrer" class="">#8044</a></li>
<li class="">WW README Update by <a href="https://github.com/wyattwenzel" target="_blank" rel="noopener noreferrer" class="">@wyattwenzel</a> in <a href="https://github.com/spiceai/spiceai/pull/8058" target="_blank" rel="noopener noreferrer" class="">#8058</a></li>
<li class="">Reenable dynamic federation support by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8026" target="_blank" rel="noopener noreferrer" class="">#8026</a></li>
<li class="">fix: Prevent SortExec from ordering below SchemaCastScanExec by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/8061" target="_blank" rel="noopener noreferrer" class="">#8061</a></li>
<li class="">Skip logging and return OK() on error during shutdown by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8057" target="_blank" rel="noopener noreferrer" class="">#8057</a></li>
<li class="">Partition pruning with complex expressions by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8040" target="_blank" rel="noopener noreferrer" class="">#8040</a></li>
<li class="">Make DynamoDB snapshots consistent by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8069" target="_blank" rel="noopener noreferrer" class="">#8069</a></li>
<li class="">Add check for error log by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8070" target="_blank" rel="noopener noreferrer" class="">#8070</a></li>
<li class="">Fix tracing of 's3_vector_query_and_get' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8065" target="_blank" rel="noopener noreferrer" class="">#8065</a></li>
<li class="">DuckDB v1.4.2 by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8073" target="_blank" rel="noopener noreferrer" class="">#8073</a></li>
<li class="">Fix failing OpenAI test by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8076" target="_blank" rel="noopener noreferrer" class="">#8076</a></li>
<li class="">Enable 'test_recency_scoring' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8068" target="_blank" rel="noopener noreferrer" class="">#8068</a></li>
<li class="">Test operator: avoid duplicate Flight requests when using --http-clients by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8071" target="_blank" rel="noopener noreferrer" class="">#8071</a></li>
<li class="">Update load tests to use truth percentile values by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8079" target="_blank" rel="noopener noreferrer" class="">#8079</a></li>
<li class="">Update DynamoDB to RC by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8060" target="_blank" rel="noopener noreferrer" class="">#8060</a></li>
<li class=""><code>CachedQueryVector</code> to avoid recomputing embedding vector for spilling/partitioned vector indexes.  by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8059" target="_blank" rel="noopener noreferrer" class="">#8059</a></li>
<li class="">Fix DuckDB on_commit sink race by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8081" target="_blank" rel="noopener noreferrer" class="">#8081</a></li>
<li class="">Add partitioned duckdb by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8083" target="_blank" rel="noopener noreferrer" class="">#8083</a></li>
<li class="">[CLI] Security and santization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8082" target="_blank" rel="noopener noreferrer" class="">#8082</a></li>
<li class="">Fix partition_by expression by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8087" target="_blank" rel="noopener noreferrer" class="">#8087</a></li>
<li class="">Data Components security fixes and sanitization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8086" target="_blank" rel="noopener noreferrer" class="">#8086</a></li>
<li class="">Runtime security and sanitization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8088" target="_blank" rel="noopener noreferrer" class="">#8088</a></li>
<li class="">Add spicepod-validator tool and fix spicepods by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8089" target="_blank" rel="noopener noreferrer" class="">#8089</a></li>
<li class="">Skip data fetches for S3 single file refreshes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8072" target="_blank" rel="noopener noreferrer" class="">#8072</a></li>
<li class="">MCP security and sanitization by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8090" target="_blank" rel="noopener noreferrer" class="">#8090</a></li>
<li class="">Add install-dev target back to Makefile by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8100" target="_blank" rel="noopener noreferrer" class="">#8100</a></li>
<li class="">fix 'testoperator run search' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8101" target="_blank" rel="noopener noreferrer" class="">#8101</a></li>
<li class="">Update datafusion-table-providers - fix nullability inferences for MySQL and PostgreSQL, and fix full text search for PostgreSQL by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/8092" target="_blank" rel="noopener noreferrer" class="">#8092</a></li>
<li class="">Remove duplicate install-with-models by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8107" target="_blank" rel="noopener noreferrer" class="">#8107</a></li>
<li class="">Improve Cayenne partitioning by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8097" target="_blank" rel="noopener noreferrer" class="">#8097</a></li>
<li class="">Testoperator dispatch: respect <code>verify_results</code> dispatch configuration by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8106" target="_blank" rel="noopener noreferrer" class="">#8106</a></li>
<li class="">Include 'match' column only if chunk offsets found in seach query 'LogicalPlan' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8102" target="_blank" rel="noopener noreferrer" class="">#8102</a></li>
<li class="">Fix validation path by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8109" target="_blank" rel="noopener noreferrer" class="">#8109</a></li>
<li class="">Fix dispatch paths by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8110" target="_blank" rel="noopener noreferrer" class="">#8110</a></li>
<li class="">Fix dispatch spicepod paths by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8112" target="_blank" rel="noopener noreferrer" class="">#8112</a></li>
<li class="">Update test Spicepods by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8131" target="_blank" rel="noopener noreferrer" class="">#8131</a></li>
<li class="">Add validation to reference schema by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8111" target="_blank" rel="noopener noreferrer" class="">#8111</a></li>
<li class="">Include root error when failing to find latest timestamp in accelerated table by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8132" target="_blank" rel="noopener noreferrer" class="">#8132</a></li>
<li class="">fix: HTTP Connector validation, query and body by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8115" target="_blank" rel="noopener noreferrer" class="">#8115</a></li>
<li class="">Update nsql model list by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8141" target="_blank" rel="noopener noreferrer" class="">#8141</a></li>
<li class="">Update DynamoDB Benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8135" target="_blank" rel="noopener noreferrer" class="">#8135</a></li>
<li class="">Fix Dremio E2E test by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8139" target="_blank" rel="noopener noreferrer" class="">#8139</a></li>
<li class="">Improve HTTP Connector UX by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8146" target="_blank" rel="noopener noreferrer" class="">#8146</a></li>
<li class="">QueryOverrides for DynamoDB benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8151" target="_blank" rel="noopener noreferrer" class="">#8151</a></li>
<li class="">test-framework: add row count validation skipping with TPC-DS defaults by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/8149" target="_blank" rel="noopener noreferrer" class="">#8149</a></li>
<li class="">Suppress <code>delta_kernel::listed_log_files</code> warnings by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8158" target="_blank" rel="noopener noreferrer" class="">#8158</a></li>
<li class="">Update table providers to fix warning by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8156" target="_blank" rel="noopener noreferrer" class="">#8156</a></li>
<li class="">Suppress MCP limit log by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8159" target="_blank" rel="noopener noreferrer" class="">#8159</a></li>
<li class="">Remove incorrect tool name validation by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8161" target="_blank" rel="noopener noreferrer" class="">#8161</a></li>
<li class="">Disable results validation for federated/glue[csv].yaml by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8163" target="_blank" rel="noopener noreferrer" class="">#8163</a></li>
<li class="">Fix dynamodb overrides by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8165" target="_blank" rel="noopener noreferrer" class="">#8165</a></li>
<li class="">Fix dynamo db overrides again by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8166" target="_blank" rel="noopener noreferrer" class="">#8166</a></li>
<li class="">few more dynamodb overrides by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8167" target="_blank" rel="noopener noreferrer" class="">#8167</a></li>
<li class="">Add stub release notes for v1.9.0-rc.4 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/8168" target="_blank" rel="noopener noreferrer" class="">#8168</a></li>
</ul>]]></content>
        <author>
            <name>Phillip LeBlanc</name>
            <uri>https://x.com/leblancphill</uri>
        </author>
        <category label="release" term="release"/>
        <category label="cayenne" term="cayenne"/>
        <category label="acceleration" term="acceleration"/>
        <category label="distributed-query" term="distributed-query"/>
        <category label="ballista" term="ballista"/>
        <category label="datafusion" term="datafusion"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="duckdb" term="duckdb"/>
        <category label="full-text-search" term="full-text-search"/>
        <category label="vector-search" term="vector-search"/>
        <category label="hybrid-search" term="hybrid-search"/>
        <category label="data-connector" term="data-connector"/>
        <category label="performance" term="performance"/>
        <category label="sql" term="sql"/>
        <category label="vortex" term="vortex"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.9.0-rc.2 (Nov 11, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.9.0-rc.2</id>
        <link href="https://spiceai.org/blog/releases/v1.9.0-rc.2"/>
        <updated>2025-11-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.9.0-rc.2!]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.9.0-rc.2! <!-- -->🌶</p>
<p>This is the second release candidate for v1.9.0, which introduces <strong>Spice Cayenne</strong>, a new high-performance data accelerator built on the <strong>Vortex</strong> columnar format that delivers better than DuckDB performance without single-file scaling limitations and a preview of <strong>Multi-Node Distributed Query</strong> based on Apache Ballista. v1.9.0-rc.2 also upgrades to DataFusion v50 and DuckDB v1.4.1 for even higher query performance, expands search capabilities with full-text search on views and multi-column embeddings, includes significant DynamoDB and DuckDB accelerator improvements, expands the HTTP data connector to support endpoints as tables, and delivers many security and reliability improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v190-rc2">What's New in v1.9.0-rc.2<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#whats-new-in-v190-rc2" class="hash-link" aria-label="Direct link to What's New in v1.9.0-rc.2" title="Direct link to What's New in v1.9.0-rc.2" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-data-accelerator-beta">Cayenne Data Accelerator (Beta)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#cayenne-data-accelerator-beta" class="hash-link" aria-label="Direct link to Cayenne Data Accelerator (Beta)" title="Direct link to Cayenne Data Accelerator (Beta)" translate="no">​</a></h3>
<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">Data Accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex columnar format</a>, a Linux Foundation project. Cayenne delivers query and ingestion performance better than DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>
<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing data in Vortex's compressed columnar format. This architecture provides:</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>
<li class=""><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>
<li class=""><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>
<li class=""><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>
<li class=""><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>
<li class=""><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> accelerated_data_30d</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cayenne</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> append</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention_sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '30 days'</span><br></span></code></pre></div></div>
<p>Note, the Cayenne Data Accelerator is in <a href="https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/beta.md" target="_blank" rel="noopener noreferrer" class="">Beta</a> with limitations.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne Documentation</a>, the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex project</a>, and the <a href="https://duckdb.org/2025/05/27/ducklake" target="_blank" rel="noopener noreferrer" class="">DuckLake announcement</a> that partly inspired this design.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="multi-node-distributed-query-preview">Multi-Node Distributed Query (Preview)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#multi-node-distributed-query-preview" class="hash-link" aria-label="Direct link to Multi-Node Distributed Query (Preview)" title="Direct link to Multi-Node Distributed Query (Preview)" translate="no">​</a></h3>
<p><strong>Apache Ballista Integration</strong>: Spice now supports distributed query execution based on <a href="https://github.com/apache/datafusion-ballista" target="_blank" rel="noopener noreferrer" class="">Apache Ballista</a>, enabling distributed queries across multiple executor nodes for improved performance on large datasets. This feature is in <strong>preview</strong> in v1.9.0-rc.2.</p>
<p><strong>Architecture</strong>:</p>
<p>A distributed Spice cluster consists of:</p>
<ul>
<li class=""><strong>Scheduler</strong>: Responsible for distributed query planning and work queue management for the executor fleet</li>
<li class=""><strong>Executors</strong>: One or more nodes responsible for running physical query plans</li>
</ul>
<p><strong>Getting Started</strong>:</p>
<p>Start a scheduler instance using an existing Spicepod. The scheduler is the only spiced instance that needs to be configured:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Start scheduler (note the flight bind address override if you want it reachable outside localhost)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spiced --cluster-mode scheduler </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--flight</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">0.0</span><span class="token plain">.0.0:50051</span><br></span></code></pre></div></div>
<p>Start one or more executors configured with the scheduler's flight URI:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Start executor (automatically selects a free port if 50051 is taken)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spiced --cluster-mode executor --scheduler-url spiced://localhost:50051</span><br></span></code></pre></div></div>
<p><strong>Query Execution</strong>:</p>
<p>Queries run through the scheduler will now show a <code>distributed_plan</code> in <code>EXPLAIN</code> output, demonstrating how the query is distributed across executor nodes:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">EXPLAIN</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">count</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> my_dataset</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p><strong>Current Limitations</strong>:</p>
<ul>
<li class="">Accelerated datasets are currently <strong>not supported</strong>. This feature is designed for querying partitioned data lake formats (Parquet, Delta Lake, Iceberg, etc.)</li>
<li class="">The feature is in <strong>preview</strong> and may have stability or performance limitations</li>
<li class="">Specific acceleration support is planned for future releases</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="datafusion-v50-upgrade">DataFusion v50 Upgrade<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#datafusion-v50-upgrade" class="hash-link" aria-label="Direct link to DataFusion v50 Upgrade" title="Direct link to DataFusion v50 Upgrade" translate="no">​</a></h3>
<p>Spice.ai is built on the <a href="https://datafusion.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion</a> query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>
<p><strong>Performance Improvements 🚀</strong>:</p>
<ul>
<li class="">
<p><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</p>
</li>
<li class="">
<p><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</p>
</li>
</ul>
<p><strong>Apache Spark Compatible Functions</strong>: Added support for Spark-compatible functions including <code>array</code>, <code>bit_get/bit_count</code>, <code>bitmap_count</code>, <code>crc32/sha1</code>, <code>date_add/date_sub</code>, <code>if</code>, <code>last_day</code>, <code>like/ilike</code>, <code>luhn_check</code>, <code>mod/pmod</code>, <code>next_day</code>, <code>parse_url</code>, <code>rint</code>, and <code>width_bucket</code>.</p>
<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>
<p>See the <a href="https://github.com/apache/datafusion/releases" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion 50.0.0 Release</a> for more details.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-v141-upgrade-and-accelerator-improvements">DuckDB v1.4.1 Upgrade and Accelerator Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#duckdb-v141-upgrade-and-accelerator-improvements" class="hash-link" aria-label="Direct link to DuckDB v1.4.1 Upgrade and Accelerator Improvements" title="Direct link to DuckDB v1.4.1 Upgrade and Accelerator Improvements" translate="no">​</a></h3>
<p><strong>DuckDB v1.4.1</strong>: DuckDB has been upgraded to v1.4.1, which includes several <a href="https://duckdb.org/2024/09/16/announcing-duckdb-140#performance-and-optimizations" target="_blank" rel="noopener noreferrer" class="">performance optimizations</a>.</p>
<p><strong>Composite ART Index Support</strong>: DuckDB in Spice now supports composite (multi-column) Adaptive Radix Tree (ART) indexes for accelerated table scans. When queries filter on multiple columns fully covered by a composite index, the optimizer automatically uses index scans instead of full table scans, delivering significant performance improvements for selective queries.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">indexes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">'(region, product_id)'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Performance example with composite index on 7.5M rows:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Without index: 0.282s</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- With composite index (region, product_id): 0.037s</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Performance improvement: 7.6x faster with composite index</span><br></span></code></pre></div></div>
<p><strong>DuckDB Intermediate Materialization</strong>: Queries with indexes now use intermediate materialization (<code>WITH ... AS MATERIALIZED</code>) to leverage faster index scans. Currently supported for non-federated queries (<code>query_federation: disabled</code>) against a single table with indexes only. When predicates cover more columns than the index, the optimizer rewrites queries to first materialize index-filtered results, then apply remaining predicates. This optimization can deliver significant performance improvements for selective queries.</p>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//sales_data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">query_federation</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> disabled </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Required currently for intermediate materialization</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">indexes</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">'(region, product_id)'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span></code></pre></div></div>
<p>Performance 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Query with indexed columns (region, product_id) plus additional filter (amount)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> amount </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1000</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Optimized execution time: 0.031s (with intermediate materialization)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Standard execution time: 0.108s (without optimization)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Performance improvement: ~3.5x faster</span><br></span></code></pre></div></div>
<p>The optimizer automatically rewrites the query to:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">WITH</span><span class="token plain"> _intermediate_materialize </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> MATERIALIZED </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> sales </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> region </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'US'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">AND</span><span class="token plain"> product_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">12345</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> _intermediate_materialize </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> amount </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1000</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>
<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>
<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my_bucket/large_table/</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> partitioned_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '7 days'</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="http-data-connector">HTTP Data Connector<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#http-data-connector" class="hash-link" aria-label="Direct link to HTTP Data Connector" title="Direct link to HTTP Data Connector" translate="no">​</a></h3>
<ul>
<li class="">
<p><strong>Querying endpoints as tables</strong>: The HTTP/HTTPS Data Connectors now supports querying HTTP endpoints directly as tables in SQL queries with dynamic filters. This feature transforms REST APIs into queryable data sources, making it easy to integrate external service data.</p>
</li>
<li class="">
<p>Query HTTP endpoint that returns structured data (JSON, CSV, etc.) as if it were a database table</p>
</li>
<li class="">
<p>Configurable retry logic, timeouts, and POST request support for more complex API interactions</p>
</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> json</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">max_retries</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">3</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">client_timeout</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></span></code></pre></div></div>
<p>Example SQL query:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> request_path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> request_query</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> request_path </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/search/people'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_query </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'q=michael'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>If a <code>request_body</code> is supplied it will be posted to the endpoint:</p>
<p>Example SQL query:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> request_path</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> request_query</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> request_path </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'/search/people'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_query </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'q=michael'</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">and</span><span class="token plain"> request_body </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{"name": "michael"}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>HTTP endpoints can be accelerated using <code>refresh_sql</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//api.tvmaze.com</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> full</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">|</span><span class="token scalar string" style="color:hsl(119, 34%, 47%)"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        SELECT request_path, request_query, content </span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        FROM tvmaze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">        request_path = '/search/people'</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token scalar string" style="color:hsl(119, 34%, 47%)">          AND request_query IN ('q=michael', 'q=luke')</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-data-connector-improvements">DynamoDB Data Connector Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#dynamodb-data-connector-improvements" class="hash-link" aria-label="Direct link to DynamoDB Data Connector Improvements" title="Direct link to DynamoDB Data Connector Improvements" translate="no">​</a></h3>
<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> ddb_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">scan_segments</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="s3-versioning-support">S3 Versioning Support<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#s3-versioning-support" class="hash-link" aria-label="Direct link to S3 Versioning Support" title="Direct link to S3 Versioning Support" translate="no">​</a></h3>
<p><strong>Atomic Range Reads for Versioned Files</strong>: Spice now supports <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html" target="_blank" rel="noopener noreferrer" class="">S3 Versioning</a> for all connectors using object-store (S3, Delta Lake, etc.), ensuring range reads over versioned files are atomically correct. When S3 versioning is enabled, Spice automatically tracks version IDs during file discovery and uses them for all subsequent range reads, preventing inconsistencies from concurrent file modifications.</p>
<p><strong>Current limitations</strong>:</p>
<ul>
<li class="">Multi-file connections (e.g., partitioned datasets) do not yet support version tracking across all files</li>
<li class="">Version tracking is automatic when S3 versioning is enabled on the bucket</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="search--embeddings-enhancements">Search &amp; Embeddings Enhancements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#search--embeddings-enhancements" class="hash-link" aria-label="Direct link to Search &amp; Embeddings Enhancements" title="Direct link to Search &amp; Embeddings Enhancements" translate="no">​</a></h3>
<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>
<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>
<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">views</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> aggregated_reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> SELECT review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> review_text FROM reviews WHERE rating </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">&gt;</span><span class="token plain"> 4</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">column</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> review_text</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">model</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">text</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embedding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">small</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dedicated-query-thread-pool-now-enabled-by-default">Dedicated Query Thread Pool (Now Enabled by Default)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#dedicated-query-thread-pool-now-enabled-by-default" class="hash-link" aria-label="Direct link to Dedicated Query Thread Pool (Now Enabled by Default)" title="Direct link to Dedicated Query Thread Pool (Now Enabled by Default)" translate="no">​</a></h3>
<p><strong>Dedicated Query Thread Pool</strong>: Query execution and accelerated refreshes now run on their own dedicated thread pool, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health checks fast and avoiding unnecessary Kubernetes pod restarts under load.</p>
<p>This feature was opt-in in previous releases and is now <strong>enabled by default</strong> in v1.9.0-rc.2. To disable it and revert to the previous behavior, add the following spicepod.yaml configuration:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dedicated_thread_pool</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> none</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-performance-optimizations">Query Performance Optimizations<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#query-performance-optimizations" class="hash-link" aria-label="Direct link to Query Performance Optimizations" title="Direct link to Query Performance Optimizations" translate="no">​</a></h3>
<p><strong>Stale-While-Revalidate Cache Control</strong>: Query results now support "stale-while-revalidate" cache control, allowing stale cached data to be served immediately while asynchronously refreshing the cache entry in the background. This improves response times for frequently-accessed queries while maintaining data freshness. Requires cache key type to be set to "sql (raw)" for proper operation.</p>
<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>
<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-result-cache-stale-while-revalidate">Query Result Cache: Stale-While-Revalidate<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#query-result-cache-stale-while-revalidate" class="hash-link" aria-label="Direct link to Query Result Cache: Stale-While-Revalidate" title="Direct link to Query Result Cache: Stale-While-Revalidate" translate="no">​</a></h3>
<p><strong>HTTP Cache-Control Support</strong>: The query result cache now supports the <code>stale-while-revalidate</code> Cache-Control directive, enabling faster response times by serving stale cached results immediately while asynchronously refreshing the cache in the background. This feature is particularly useful for applications that can tolerate slightly stale data in exchange for improved performance.</p>
<p><strong>How it works</strong>:</p>
<p>When a cache entry is stale but within the <code>stale-while-revalidate</code> window, Spice will:</p>
<ol>
<li class="">Immediately return the stale cached result to the client</li>
<li class="">Asynchronously re-execute the query in the background to refresh the cache</li>
<li class="">Future requests will use the refreshed data</li>
</ol>
<p><strong>Configuration</strong>:</p>
<p>Use the <code>Cache-Control</code> HTTP header with the <code>stale-while-revalidate</code> directive:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Cache-Control: max-age=300, stale-while-revalidate=60</span><br></span></code></pre></div></div>
<p>This configuration caches results for 5 minutes (300 seconds), and allows serving stale results for an additional 60 seconds while refreshing in the background.</p>
<p><strong>Requirements</strong>:</p>
<ul>
<li class="">Must use plan or raw SQL cache keys (set <code>cache_key_type</code> to <code>sql</code> or <code>plan</code> in results_caching configuration)</li>
<li class="">Background revalidation re-executes queries through the normal query path</li>
<li class="">Timestamp tracking automatically determines cache entry age for staleness checks</li>
</ul>
<p>Example configuration via HTTP header:</p>
<div class="language-http codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-http codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">GET /v1/sql</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">Cache-Control: max-age=600, stale-while-revalidate=120</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">X-Cache-Key-Type: sql</span><br></span></code></pre></div></div>
<p>This feature improves application responsiveness while ensuring data freshness through background updates.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security--reliability-improvements">Security &amp; Reliability Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#security--reliability-improvements" class="hash-link" aria-label="Direct link to Security &amp; Reliability Improvements" title="Direct link to Security &amp; Reliability Improvements" translate="no">​</a></h3>
<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>
<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>
<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>
<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="aws-authentication-improvements">AWS Authentication Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#aws-authentication-improvements" class="hash-link" aria-label="Direct link to AWS Authentication Improvements" title="Direct link to AWS Authentication Improvements" translate="no">​</a></h3>
<p><strong>Improved Credential Retry Logic</strong>: AWS SDK credential initialization has been significantly improved with more robust retry logic and better error handling. The system now automatically retries transient credential resolution failures using Fibonacci backoff, allowing Spice to tolerate extended AWS outages (up to ~48 hours) without manual intervention.</p>
<p><strong>Key features</strong>:</p>
<ul>
<li class=""><strong>Automatic retry with backoff</strong>: Implements Fibonacci backoff for transient credential failures (network issues, temporary AWS service disruptions)</li>
<li class=""><strong>Configurable retry limits</strong>: Supports up to 300 retry attempts with a maximum retry interval of 600 seconds</li>
<li class=""><strong>Better error handling</strong>: Distinguishes between retryable errors (connector errors) and non-retryable errors (misconfiguration)</li>
<li class=""><strong>Unauthenticated access support</strong>: Properly supports unauthenticated access to public S3 buckets without requiring credentials</li>
<li class=""><strong>Improved error messages</strong>: Provides detailed logging with attempt numbers, retry intervals, and error context for better troubleshooting</li>
</ul>
<p>The improvements ensure more reliable AWS service integration, particularly in environments with intermittent network connectivity or during AWS service degradations.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="observability--tracing">Observability &amp; Tracing<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#observability--tracing" class="hash-link" aria-label="Direct link to Observability &amp; Tracing" title="Direct link to Observability &amp; Tracing" translate="no">​</a></h3>
<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>
<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="git-data-connector-alpha">Git Data Connector (Alpha)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#git-data-connector-alpha" class="hash-link" aria-label="Direct link to Git Data Connector (Alpha)" title="Direct link to Git Data Connector (Alpha)" translate="no">​</a></h3>
<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//github.com/myorg/myrepo</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git_metrics</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> csv</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/git" target="_blank" rel="noopener noreferrer" class="">Git Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-java-sdk-040">Spice Java SDK 0.4.0<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#spice-java-sdk-040" class="hash-link" aria-label="Direct link to Spice Java SDK 0.4.0" title="Direct link to Spice Java SDK 0.4.0" translate="no">​</a></h3>
<p>The Spice Java SDK have been upgraded with support configurable Arrow memory limit: <a href="https://github.com/spiceai/spice-java/releases/tag/v0.4.0" target="_blank" rel="noopener noreferrer" class="">spice-java v0.4.0</a></p>
<div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">SpiceClient client = SpiceClient.builder()</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    .withArrowMemoryLimitMB(1024) // 1GB limit</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    .build();</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cli-improvements">CLI Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#cli-improvements" class="hash-link" aria-label="Direct link to CLI Improvements" title="Direct link to CLI Improvements" translate="no">​</a></h3>
<p><strong>Install Specific Versions</strong>: The <code>spice install</code> command now supports installing specific versions of the Spice runtime and CLI. This enables easy version management, downgrading, or installation of specific releases for testing or compatibility requirements.</p>
<p>Usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install a specific version</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install v1.8.3</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install a specific version with AI flavor</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install v1.8.3 ai</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"># Install latest version (existing behavior)</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice install ai</span><br></span></code></pre></div></div>
<p>Note: Homebrew installations require manual version management via <code>brew install spiceai/spiceai/spice@&lt;version&gt;</code>.</p>
<p><strong>Persistent Query History</strong>: The Spice CLI REPL (SQL, search, and chat interfaces) now persists command history to <code>~/.spice/query_history.txt</code>, making your query history available across sessions. The history file is automatically created if it doesn't exist, with graceful fallback if the home directory cannot be determined.</p>
<p><strong>New REPL Commands</strong>:</p>
<ul>
<li class=""><code>.clear</code> - Clear the screen using ANSI escape codes for a clean workspace</li>
<li class=""><code>.clear history</code> - Clear and persist the query history, removing all stored commands</li>
</ul>
<p><strong>Tab Completion</strong>: Tab completion now includes suggestions based on your command history, making it faster to re-run or modify previous queries.</p>
<p>Example usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; SELECT * FROM my_table;</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; .clear          # Clears the screen</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; .clear history  # Clears command history</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">sql&gt; # Use arrow keys or tab to access previous commands</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>
<li class=""><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>
<li class=""><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>
<li class=""><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>
<li class=""><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>
<li class=""><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>
<li class=""><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>
<li class=""><strong>Validation</strong>: Added timestamp support for partition expressions.</li>
<li class=""><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>
<li class=""><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#contributors" class="hash-link" aria-label="Direct link to Contributors" title="Direct link to Contributors" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#cookbook-updates" class="hash-link" aria-label="Direct link to Cookbook Updates" title="Direct link to Cookbook Updates" translate="no">​</a></h2>
<p><strong>New HTTP Data Connector Recipe</strong>: New recipe demonstrating how to query REST APIs and HTTP(s) endpoints. See <a href="https://github.com/spiceai/cookbook/tree/trunk/http" target="_blank" rel="noopener noreferrer" class="">HTTP Connector Recipe</a> for details.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 82 recipes to help you get started with Spice quickly and easily.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.9.0-rc.2</span><br></span></code></pre></div></div>
<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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#whats-changed" class="hash-link" aria-label="Direct link to What's Changed" title="Direct link to What's Changed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<ul>
<li class=""><strong>DataFusion</strong>: <a href="https://datafusion.apache.org/blog/2025/09/29/datafusion-50.0.0/" target="_blank" rel="noopener noreferrer" class="">Upgraded to v50</a></li>
<li class=""><strong>Apache Arrow</strong>: <a href="https://github.com/apache/arrow-rs/releases/tag/56.0.0" target="_blank" rel="noopener noreferrer" class="">Upgraded to v56</a></li>
<li class=""><strong>DuckDB</strong>: <a href="https://github.com/duckdb/duckdb/releases/tag/v1.4.1" target="_blank" rel="noopener noreferrer" class="">Upgraded to v1.4.1</a></li>
<li class=""><strong>Delta Kernel</strong>: <a href="https://github.com/delta-io/delta-kernel-rs/blob/main/CHANGELOG.md#v0160-2025-09-19" target="_blank" rel="noopener noreferrer" class="">Upgraded to v0.16.0</a></li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.9.0-rc.2#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Fix for search field as metadata for chunked search indexes by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7429" target="_blank" rel="noopener noreferrer" class="">#7429</a></li>
<li class="">Bump object_store from 0.12.3 to 0.12.4 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7433" target="_blank" rel="noopener noreferrer" class="">#7433</a></li>
<li class="">Properly respect disabling snapshots by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7431" target="_blank" rel="noopener noreferrer" class="">#7431</a></li>
<li class="">Revert "Properly respect disabling snapshots" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7439" target="_blank" rel="noopener noreferrer" class="">#7439</a></li>
<li class="">Revert "Disable snapshots by default" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7438" target="_blank" rel="noopener noreferrer" class="">#7438</a></li>
<li class="">Add preview warning for write access mode by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7440" target="_blank" rel="noopener noreferrer" class="">#7440</a></li>
<li class="">fix: regexp_match for DuckDB datasets by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7443" target="_blank" rel="noopener noreferrer" class="">#7443</a></li>
<li class="">Add feature is currently in preview warning for snapshots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7442" target="_blank" rel="noopener noreferrer" class="">#7442</a></li>
<li class="">[Logger] Also emit Datafusion logs by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7441" target="_blank" rel="noopener noreferrer" class="">#7441</a></li>
<li class="">add missing snapshot by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7446" target="_blank" rel="noopener noreferrer" class="">#7446</a></li>
<li class="">Fix tracing so that ai_completions are parented under sql_query by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7415" target="_blank" rel="noopener noreferrer" class="">#7415</a></li>
<li class="">Enable snapshot acceleration by default by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7451" target="_blank" rel="noopener noreferrer" class="">#7451</a></li>
<li class="">Disable acceleration refresh metrics by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7450" target="_blank" rel="noopener noreferrer" class="">#7450</a></li>
<li class="">Add v1.8 release notes by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7430" target="_blank" rel="noopener noreferrer" class="">#7430</a></li>
<li class="">fix: partition name validation by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7452" target="_blank" rel="noopener noreferrer" class="">#7452</a></li>
<li class="">Fix lint error due to ignore without reasons by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7454" target="_blank" rel="noopener noreferrer" class="">#7454</a></li>
<li class="">Add models and CUDA support to spiced install script by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7457" target="_blank" rel="noopener noreferrer" class="">#7457</a></li>
<li class="">Post-release 1.8 updates by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7455" target="_blank" rel="noopener noreferrer" class="">#7455</a></li>
<li class="">Remove println in datafusion by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7461" target="_blank" rel="noopener noreferrer" class="">#7461</a></li>
<li class="">Update end_game.md to notify once release is done by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7460" target="_blank" rel="noopener noreferrer" class="">#7460</a></li>
<li class="">Remove italics from snapshot logging by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7463" target="_blank" rel="noopener noreferrer" class="">#7463</a></li>
<li class="">Update openapi.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7466" target="_blank" rel="noopener noreferrer" class="">#7466</a></li>
<li class="">Fix generate spicepod schema by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7464" target="_blank" rel="noopener noreferrer" class="">#7464</a></li>
<li class="">Fix generate acknowledements by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7465" target="_blank" rel="noopener noreferrer" class="">#7465</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7469" target="_blank" rel="noopener noreferrer" class="">#7469</a></li>
<li class="">fix: Ensure ListingTable partitions are pruned when filters are not used by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7471" target="_blank" rel="noopener noreferrer" class="">#7471</a></li>
<li class="">Create <code>runtime-secrets</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7474" target="_blank" rel="noopener noreferrer" class="">#7474</a></li>
<li class="">Create <code>runtime-parameters</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7475" target="_blank" rel="noopener noreferrer" class="">#7475</a></li>
<li class="">Don't download the snapshot if the acceleration is present by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7477" target="_blank" rel="noopener noreferrer" class="">#7477</a></li>
<li class="">Fix casing for keywords and additional columns by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7770" target="_blank" rel="noopener noreferrer" class="">#7770</a></li>
<li class="">Bump actions/upload-artifact from 4 to 5 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7750" target="_blank" rel="noopener noreferrer" class="">#7750</a></li>
<li class="">Bump criterion from 0.5.1 to 0.7.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7740" target="_blank" rel="noopener noreferrer" class="">#7740</a></li>
<li class="">Bump rustls-native-certs from 0.8.1 to 0.8.2 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7744" target="_blank" rel="noopener noreferrer" class="">#7744</a></li>
<li class="">Git Data Connector (Alpha) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7772" target="_blank" rel="noopener noreferrer" class="">#7772</a></li>
<li class="">Pepper accelerator delete support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7616" target="_blank" rel="noopener noreferrer" class="">#7616</a></li>
<li class="">Update Helm chart instructions for Helm in end_game.md by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7776" target="_blank" rel="noopener noreferrer" class="">#7776</a></li>
<li class="">Turso data accelerator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7472" target="_blank" rel="noopener noreferrer" class="">#7472</a></li>
<li class="">Apply retention SQL filter to refresh fetch by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7778" target="_blank" rel="noopener noreferrer" class="">#7778</a></li>
<li class="">Add Parquet buffering option for DuckDB partitioned writes (tables mode) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7735" target="_blank" rel="noopener noreferrer" class="">#7735</a></li>
<li class="">fix: EmptyExec when list indexes is empty by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7784" target="_blank" rel="noopener noreferrer" class="">#7784</a></li>
<li class="">1.8.3 post-release housekeeping by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7783" target="_blank" rel="noopener noreferrer" class="">#7783</a></li>
<li class="">feat: Upgrade to Datafusion v50 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7777" target="_blank" rel="noopener noreferrer" class="">#7777</a></li>
<li class="">fix: Replace vortex datafusion with public crate by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7791" target="_blank" rel="noopener noreferrer" class="">#7791</a></li>
<li class="">Full-text search on views by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7733" target="_blank" rel="noopener noreferrer" class="">#7733</a></li>
<li class="">Revert "Apply retention SQL filter to refresh fetch (#7778)" by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7796" target="_blank" rel="noopener noreferrer" class="">#7796</a></li>
<li class="">fix: Add ingest duration and acceleration size metrics to testoperator by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7792" target="_blank" rel="noopener noreferrer" class="">#7792</a></li>
<li class="">Set local timezone to UTC for DuckDB by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7797" target="_blank" rel="noopener noreferrer" class="">#7797</a></li>
<li class="">add Timestamp support for partition expressions by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7803" target="_blank" rel="noopener noreferrer" class="">#7803</a></li>
<li class="">Fix trunk lint by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7804" target="_blank" rel="noopener noreferrer" class="">#7804</a></li>
<li class="">Add missing mongodb params by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7807" target="_blank" rel="noopener noreferrer" class="">#7807</a></li>
<li class="">Embedding columns on view components by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7795" target="_blank" rel="noopener noreferrer" class="">#7795</a></li>
<li class="">Add Turso as a Pepper Catalog metastore by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7793" target="_blank" rel="noopener noreferrer" class="">#7793</a></li>
<li class="">Run retention_sql on refresh commit for DuckDB by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7785" target="_blank" rel="noopener noreferrer" class="">#7785</a></li>
<li class="">docs: Update datafusion upgrade checklist by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7812" target="_blank" rel="noopener noreferrer" class="">#7812</a></li>
<li class="">Vector engines on views by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7808" target="_blank" rel="noopener noreferrer" class="">#7808</a></li>
<li class="">Handle refresh worker panics and add recovery test by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7815" target="_blank" rel="noopener noreferrer" class="">#7815</a></li>
<li class="">chunk large record batches to control memory usage by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7802" target="_blank" rel="noopener noreferrer" class="">#7802</a></li>
<li class="">fix: cannot determine vector dimension for partitioned indexes by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7818" target="_blank" rel="noopener noreferrer" class="">#7818</a></li>
<li class="">Upgrade to Turso v0.3 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7821" target="_blank" rel="noopener noreferrer" class="">#7821</a></li>
<li class="">fix: Ensure custom *Exec ExecutionPlans push down dynamic filters by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7811" target="_blank" rel="noopener noreferrer" class="">#7811</a></li>
<li class="">handle casing in RRF by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7825" target="_blank" rel="noopener noreferrer" class="">#7825</a></li>
<li class="">Enable 'turso' for pepper acceleration by default by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7826" target="_blank" rel="noopener noreferrer" class="">#7826</a></li>
<li class="">Improved DynamoDB Data Connector by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7715" target="_blank" rel="noopener noreferrer" class="">#7715</a></li>
<li class="">Initial support for llama.cpp as LLM inference backend by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7794" target="_blank" rel="noopener noreferrer" class="">#7794</a></li>
<li class="">Pepper: Implement retention SQL on refresh commit by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7814" target="_blank" rel="noopener noreferrer" class="">#7814</a></li>
<li class="">Fix Dockerfiles for arm64 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7834" target="_blank" rel="noopener noreferrer" class="">#7834</a></li>
<li class="">[DynamoDB] Handle filter edge-cases by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7830" target="_blank" rel="noopener noreferrer" class="">#7830</a></li>
<li class="">[DynamoDB] Support parallelization for <code>Scan</code> request by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7829" target="_blank" rel="noopener noreferrer" class="">#7829</a></li>
<li class="">Don't feature gate Pepper by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7832" target="_blank" rel="noopener noreferrer" class="">#7832</a></li>
<li class="">Fix llama.cpp static link by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7835" target="_blank" rel="noopener noreferrer" class="">#7835</a></li>
<li class="">fix: docker nightly builds by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7837" target="_blank" rel="noopener noreferrer" class="">#7837</a></li>
<li class="">Use GitHub-hosted macOS runner only for tag releases by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7836" target="_blank" rel="noopener noreferrer" class="">#7836</a></li>
<li class="">Fix Bug: DuckDB INTERNAL Error: Failed to load metadata pointer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7839" target="_blank" rel="noopener noreferrer" class="">#7839</a></li>
<li class="">Fix docker arm64 build to use aegis in pure-rust mode by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7840" target="_blank" rel="noopener noreferrer" class="">#7840</a></li>
<li class="">Revert "Use GitHub-hosted macOS runner only for tag releases" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7843" target="_blank" rel="noopener noreferrer" class="">#7843</a></li>
<li class="">Rename Pepper to Cayenne by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7844" target="_blank" rel="noopener noreferrer" class="">#7844</a></li>
<li class="">Tighten CLI permissions and install script by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7845" target="_blank" rel="noopener noreferrer" class="">#7845</a></li>
<li class="">Set mvcc for Cayenne Turso metastore by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7850" target="_blank" rel="noopener noreferrer" class="">#7850</a></li>
<li class="">Optimize Prepared Statements by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7859" target="_blank" rel="noopener noreferrer" class="">#7859</a></li>
<li class="">Remove unwrap from ODBC connector, fix secrets, and kuberenetes secre… by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7846" target="_blank" rel="noopener noreferrer" class="">#7846</a></li>
<li class="">Improve and secure HTTP client usage by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7847" target="_blank" rel="noopener noreferrer" class="">#7847</a></li>
<li class="">Pin Oracle Instant Client download to a SHA by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7851" target="_blank" rel="noopener noreferrer" class="">#7851</a></li>
<li class="">Improve experience for missing or invalid Spicepod.yaml by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7849" target="_blank" rel="noopener noreferrer" class="">#7849</a></li>
<li class="">chore: Fix PR linting by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7865" target="_blank" rel="noopener noreferrer" class="">#7865</a></li>
<li class="">Revert FlightIPC issues by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7870" target="_blank" rel="noopener noreferrer" class="">#7870</a></li>
<li class="">Improve error message by adding 'cayenne' to the list of valid accelerator engines by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7882" target="_blank" rel="noopener noreferrer" class="">#7882</a></li>
<li class="">fix: allow parameter index without dollar signs by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7887" target="_blank" rel="noopener noreferrer" class="">#7887</a></li>
<li class="">Temporary disable <code>supports_limit_pushdown</code> for <code>SchemaCastScanExec</code> by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7893" target="_blank" rel="noopener noreferrer" class="">#7893</a></li>
<li class="">Remove '.embeddings[].metadata' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7897" target="_blank" rel="noopener noreferrer" class="">#7897</a></li>
<li class="">Optimize macOS and Windows builds by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7863" target="_blank" rel="noopener noreferrer" class="">#7863</a></li>
<li class="">fix: Kafka message delivery failed by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7883" target="_blank" rel="noopener noreferrer" class="">#7883</a></li>
<li class="">docs: Update component criteria by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7891" target="_blank" rel="noopener noreferrer" class="">#7891</a></li>
<li class="">fix: Make integration run with no relevant changes, disable makefile targets on PR by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7896" target="_blank" rel="noopener noreferrer" class="">#7896</a></li>
<li class="">Add Cayenne benchmark and concurrency tests and remove indexes for Turso MVCC by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7879" target="_blank" rel="noopener noreferrer" class="">#7879</a></li>
<li class="">Revert llama.cpp engine by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7898" target="_blank" rel="noopener noreferrer" class="">#7898</a></li>
<li class="">Make Cayenne snapshotting more robust by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7899" target="_blank" rel="noopener noreferrer" class="">#7899</a></li>
<li class="">Release notes v1.9.0-rc1 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7902" target="_blank" rel="noopener noreferrer" class="">#7902</a></li>
<li class="">Fix <code>dataset_acceleration_last_refresh_time_ms</code> unit to milliseconds in description by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7901" target="_blank" rel="noopener noreferrer" class="">#7901</a></li>
<li class="">Fix lint error in record_explain_plan functionality by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7906" target="_blank" rel="noopener noreferrer" class="">#7906</a></li>
<li class="">Cleanup old snapshots after full refresh by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7908" target="_blank" rel="noopener noreferrer" class="">#7908</a></li>
<li class="">Cayenne deletion vector caching support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7903" target="_blank" rel="noopener noreferrer" class="">#7903</a></li>
<li class="">Split filters into partition filters (for pruning) and data filters by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7889" target="_blank" rel="noopener noreferrer" class="">#7889</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7911" target="_blank" rel="noopener noreferrer" class="">#7911</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7912" target="_blank" rel="noopener noreferrer" class="">#7912</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7913" target="_blank" rel="noopener noreferrer" class="">#7913</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7916" target="_blank" rel="noopener noreferrer" class="">#7916</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7917" target="_blank" rel="noopener noreferrer" class="">#7917</a></li>
<li class="">Add Cayenne &amp; Turso accelerators to E2E CI test matrix by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7922" target="_blank" rel="noopener noreferrer" class="">#7922</a></li>
<li class="">Make preview warnings consistent by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7921" target="_blank" rel="noopener noreferrer" class="">#7921</a></li>
<li class="">Filter and write optimizations by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7918" target="_blank" rel="noopener noreferrer" class="">#7918</a></li>
<li class="">fix: Set sccache region explicitly by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7928" target="_blank" rel="noopener noreferrer" class="">#7928</a></li>
<li class="">fix: Enable integration test merge group checks by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7927" target="_blank" rel="noopener noreferrer" class="">#7927</a></li>
<li class="">Update testoperator release branch from 1.8 to 1.9 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7926" target="_blank" rel="noopener noreferrer" class="">#7926</a></li>
<li class="">Update DuckDB to 1.4.1 with composite ART scans by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7884" target="_blank" rel="noopener noreferrer" class="">#7884</a></li>
<li class="">Don't build Windows on trunk pushes by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7931" target="_blank" rel="noopener noreferrer" class="">#7931</a></li>
<li class="">fix: Use correct minio secret in build binary push by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7934" target="_blank" rel="noopener noreferrer" class="">#7934</a></li>
<li class="">Update test-framework workers to use dedicated Flight client by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7938" target="_blank" rel="noopener noreferrer" class="">#7938</a></li>
<li class="">Fix financebench, configure s3vectors for appropriate snapshotting by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7935" target="_blank" rel="noopener noreferrer" class="">#7935</a></li>
<li class="">Don't try to initialize accelerator if it is disabled by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7932" target="_blank" rel="noopener noreferrer" class="">#7932</a></li>
<li class="">Add spark UDFs to Spice by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7936" target="_blank" rel="noopener noreferrer" class="">#7936</a></li>
<li class="">Fix extra async_trait in cayenne metadata catalog by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7942" target="_blank" rel="noopener noreferrer" class="">#7942</a></li>
<li class="">deps: Upgrade to Rust 1.90 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7941" target="_blank" rel="noopener noreferrer" class="">#7941</a></li>
<li class="">Add cayenne accelerator to README.md by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7905" target="_blank" rel="noopener noreferrer" class="">#7905</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7948" target="_blank" rel="noopener noreferrer" class="">#7948</a></li>
<li class="">Run integration tests with <code>AWS_EC2_METADATA_DISABLED</code> flag by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7952" target="_blank" rel="noopener noreferrer" class="">#7952</a></li>
<li class="">Only retry credentials on ConnectorError by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7944" target="_blank" rel="noopener noreferrer" class="">#7944</a></li>
<li class="">fix: Improve join reordering by ensuring <code>JoinSelection</code> is applied by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7828" target="_blank" rel="noopener noreferrer" class="">#7828</a></li>
<li class="">fix: Remove unused deps, consolidate workspace deps by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7953" target="_blank" rel="noopener noreferrer" class="">#7953</a></li>
<li class="">bump async-openai commit by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7929" target="_blank" rel="noopener noreferrer" class="">#7929</a></li>
<li class="">deps: Use vortex fork by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7954" target="_blank" rel="noopener noreferrer" class="">#7954</a></li>
<li class="">Enable tracing in delta lake integration tests by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7951" target="_blank" rel="noopener noreferrer" class="">#7951</a></li>
<li class="">Update datasets in S3 vectors test case by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7956" target="_blank" rel="noopener noreferrer" class="">#7956</a></li>
<li class="">Add spiced metrics scraping to test operator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7937" target="_blank" rel="noopener noreferrer" class="">#7937</a></li>
<li class="">Memoize S3 vectors ListIndex API call with configurable TTL by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7910" target="_blank" rel="noopener noreferrer" class="">#7910</a></li>
<li class="">Cayenne performance optimizations by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7907" target="_blank" rel="noopener noreferrer" class="">#7907</a></li>
<li class="">Setup HotFix issue template by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7957" target="_blank" rel="noopener noreferrer" class="">#7957</a></li>
<li class="">Fix AWS SDK credential cache retry handling by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7943" target="_blank" rel="noopener noreferrer" class="">#7943</a></li>
<li class="">Infer RRF <code>join_key</code> from <code>TableProvider::constraints</code> and implement <code>SearchQueryProvider::constraints</code>. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7959" target="_blank" rel="noopener noreferrer" class="">#7959</a></li>
<li class="">[Optimizer]: DuckDB intermediate materialization (non-federated) by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7964" target="_blank" rel="noopener noreferrer" class="">#7964</a></li>
<li class="">1.7.3 post-release housekeeping by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7962" target="_blank" rel="noopener noreferrer" class="">#7962</a></li>
<li class="">Fix <code>digest_many</code> UDF for <code>ColumnarValue::Array</code>. by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7960" target="_blank" rel="noopener noreferrer" class="">#7960</a></li>
<li class="">Fix spiced metrics reporting as part of benchmark tests by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7967" target="_blank" rel="noopener noreferrer" class="">#7967</a></li>
<li class="">Avoid pushing down Spice specific UDFs to accelerators during federation by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7909" target="_blank" rel="noopener noreferrer" class="">#7909</a></li>
<li class="">CLI file persisted history with <code>.clear</code> and <code>.clear history</code> commands by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7970" target="_blank" rel="noopener noreferrer" class="">#7970</a></li>
<li class="">ResultsCache Cache-Control <code>stale-while-revalidate</code> by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7963" target="_blank" rel="noopener noreferrer" class="">#7963</a></li>
<li class="">Use GetVectors API instead of returnData by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7083" target="_blank" rel="noopener noreferrer" class="">#7083</a></li>
<li class="">Make DuckDB intermediate materialization logic more robust by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7971" target="_blank" rel="noopener noreferrer" class="">#7971</a></li>
<li class="">[Cayenne] Configurable target Vortex file size by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7972" target="_blank" rel="noopener noreferrer" class="">#7972</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7974" target="_blank" rel="noopener noreferrer" class="">#7974</a></li>
<li class="">Bump github.com/klauspost/compress from 1.17.11 to 1.18.1 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7872" target="_blank" rel="noopener noreferrer" class="">#7872</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7978" target="_blank" rel="noopener noreferrer" class="">#7978</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7982" target="_blank" rel="noopener noreferrer" class="">#7982</a></li>
<li class="">Run Integration tests on spiceai-dev-runners by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7985" target="_blank" rel="noopener noreferrer" class="">#7985</a></li>
<li class="">[CLI] Fix cursor issue due to flush by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7981" target="_blank" rel="noopener noreferrer" class="">#7981</a></li>
<li class="">fix: Support S3 versioning, Vortex dynamic filter pushdown by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7984" target="_blank" rel="noopener noreferrer" class="">#7984</a></li>
<li class="">Make <code>cluster</code> a default feature by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7994" target="_blank" rel="noopener noreferrer" class="">#7994</a></li>
<li class="">Optimize DuckDB Intermediate Index Materialization for No-Index Case by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7998" target="_blank" rel="noopener noreferrer" class="">#7998</a></li>
<li class="">HTTP connector with dynamic filter support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7969" target="_blank" rel="noopener noreferrer" class="">#7969</a></li>
<li class="">Revert federation 'can_execute_plan' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7999" target="_blank" rel="noopener noreferrer" class="">#7999</a></li>
<li class="">Fix stale caching by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7995" target="_blank" rel="noopener noreferrer" class="">#7995</a></li>
<li class="">Fix count(*) for http connector by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/8001" target="_blank" rel="noopener noreferrer" class="">#8001</a></li>
<li class="">[CLI] Install specific version by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8006" target="_blank" rel="noopener noreferrer" class="">#8006</a></li>
<li class="">Fix stale with revalidate request/response by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8005" target="_blank" rel="noopener noreferrer" class="">#8005</a></li>
<li class="">Fallback <code>RequestContext</code> for cluster queries by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/8007" target="_blank" rel="noopener noreferrer" class="">#8007</a></li>
<li class="">Use use_rustls_tls for Spice Cloud /connect by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8008" target="_blank" rel="noopener noreferrer" class="">#8008</a></li>
<li class="">Use delta-kernel-rs 0.16x + Parquet reader with object meta API changes by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/8011" target="_blank" rel="noopener noreferrer" class="">#8011</a></li>
<li class="">fix: Update datafusion &amp; arrow-rs with S3 versioning fix by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/8012" target="_blank" rel="noopener noreferrer" class="">#8012</a></li>
</ul>]]></content>
        <author>
            <name>Sergei Grebnov</name>
            <uri>https://github.com/sgrebnov</uri>
        </author>
        <category label="release" term="release"/>
        <category label="cayenne" term="cayenne"/>
        <category label="acceleration" term="acceleration"/>
        <category label="distributed-query" term="distributed-query"/>
        <category label="ballista" term="ballista"/>
        <category label="datafusion" term="datafusion"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="duckdb" term="duckdb"/>
        <category label="full-text-search" term="full-text-search"/>
        <category label="vector-search" term="vector-search"/>
        <category label="hybrid-search" term="hybrid-search"/>
        <category label="data-connector" term="data-connector"/>
        <category label="performance" term="performance"/>
        <category label="sql" term="sql"/>
        <category label="vortex" term="vortex"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.9.0-rc.1 (Nov 4, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.9.0-rc.1</id>
        <link href="https://spiceai.org/blog/releases/v1.9.0-rc.1"/>
        <updated>2025-11-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is the first release candidate for v1.9.0, which introduces Cayenne, a new high-performance data accelerator built on the Vortex columnar format that delivers DuckDB-comparable performance without scaling limitations. This release also upgrades to DataFusion v50 for improved query performance, expands search capabilities with full-text search on views and multi-column embeddings, includes significant DynamoDB and DuckDB accelerator improvements, and delivers security and reliability enhancements.]]></summary>
        <content type="html"><![CDATA[<p>This is the first release candidate for v1.9.0, which introduces <strong>Cayenne</strong>, a new high-performance data accelerator built on the Vortex columnar format that delivers DuckDB-comparable performance without scaling limitations. This release also upgrades to DataFusion v50 for improved query performance, expands search capabilities with full-text search on views and multi-column embeddings, includes significant DynamoDB and DuckDB accelerator improvements, and delivers security and reliability enhancements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v190-rc1">What's New in v1.9.0-rc.1<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#whats-new-in-v190-rc1" class="hash-link" aria-label="Direct link to What's New in v1.9.0-rc.1" title="Direct link to What's New in v1.9.0-rc.1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cayenne-data-accelerator-alpha">Cayenne Data Accelerator (Alpha)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#cayenne-data-accelerator-alpha" class="hash-link" aria-label="Direct link to Cayenne Data Accelerator (Alpha)" title="Direct link to Cayenne Data Accelerator (Alpha)" translate="no">​</a></h3>
<p><strong>Introducing Cayenne: SQL as an Acceleration Format</strong>: A new high-performance <a href="https://spiceai.org/docs/features/data-acceleration" target="_blank" rel="noopener noreferrer" class="">data accelerator</a> that simplifies multi-file data acceleration by using an embedded database (SQLite) for metadata while storing data in the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex columnar format</a>. Cayenne delivers query and ingestion performance comparable or better to DuckDB's file-based acceleration without DuckDB's memory overhead and the scaling challenges of single DuckDB files.</p>
<p>Cayenne uses SQLite to manage acceleration metadata (schemas, snapshots, statistics, file tracking) through simple SQL transactions, while storing actual data in Vortex's compressed columnar format. This architecture provides:</p>
<p><strong>Key Features</strong>:</p>
<ul>
<li class=""><strong>SQLite + Vortex Architecture</strong>: All metadata is stored in SQLite tables with standard SQL transactions, while data lives in Vortex's compressed, chunked columnar format designed for zero-copy access and efficient scanning.</li>
<li class=""><strong>Simplified Operations</strong>: No complex file hierarchies, no JSON/Avro metadata files, no separate catalog servers—just SQL tables and Vortex data files. The entire metadata schema is intentionally simple for maximum reliability.</li>
<li class=""><strong>Fast Metadata Access</strong>: Single SQL query retrieves all metadata needed for query planning—no multiple round trips to storage, no S3 throttling, no reconstruction of metadata state from scattered files.</li>
<li class=""><strong>Efficient Small Changes</strong>: Dramatically reduces small file proliferation. Snapshots are just rows in SQLite tables, not new files on disk. Supports millions of snapshots without performance degradation.</li>
<li class=""><strong>High Concurrency</strong>: Changes consist of two steps: stage Vortex files (if any), then run a single SQL transaction. Much faster conflict resolution and support for many more concurrent updates than file-based formats.</li>
<li class=""><strong>Advanced Data Lifecycle</strong>: Full ACID transactions, delete support, and retention SQL execution on refresh commit.</li>
</ul>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> accelerated_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> cayenne</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM accelerated_data WHERE created_at &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '30 days'</span><br></span></code></pre></div></div>
<p>Note, the Cayenne Data Accelerator is in <a href="https://github.com/spiceai/spiceai/blob/trunk/docs/criteria/accelerators/alpha.md" target="_blank" rel="noopener noreferrer" class="">Alpha</a> with limitations.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-accelerators/cayenne" target="_blank" rel="noopener noreferrer" class="">Cayenne Documentation</a>, the <a href="https://github.com/vortex-data/vortex" target="_blank" rel="noopener noreferrer" class="">Vortex project</a>, and the <a href="https://duckdb.org/2025/05/27/ducklake" target="_blank" rel="noopener noreferrer" class="">DuckLake announcement</a> that partly inspired this design.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="datafusion-v50-upgrade">DataFusion v50 Upgrade<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#datafusion-v50-upgrade" class="hash-link" aria-label="Direct link to DataFusion v50 Upgrade" title="Direct link to DataFusion v50 Upgrade" translate="no">​</a></h3>
<p>Spice.ai is built on the DataFusion query engine. The v50 release brings significant performance improvements and enhanced reliability:</p>
<p><strong>Performance Improvements 🚀</strong>:</p>
<ul>
<li class=""><strong>Dynamic Filter Pushdown</strong>: Enhanced dynamic filter pushdown for custom <code>ExecutionPlans</code>, ensuring filters propagate correctly through all physical operators for improved query performance.</li>
<li class=""><strong>Partition Pruning</strong>: Expanded partition pruning support ensures that unnecessary partitions are skipped when filters are not used, reducing data scanning overhead and improving query execution times.</li>
</ul>
<p><strong>Bug Fixes &amp; Reliability</strong>: Resolved issues with partition name validation and empty execution plans when vector index lists are empty. Fixed timestamp support for partition expressions, enabling better partitioning for time-series data.</p>
<p>See the <a href="https://github.com/apache/datafusion/releases" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion 50.0.0 Release</a> for more details.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dynamodb-data-connector-improvements">DynamoDB Data Connector Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#dynamodb-data-connector-improvements" class="hash-link" aria-label="Direct link to DynamoDB Data Connector Improvements" title="Direct link to DynamoDB Data Connector Improvements" translate="no">​</a></h3>
<p><strong>Improved Query Performance</strong>: The DynamoDB Data Connector now includes improved filter handling for edge cases, parallel scan support for faster data ingestion, and better error handling for misconfigured queries. These improvements enable more reliable and performant access to DynamoDB data.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> dynamodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> ddb_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">scan_segments</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Default `auto` which calculates optimal segments based on number of rows</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="search--embeddings-enhancements">Search &amp; Embeddings Enhancements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#search--embeddings-enhancements" class="hash-link" aria-label="Direct link to Search &amp; Embeddings Enhancements" title="Direct link to Search &amp; Embeddings Enhancements" translate="no">​</a></h3>
<p><strong>Full-Text Search on Views</strong>: Full-text search indexes are now supported on views, enabling advanced search scenarios over pre-aggregated or transformed data. This extends the power of Spice's search capabilities beyond base datasets.</p>
<p><strong>Multi-Column Embeddings on Views</strong>: Views now support embedding columns, enabling vector search and semantic retrieval on view data. This is useful for search over aggregated or joined datasets.</p>
<p><strong>Vector Engines on Views</strong>: Vector search engines are now available for views, enabling similarity search over complex queries and transformations.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">views</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> aggregated_reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> SELECT review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> review_text FROM reviews WHERE rating </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">&gt;</span><span class="token plain"> 4</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">column</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> review_text</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">model</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">text</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embedding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">small</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-accelerator-improvements">DuckDB Accelerator Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#duckdb-accelerator-improvements" class="hash-link" aria-label="Direct link to DuckDB Accelerator Improvements" title="Direct link to DuckDB Accelerator Improvements" translate="no">​</a></h3>
<p><strong>Parquet Buffering for Partitioned Writes</strong>: DuckDB partitioned writes in table mode now support Parquet buffering, reducing memory usage and improving write performance for large datasets.</p>
<p><strong>Retention SQL on Refresh Commit</strong>: DuckDB accelerations now support running retention SQL on refresh commit, enabling automatic data cleanup and lifecycle management during refresh operations.</p>
<p><strong>UTC Timezone for DuckDB</strong>: DuckDB now uses UTC as the default timezone, ensuring consistent behavior for time-based queries across different environments.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//my_bucket/large_table/</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> partitioned_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">retention</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DELETE FROM partitioned_data WHERE event_time &lt; NOW() </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> INTERVAL '7 days'</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-performance-optimizations">Query Performance Optimizations<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#query-performance-optimizations" class="hash-link" aria-label="Direct link to Query Performance Optimizations" title="Direct link to Query Performance Optimizations" translate="no">​</a></h3>
<p><strong>Optimized Prepared Statements</strong>: Prepared statement handling has been optimized for better performance with parameterized queries, reducing planning overhead and improving execution time for repeated queries.</p>
<p><strong>Large RecordBatch Chunking</strong>: Large Arrow <code>RecordBatch</code> objects are now automatically chunked to control memory usage during query execution, preventing memory exhaustion for queries returning large result sets.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="security--reliability-improvements">Security &amp; Reliability Improvements<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#security--reliability-improvements" class="hash-link" aria-label="Direct link to Security &amp; Reliability Improvements" title="Direct link to Security &amp; Reliability Improvements" translate="no">​</a></h3>
<p><strong>Enhanced HTTP Client Security</strong>: HTTP client usage across the runtime has been hardened with improved TLS validation, certificate pinning for critical endpoints, and better error handling for network failures.</p>
<p><strong>ODBC Connector Improvements</strong>: Removed unwrap calls from the ODBC connector, improving error handling and reliability. Fixed secret handling and Kubernetes secret integration.</p>
<p><strong>CLI Permissions Hardening</strong>: Tightened file permissions for the CLI and install script, ensuring secure defaults for configuration files and credentials.</p>
<p><strong>Oracle Instant Client Pinning</strong>: Oracle Instant Client downloads are now pinned to specific SHAs, ensuring reproducible builds and preventing supply chain attacks.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="observability--tracing">Observability &amp; Tracing<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#observability--tracing" class="hash-link" aria-label="Direct link to Observability &amp; Tracing" title="Direct link to Observability &amp; Tracing" translate="no">​</a></h3>
<p><strong>DataFusion Log Emission</strong>: The Spice runtime now emits DataFusion internal logs, providing deeper visibility into query planning and execution for debugging and performance analysis.</p>
<p><strong>AI Completions Tracing</strong>: Fixed tracing so that <code>ai_completions</code> operations are correctly parented under <code>sql_query</code> traces, improving observability for AI-powered queries.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="git-data-connector-alpha">Git Data Connector (Alpha)<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#git-data-connector-alpha" class="hash-link" aria-label="Direct link to Git Data Connector (Alpha)" title="Direct link to Git Data Connector (Alpha)" translate="no">​</a></h3>
<p><strong>Version-Controlled Data Access</strong>: The new Git Data Connector (Alpha) enables querying datasets stored in Git repositories. This connector is ideal for use cases involving configuration files, documentation, or any data tracked in version control.</p>
<p>Example Spicepod.yml 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">https</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//github.com/myorg/myrepo</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> git_metrics</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> csv</span><br></span></code></pre></div></div>
<p>For more details, refer to the <a href="https://spiceai.org/docs/components/data-connectors/git" target="_blank" rel="noopener noreferrer" class="">Git Data Connector Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bug-fixes">Additional Improvements &amp; Bug Fixes<a href="https://spiceai.org/blog/releases/v1.9.0-rc.1#additional-improvements--bug-fixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bug Fixes" title="Direct link to Additional Improvements &amp; Bug Fixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Fixed refresh worker panics with recovery handling to prevent runtime crashes during acceleration refreshes.</li>
<li class=""><strong>Reliability</strong>: Improved error messages for missing or invalid <code>spicepod.yaml</code> files, providing actionable feedback for misconfiguration.</li>
<li class=""><strong>Reliability</strong>: Fixed DuckDB metadata pointer loading issues for snapshots.</li>
<li class=""><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned correctly when filters are not used.</li>
<li class=""><strong>Reliability</strong>: Fixed vector dimension determination for partitioned indexes.</li>
<li class=""><strong>Search</strong>: Fixed casing issues in Reciprocal Rank Fusion (RRF) for hybrid search queries.</li>
<li class=""><strong>Search</strong>: Fixed search field handling as metadata for chunked search indexes.</li>
<li class=""><strong>Validation</strong>: Added timestamp support for partition expressions.</li>
<li class=""><strong>Validation</strong>: Fixed <code>regexp_match</code> function for DuckDB datasets.</li>
<li class=""><strong>Validation</strong>: Fixed partition name validation for improved reliability.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.9.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.9.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>
<p>No breaking changes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.9.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>No major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 81 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/blog/releases/v1.9.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 v1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.9.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.9.0-rc.1</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.9.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/blog/releases/v1.9.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="">Fix for search field as metadata for chunked search indexes by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7429" target="_blank" rel="noopener noreferrer" class="">#7429</a></li>
<li class="">Bump object_store from 0.12.3 to 0.12.4 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7433" target="_blank" rel="noopener noreferrer" class="">#7433</a></li>
<li class="">Properly respect disabling snapshots by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7431" target="_blank" rel="noopener noreferrer" class="">#7431</a></li>
<li class="">Revert "Properly respect disabling snapshots" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7439" target="_blank" rel="noopener noreferrer" class="">#7439</a></li>
<li class="">Revert "Disable snapshots by default" by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7438" target="_blank" rel="noopener noreferrer" class="">#7438</a></li>
<li class="">Add preview warning for write access mode by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7440" target="_blank" rel="noopener noreferrer" class="">#7440</a></li>
<li class="">fix: regexp_match for DuckDB datasets by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7443" target="_blank" rel="noopener noreferrer" class="">#7443</a></li>
<li class="">Add feature is currently in preview warning for snapshots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7442" target="_blank" rel="noopener noreferrer" class="">#7442</a></li>
<li class="">[Logger] Also emit Datafusion logs by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7441" target="_blank" rel="noopener noreferrer" class="">#7441</a></li>
<li class="">add missing snapshot by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7446" target="_blank" rel="noopener noreferrer" class="">#7446</a></li>
<li class="">Fix tracing so that ai_completions are parented under sql_query by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7415" target="_blank" rel="noopener noreferrer" class="">#7415</a></li>
<li class="">Enable snapshot acceleration by default by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7451" target="_blank" rel="noopener noreferrer" class="">#7451</a></li>
<li class="">Disable acceleration refresh metrics by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7450" target="_blank" rel="noopener noreferrer" class="">#7450</a></li>
<li class="">Add v1.8 release notes by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7430" target="_blank" rel="noopener noreferrer" class="">#7430</a></li>
<li class="">fix: partition name validation by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7452" target="_blank" rel="noopener noreferrer" class="">#7452</a></li>
<li class="">Fix lint error due to ignore without reasons by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7454" target="_blank" rel="noopener noreferrer" class="">#7454</a></li>
<li class="">Add models and CUDA support to spiced install script by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7457" target="_blank" rel="noopener noreferrer" class="">#7457</a></li>
<li class="">Post-release 1.8 updates by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7455" target="_blank" rel="noopener noreferrer" class="">#7455</a></li>
<li class="">Remove println in datafusion by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7461" target="_blank" rel="noopener noreferrer" class="">#7461</a></li>
<li class="">Update end_game.md to notify once release is done by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7460" target="_blank" rel="noopener noreferrer" class="">#7460</a></li>
<li class="">Remove italics from snapshot logging by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7463" target="_blank" rel="noopener noreferrer" class="">#7463</a></li>
<li class="">Update openapi.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7466" target="_blank" rel="noopener noreferrer" class="">#7466</a></li>
<li class="">Fix generate spicepod schema by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7464" target="_blank" rel="noopener noreferrer" class="">#7464</a></li>
<li class="">Fix generate acknowledements by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7465" target="_blank" rel="noopener noreferrer" class="">#7465</a></li>
<li class="">Update spicepod.schema.json by <a href="https://github.com/app/github-actions" target="_blank" rel="noopener noreferrer" class="">@app/github-actions</a> in <a href="https://github.com/spiceai/spiceai/pull/7469" target="_blank" rel="noopener noreferrer" class="">#7469</a></li>
<li class="">fix: Ensure ListingTable partitions are pruned when filters are not used by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7471" target="_blank" rel="noopener noreferrer" class="">#7471</a></li>
<li class="">Create <code>runtime-secrets</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7474" target="_blank" rel="noopener noreferrer" class="">#7474</a></li>
<li class="">Create <code>runtime-parameters</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7475" target="_blank" rel="noopener noreferrer" class="">#7475</a></li>
<li class="">Don't download the snapshot if the acceleration is present by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7477" target="_blank" rel="noopener noreferrer" class="">#7477</a></li>
<li class="">Fix casing for keywords and additional columns by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7770" target="_blank" rel="noopener noreferrer" class="">#7770</a></li>
<li class="">Bump actions/upload-artifact from 4 to 5 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7750" target="_blank" rel="noopener noreferrer" class="">#7750</a></li>
<li class="">Bump criterion from 0.5.1 to 0.7.0 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7740" target="_blank" rel="noopener noreferrer" class="">#7740</a></li>
<li class="">Bump rustls-native-certs from 0.8.1 to 0.8.2 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7744" target="_blank" rel="noopener noreferrer" class="">#7744</a></li>
<li class="">Git Data Connector (Alpha) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7772" target="_blank" rel="noopener noreferrer" class="">#7772</a></li>
<li class="">Pepper accelerator delete support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7616" target="_blank" rel="noopener noreferrer" class="">#7616</a></li>
<li class="">Update Helm chart instructions for Helm in end_game.md by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7776" target="_blank" rel="noopener noreferrer" class="">#7776</a></li>
<li class="">Turso data accelerator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7472" target="_blank" rel="noopener noreferrer" class="">#7472</a></li>
<li class="">Apply retention SQL filter to refresh fetch by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7778" target="_blank" rel="noopener noreferrer" class="">#7778</a></li>
<li class="">Add Parquet buffering option for DuckDB partitioned writes (tables mode) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7735" target="_blank" rel="noopener noreferrer" class="">#7735</a></li>
<li class="">fix: EmptyExec when list indexes is empty by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7784" target="_blank" rel="noopener noreferrer" class="">#7784</a></li>
<li class="">1.8.3 post-release housekeeping by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7783" target="_blank" rel="noopener noreferrer" class="">#7783</a></li>
<li class="">feat: Upgrade to Datafusion v50 by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7777" target="_blank" rel="noopener noreferrer" class="">#7777</a></li>
<li class="">fix: Replace vortex datafusion with public crate by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7791" target="_blank" rel="noopener noreferrer" class="">#7791</a></li>
<li class="">Full-text search on views by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7733" target="_blank" rel="noopener noreferrer" class="">#7733</a></li>
<li class="">Revert "Apply retention SQL filter to refresh fetch (#7778)" by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7796" target="_blank" rel="noopener noreferrer" class="">#7796</a></li>
<li class="">fix: Add ingest duration and acceleration size metrics to testoperator by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7792" target="_blank" rel="noopener noreferrer" class="">#7792</a></li>
<li class="">Set local timezone to UTC for DuckDB by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7797" target="_blank" rel="noopener noreferrer" class="">#7797</a></li>
<li class="">add Timestamp support for partition expressions by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7803" target="_blank" rel="noopener noreferrer" class="">#7803</a></li>
<li class="">Fix trunk lint by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7804" target="_blank" rel="noopener noreferrer" class="">#7804</a></li>
<li class="">Add missing mongodb params by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7807" target="_blank" rel="noopener noreferrer" class="">#7807</a></li>
<li class="">Embedding columns on view components by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7795" target="_blank" rel="noopener noreferrer" class="">#7795</a></li>
<li class="">Add Turso as a Pepper Catalog metastore by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7793" target="_blank" rel="noopener noreferrer" class="">#7793</a></li>
<li class="">Run retention_sql on refresh commit for DuckDB by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7785" target="_blank" rel="noopener noreferrer" class="">#7785</a></li>
<li class="">docs: Update datafusion upgrade checklist by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7812" target="_blank" rel="noopener noreferrer" class="">#7812</a></li>
<li class="">Vector engines on views by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7808" target="_blank" rel="noopener noreferrer" class="">#7808</a></li>
<li class="">Handle refresh worker panics and add recovery test by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7815" target="_blank" rel="noopener noreferrer" class="">#7815</a></li>
<li class="">chunk large record batches to control memory usage by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7802" target="_blank" rel="noopener noreferrer" class="">#7802</a></li>
<li class="">fix: cannot determine vector dimension for partitioned indexes by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7818" target="_blank" rel="noopener noreferrer" class="">#7818</a></li>
<li class="">Upgrade to Turso v0.3 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7821" target="_blank" rel="noopener noreferrer" class="">#7821</a></li>
<li class="">fix: Ensure custom *Exec ExecutionPlans push down dynamic filters by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7811" target="_blank" rel="noopener noreferrer" class="">#7811</a></li>
<li class="">handle casing in RRF by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7825" target="_blank" rel="noopener noreferrer" class="">#7825</a></li>
<li class="">Enable 'turso' for pepper acceleration by default by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7826" target="_blank" rel="noopener noreferrer" class="">#7826</a></li>
<li class="">Improved DynamoDB Data Connector by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7715" target="_blank" rel="noopener noreferrer" class="">#7715</a></li>
<li class="">Initial support for llama.cpp as LLM inference backend by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7794" target="_blank" rel="noopener noreferrer" class="">#7794</a></li>
<li class="">Pepper: Implement retention SQL on refresh commit by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7814" target="_blank" rel="noopener noreferrer" class="">#7814</a></li>
<li class="">Fix Dockerfiles for arm64 by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7834" target="_blank" rel="noopener noreferrer" class="">#7834</a></li>
<li class="">[DynamoDB] Handle filter edge-cases by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7830" target="_blank" rel="noopener noreferrer" class="">#7830</a></li>
<li class="">[DynamoDB] Support parallelization for <code>Scan</code> request by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7829" target="_blank" rel="noopener noreferrer" class="">#7829</a></li>
<li class="">Don't feature gate Pepper by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7832" target="_blank" rel="noopener noreferrer" class="">#7832</a></li>
<li class="">Fix llama.cpp static link by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7835" target="_blank" rel="noopener noreferrer" class="">#7835</a></li>
<li class="">fix: docker nightly builds by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7837" target="_blank" rel="noopener noreferrer" class="">#7837</a></li>
<li class="">Use GitHub-hosted macOS runner only for tag releases by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7836" target="_blank" rel="noopener noreferrer" class="">#7836</a></li>
<li class="">Fix Bug: DuckDB INTERNAL Error: Failed to load metadata pointer by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7839" target="_blank" rel="noopener noreferrer" class="">#7839</a></li>
<li class="">Fix docker arm64 build to use aegis in pure-rust mode by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7840" target="_blank" rel="noopener noreferrer" class="">#7840</a></li>
<li class="">Revert "Use GitHub-hosted macOS runner only for tag releases" by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7843" target="_blank" rel="noopener noreferrer" class="">#7843</a></li>
<li class="">Rename Pepper to Cayenne by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7844" target="_blank" rel="noopener noreferrer" class="">#7844</a></li>
<li class="">Tighten CLI permissions and install script by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7845" target="_blank" rel="noopener noreferrer" class="">#7845</a></li>
<li class="">Set mvcc for Cayenne Turso metastore by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7850" target="_blank" rel="noopener noreferrer" class="">#7850</a></li>
<li class="">Optimize Prepared Statements by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7859" target="_blank" rel="noopener noreferrer" class="">#7859</a></li>
<li class="">Remove unwrap from ODBC connector, fix secrets, and kuberenetes secre… by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7846" target="_blank" rel="noopener noreferrer" class="">#7846</a></li>
<li class="">Improve and secure HTTP client usage by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7847" target="_blank" rel="noopener noreferrer" class="">#7847</a></li>
<li class="">Pin Oracle Instant Client download to a SHA by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7851" target="_blank" rel="noopener noreferrer" class="">#7851</a></li>
<li class="">Improve experience for missing or invalid Spicepod.yaml by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7849" target="_blank" rel="noopener noreferrer" class="">#7849</a></li>
<li class="">chore: Fix PR linting by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7865" target="_blank" rel="noopener noreferrer" class="">#7865</a></li>
<li class="">Revert FlightIPC issues by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7870" target="_blank" rel="noopener noreferrer" class="">#7870</a></li>
<li class="">Improve error message by adding 'cayenne' to the list of valid accelerator engines by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7882" target="_blank" rel="noopener noreferrer" class="">#7882</a></li>
<li class="">fix: allow parameter index without dollar signs by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7887" target="_blank" rel="noopener noreferrer" class="">#7887</a></li>
<li class="">Temporary disable <code>supports_limit_pushdown</code> for <code>SchemaCastScanExec</code> by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7893" target="_blank" rel="noopener noreferrer" class="">#7893</a></li>
<li class="">Remove '.embeddings[].metadata' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7897" target="_blank" rel="noopener noreferrer" class="">#7897</a></li>
</ul>]]></content>
        <author>
            <name>William Croxson</name>
            <uri>https://github.com/peasee</uri>
        </author>
        <category label="release" term="release"/>
        <category label="cayenne" term="cayenne"/>
        <category label="acceleration" term="acceleration"/>
        <category label="datafusion" term="datafusion"/>
        <category label="dynamodb" term="dynamodb"/>
        <category label="duckdb" term="duckdb"/>
        <category label="full-text-search" term="full-text-search"/>
        <category label="vector-search" term="vector-search"/>
        <category label="performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.8.3 (Oct 27, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.8.3</id>
        <link href="https://spiceai.org/blog/releases/v1.8.3"/>
        <updated>2025-10-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.8.3! ⚡]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.8.3! ⚡</p>
<p>Spice v1.8.3 is a patch release focused on performance, reliability, and observability. This release delivers optimizations for DuckDB acceleration, parameterized queries, and query plans. A new opt-in dedicated thread pool for queries is now in preview.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v183">What's New in v1.8.3<a href="https://spiceai.org/blog/releases/v1.8.3#whats-new-in-v183" class="hash-link" aria-label="Direct link to What's New in v1.8.3" title="Direct link to What's New in v1.8.3" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-data-accelerator-improvements">DuckDB Data Accelerator Improvements<a href="https://spiceai.org/blog/releases/v1.8.3#duckdb-data-accelerator-improvements" class="hash-link" aria-label="Direct link to DuckDB Data Accelerator Improvements" title="Direct link to DuckDB Data Accelerator Improvements" translate="no">​</a></h3>
<ul>
<li class=""><strong>Connection Pool Sizing</strong>: The DuckDB accelerator now supports a configurable <code>connection_pool_size</code> parameter, supporting fine-grained control over concurrent query execution. This enables tuning for high-concurrency workloads and improved resource utilization.</li>
</ul>
<p>Example Spicepod.yaml snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> postgres</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">connection_pool_size</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><br></span></code></pre></div></div>
<ul>
<li class=""><strong>Automatic Statistics Recomputation</strong>: The new <code>on_refresh_recompute_statistics</code> parameter, on by default, triggers automatic <code>ANALYZE</code> execution after refreshes. This keeps DuckDB optimizer statistics up-to-date, ensuring efficient query plans and optimal performance.</li>
</ul>
<p>Example Spicepod.yaml snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> postgres</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">on_refresh_recompute_statistics</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> disabled </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># default enabled</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="task-history-sql-query-plan-capture--configuration">Task History SQL Query Plan Capture &amp; Configuration<a href="https://spiceai.org/blog/releases/v1.8.3#task-history-sql-query-plan-capture--configuration" class="hash-link" aria-label="Direct link to Task History SQL Query Plan Capture &amp; Configuration" title="Direct link to Task History SQL Query Plan Capture &amp; Configuration" translate="no">​</a></h3>
<p>Spice now supports automated SQL query plan capture and store (via <code>EXPLAIN</code> or <code>EXPLAIN ANALYZE</code>) in the task history, enabling deeper analysis and debugging of query execution. This feature is configurable, supporting control of which queries are included based on duration thresholds and plan type.</p>
<ul>
<li class=""><strong>New Configuration Options</strong>:<!-- -->
<ul>
<li class=""><code>task_history.captured_plan</code>: Controls which plan is captured (<code>none</code>, <code>explain</code>, or <code>explain analyze</code>). Default <code>none</code>.</li>
<li class=""><code>task_history.min_sql_duration</code>: Minimum query duration before a plan is captured.</li>
<li class=""><code>task_history.min_plan_duration</code>: Minimum plan execution duration before a plan is captured.</li>
</ul>
</li>
</ul>
<p>Example <code>spicepod.yaml</code> snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">task_history</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">captured_plan</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> explain analyze</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">min_sql_duration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 5s</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">min_plan_duration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 10s</span><br></span></code></pre></div></div>
<p>Query plans are captured asynchronously to avoid blocking query execution. The result of the plan is stored in the standard <code>sql_query</code> output in the task history.</p>
<p>Learn more in the <a href="https://spiceai.org/docs/reference/task_history" target="_blank" rel="noopener noreferrer" class="">Task History Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="query-performance-optimizations">Query Performance Optimizations<a href="https://spiceai.org/blog/releases/v1.8.3#query-performance-optimizations" class="hash-link" aria-label="Direct link to Query Performance Optimizations" title="Direct link to Query Performance Optimizations" translate="no">​</a></h3>
<ul>
<li class="">
<p><strong>Optimized Prepared Statements (Parameterized Queries):</strong> Prepared statement caching for parameterized SQL queries has been improved, reducing planning overhead for repeated queries with different parameters. This results in faster execution and lower latency for workloads that reuse query structures.</p>
</li>
<li class="">
<p><strong>Limit Pushdown via BytesProcessedExec</strong>: Introduces the <code>BytesProcessedExec</code> physical operator, enabling limit pushdown for large datasets. This optimization reduces the amount of data processed and improves top-k query performance.</p>
</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="dedicated-query-thread-pool-opt-in">Dedicated Query Thread Pool (Opt-In)<a href="https://spiceai.org/blog/releases/v1.8.3#dedicated-query-thread-pool-opt-in" class="hash-link" aria-label="Direct link to Dedicated Query Thread Pool (Opt-In)" title="Direct link to Dedicated Query Thread Pool (Opt-In)" translate="no">​</a></h3>
<p>Spice now supports running query execution and accelerated refreshes on a <strong>dedicated thread pool</strong>, separate from the HTTP server. This prevents heavy query workloads from slowing down API responses, keeping health and readiness checks fast. <strong>Opt-In for v1.8.3</strong>: This feature is opt-in for this release and will become enabled by default (opt-out) in v1.9.</p>
<p>Example Spicepod.yaml snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dedicated_thread_pool</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sql_engine </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Default: disabled</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="validation--reliability-improvements">Validation &amp; Reliability Improvements<a href="https://spiceai.org/blog/releases/v1.8.3#validation--reliability-improvements" class="hash-link" aria-label="Direct link to Validation &amp; Reliability Improvements" title="Direct link to Validation &amp; Reliability Improvements" translate="no">​</a></h3>
<ul>
<li class="">
<p><strong>Selective Evaluation Scorer Loading</strong>: Evaluation scorers are now loaded only when evaluation is explicitly defined, reducing unnecessary initialization and improving startup performance.</p>
</li>
<li class="">
<p><strong>Improved Error Reporting</strong>: Enhanced error messages for misconfigured full-text search (FTS) on datasets and views, providing actionable feedback for configuration issues.</p>
</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="repl--usability">REPL &amp; Usability<a href="https://spiceai.org/blog/releases/v1.8.3#repl--usability" class="hash-link" aria-label="Direct link to REPL &amp; Usability" title="Direct link to REPL &amp; Usability" translate="no">​</a></h3>
<ul>
<li class=""><strong>Execution Time Display</strong>: The Spice REPL now displays query execution time even when queries return no results, improving user feedback and diagnostics.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.8.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/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</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/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</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/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/blog/releases/v1.8.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/blog/releases/v1.8.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 major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 81 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/blog/releases/v1.8.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.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.8.3</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.8.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/blog/releases/v1.8.3#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Fix generate spicepod schema by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7464" target="_blank" rel="noopener noreferrer" class="">#7464</a></li>
<li class="">Only load eval scorers when eval defined by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7549" target="_blank" rel="noopener noreferrer" class="">#7549</a></li>
<li class="">BytesProcessedExec to allow optimizer to do limit pushdown by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7539" target="_blank" rel="noopener noreferrer" class="">#7539</a></li>
<li class="">Enhancement: Add <code>spill_compression</code> to runtime config by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7505" target="_blank" rel="noopener noreferrer" class="">#7505</a></li>
<li class="">Task History <code>min_sql_duration</code> filter support by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7698" target="_blank" rel="noopener noreferrer" class="">#7698</a></li>
<li class="">Show error if FTS is misconfigured for datasets/views by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7458" target="_blank" rel="noopener noreferrer" class="">#7458</a></li>
<li class="">project_schema when using EmptyExec by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7543" target="_blank" rel="noopener noreferrer" class="">#7543</a></li>
<li class="">Fix score order for one test case by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7595" target="_blank" rel="noopener noreferrer" class="">#7595</a></li>
<li class="">Fix license issue in table-providers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7620" target="_blank" rel="noopener noreferrer" class="">#7620</a></li>
<li class="">Split integration tests into 3 partitions by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7635" target="_blank" rel="noopener noreferrer" class="">#7635</a></li>
<li class="">Fix OSS docker release trigger when release marked as latest by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7668" target="_blank" rel="noopener noreferrer" class="">#7668</a></li>
<li class="">Properly set auth headers in github_release.py by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7560" target="_blank" rel="noopener noreferrer" class="">#7560</a></li>
<li class="">Run Datafusion queries on a separate Tokio runtime by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7586" target="_blank" rel="noopener noreferrer" class="">#7586</a></li>
<li class="">Update BytesProcessedExec snapshots by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/spiceai/spiceai/pull/7637" target="_blank" rel="noopener noreferrer" class="">#7637</a></li>
<li class="">Display execution time in Spice REPL for no results by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7713" target="_blank" rel="noopener noreferrer" class="">#7713</a></li>
<li class="">Add support for DuckDB <code>connection_pool_size</code> param by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7716" target="_blank" rel="noopener noreferrer" class="">#7716</a></li>
<li class="">Task History capture and store SQL query plans by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7701" target="_blank" rel="noopener noreferrer" class="">#7701</a></li>
</ul>]]></content>
        <author>
            <name>David Stancu</name>
            <uri>https://github.com/mach-kernel</uri>
        </author>
        <category label="release" term="release"/>
        <category label="duckdb" term="duckdb"/>
        <category label="acceleration" term="acceleration"/>
        <category label="sql" term="sql"/>
        <category label="performance" term="performance"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.8.2 (Oct 21, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.8.2</id>
        <link href="https://spiceai.org/blog/releases/v1.8.2"/>
        <updated>2025-10-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.8.2! 🔍]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.8.2! 🔍</p>
<p>Spice v1.8.2 is a patch release focused on reliability, validation, performance, and bug fixes, with improvements across DuckDB acceleration, S3 Vectors, document tables, and HTTP search.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v182">What's New in v1.8.2<a href="https://spiceai.org/blog/releases/v1.8.2#whats-new-in-v182" class="hash-link" aria-label="Direct link to What's New in v1.8.2" title="Direct link to What's New in v1.8.2" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="support-table-relations-in-v1search-http-endpoint">Support Table Relations in <code>/v1/search</code> HTTP Endpoint<a href="https://spiceai.org/blog/releases/v1.8.2#support-table-relations-in-v1search-http-endpoint" class="hash-link" aria-label="Direct link to support-table-relations-in-v1search-http-endpoint" title="Direct link to support-table-relations-in-v1search-http-endpoint" translate="no">​</a></h3>
<p>Spice now supports table relations for the <code>additional_columns</code> and <code>where</code> parameters in the <code>/v1/search</code> endpoint. This enables improved search for multi-dataset use cases, where filters and columns can be used on specific datasets.</p>
<p>Example:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><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/search'</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-H</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'Content-Type: application/json'</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-H</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'Accept: application/json'</span><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-d</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">        "text": "hello world",</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">        "additional_columns": ["tbl1.foo", "tbl2.bar", "baz"],</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">        "where": "tbl1.foo &gt; 100000",</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">        "limit": 5</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    }'</span><br></span></code></pre></div></div>
<p>In this example, search results from the <code>tbl1</code> dataset will include columns <code>foo</code> and <code>baz</code>, where <code>foo &gt; 100000</code>. For <code>tbl2</code>, columns <code>bar</code> and <code>baz</code> will be returned.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="duckdb-data-accelerator-table-partitioning--indexing">DuckDB Data Accelerator Table Partitioning &amp; Indexing<a href="https://spiceai.org/blog/releases/v1.8.2#duckdb-data-accelerator-table-partitioning--indexing" class="hash-link" aria-label="Direct link to DuckDB Data Accelerator Table Partitioning &amp; Indexing" title="Direct link to DuckDB Data Accelerator Table Partitioning &amp; Indexing" translate="no">​</a></h3>
<ul>
<li class=""><strong>Configurable DuckDB Index Scan</strong>: DuckDB acceleration now supports configurable <code>duckdb_index_scan_percentage</code> and <code>duckdb_index_scan_max_count</code> parameters, supporting fine-tuning of index scan behavior for improved query performance.</li>
</ul>
<p>Example:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> postgres</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># When combined, DuckDB will use an index scan when the number of qualifying rows is less than the maximum of these two thresholds</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_index_scan_percentage</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%)">'0.10'</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># 10% as decimal</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_index_scan_max_count</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%)">'1000'</span><br></span></code></pre></div></div>
<ul>
<li class="">
<p><strong>Hive-Style Partitioning</strong>: In file-partitioned mode, the DuckDB data accelerator uses Hive-style partitioning for more efficient file management.</p>
</li>
<li class="">
<p><strong>Table-Based Partitioning</strong>: Spice now supports partitioning DuckDB accelerations within a single file. This approach maintains ACID guarantees for full and append mode refreshes, while optimizing resource usage and improving query performance. Configure via the <code>partition_mode</code> parameter:</p>
</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">test_data.parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> test_data</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tables</span><br></span><span class="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_by</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> bucket(100</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> Field1)</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="s3-vectors-reliability">S3 Vectors Reliability<a href="https://spiceai.org/blog/releases/v1.8.2#s3-vectors-reliability" class="hash-link" aria-label="Direct link to S3 Vectors Reliability" title="Direct link to S3 Vectors Reliability" translate="no">​</a></h3>
<ul>
<li class=""><strong>Race Condition Fix</strong>: Resolved a race condition in S3 Vectors index and bucket creation. The runtime also now checks if an index or bucket exists after a <code>ConflictException</code>, ensuring robust error handling during index creation and improving reliability for large-scale multi-index vector search.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="document-table-improvements">Document Table Improvements<a href="https://spiceai.org/blog/releases/v1.8.2#document-table-improvements" class="hash-link" aria-label="Direct link to Document Table Improvements" title="Direct link to Document Table Improvements" translate="no">​</a></h3>
<ul>
<li class=""><strong>Primary Key Update</strong>: Document tables now use the <code>location</code> column as the primary key, improving performance, consistency, and query reliability.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bugfixes">Additional Improvements &amp; Bugfixes<a href="https://spiceai.org/blog/releases/v1.8.2#additional-improvements--bugfixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bugfixes" title="Direct link to Additional Improvements &amp; Bugfixes" translate="no">​</a></h3>
<ul>
<li class="">Reliability: Improved error handling and resource checks for S3 Vectors and DuckDB acceleration.</li>
<li class="">Validation: Expanded validation for partitioning and index creation.</li>
<li class="">Performance: Optimized partition refresh and index scan logic.</li>
<li class="">Bugfix: Don't nullify DuckDB release callbacks for schemas.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.8.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/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/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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>
<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/blog/releases/v1.8.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/blog/releases/v1.8.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 major cookbook updates.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 81 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/blog/releases/v1.8.2#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v1.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.8.2</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.8.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/blog/releases/v1.8.2#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Update mongo config for benchmarks by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7546" target="_blank" rel="noopener noreferrer" class="">#7546</a></li>
<li class="">Configurable DuckDB duckdb_index_scan_percentage &amp; duckdb_index_scan_max_count by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7551" target="_blank" rel="noopener noreferrer" class="">#7551</a></li>
<li class="">Fix race condition in S3 Vectors index and bucket creation by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7577" target="_blank" rel="noopener noreferrer" class="">#7577</a></li>
<li class="">Use 'location' as primary key for document tables by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7567" target="_blank" rel="noopener noreferrer" class="">#7567</a></li>
<li class="">Update official Docker builds to use release binaries by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7597" target="_blank" rel="noopener noreferrer" class="">#7597</a></li>
<li class="">Hive-style partitioning for DuckDB file mode by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7563" target="_blank" rel="noopener noreferrer" class="">#7563</a></li>
<li class="">New Generate Changelog workflow by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7562" target="_blank" rel="noopener noreferrer" class="">#7562</a></li>
<li class="">Add support for DuckDB table-based partitioning by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7581" target="_blank" rel="noopener noreferrer" class="">#7581</a></li>
<li class="">DuckDB table partitioning: delete partitions that no longer exist after full refresh by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7614" target="_blank" rel="noopener noreferrer" class="">#7614</a></li>
<li class="">Rename <code>duckdb_partition_mode</code> to <code>partition_mode</code> param by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7622" target="_blank" rel="noopener noreferrer" class="">#7622</a></li>
<li class="">Fix license issue in table-providers by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7620" target="_blank" rel="noopener noreferrer" class="">#7620</a></li>
<li class="">Make DuckDB table partition data write threshold configurable by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7626" target="_blank" rel="noopener noreferrer" class="">#7626</a></li>
<li class="">fix: Don't nullify DuckDB release callbacks for schemas by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7628" target="_blank" rel="noopener noreferrer" class="">#7628</a></li>
<li class="">Fix integration tests by reverting the use of batch inserts w/ prepared statements by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7630" target="_blank" rel="noopener noreferrer" class="">#7630</a></li>
<li class="">Return TableProvider from CandidateGeneration::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/7559" target="_blank" rel="noopener noreferrer" class="">#7559</a></li>
<li class="">Handle table relations in HTTP v1/search by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7615" target="_blank" rel="noopener noreferrer" class="">#7615</a></li>
</ul>]]></content>
        <author>
            <name>Jack Eadie</name>
            <uri>https://github.com/Jeadie</uri>
        </author>
        <category label="release" term="release"/>
        <category label="search" term="search"/>
        <category label="duckdb" term="duckdb"/>
        <category label="partitioning" term="partitioning"/>
        <category label="amazon s3 vectors" term="amazon s3 vectors"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.8.1 (Oct 13, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.8.1</id>
        <link href="https://spiceai.org/blog/releases/v1.8.1"/>
        <updated>2025-10-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.8.1! 🚀]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.8.1! 🚀</p>
<p>Spice v1.8.1 is a patch release that adds Acceleration Snapshots Indexes, and includes a number of bug fixes and performance improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v181">What's New in v1.8.1<a href="https://spiceai.org/blog/releases/v1.8.1#whats-new-in-v181" class="hash-link" aria-label="Direct link to What's New in v1.8.1" title="Direct link to What's New in v1.8.1" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="acceleration-snapshot-indexes">Acceleration Snapshot Indexes<a href="https://spiceai.org/blog/releases/v1.8.1#acceleration-snapshot-indexes" class="hash-link" aria-label="Direct link to Acceleration Snapshot Indexes" title="Direct link to Acceleration Snapshot Indexes" translate="no">​</a></h3>
<ul>
<li class="">
<p><strong>Management of <a href="https://spiceai.org/docs/features/data-acceleration/snapshots" target="_blank" rel="noopener noreferrer" class="">Acceleration Snapshots</a></strong> has been improved by adopting an Iceberg-inspired <code>metadata.json</code>, which now encodes pointer IDs, schema serialization, and robust checksum and size, which is validate before loading the snapshot.</p>
</li>
<li class="">
<p><strong>Acceleration Snapshot Metrics</strong>: The following metrics are now available for Acceleration Snapshots:</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_bootstrap_duration_ms</code>: The time it took the runtime to download the snapshot - only emitted when it initially downloads the snapshot.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_bootstrap_bytes</code>: The number of bytes downloaded to bootstrap the acceleration from the snapshot.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_bootstrap_checksum</code>: The checksum of the snapshot used to bootstrap the acceleration.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_failure_count</code>: Number of failures encountered when writing a new snapshot at the end of the refresh cycle. A snapshot failure does not prevent the refresh from completing.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_write_timestamp</code>: Unix timestamp in seconds when the last snapshot was completed.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_write_duration_ms</code>: The time it took to write the snapshot to object storage.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_write_bytes</code>: The number of bytes written on the last snapshot write.</p>
</li>
<li class="">
<p><code>dataset_acceleration_snapshot_write_checksum</code>: The SHA256 checksum of the last snapshot write.</p>
</li>
</ul>
<p>To learn more, see the <a href="https://spiceai.org/docs/features/data-acceleration/snapshots" target="_blank" rel="noopener noreferrer" class="">Acceleration Snapshots Documentation</a> and the <a href="https://spiceai.org/docs/features/observability" target="_blank" rel="noopener noreferrer" class="">Metrics Documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="improved-regular-expression-for-duckdb-acceleration">Improved Regular Expression for DuckDB acceleration<a href="https://spiceai.org/blog/releases/v1.8.1#improved-regular-expression-for-duckdb-acceleration" class="hash-link" aria-label="Direct link to Improved Regular Expression for DuckDB acceleration" title="Direct link to Improved Regular Expression for DuckDB acceleration" translate="no">​</a></h3>
<p>Regular expression support has been expanded when using DuckDB acceleration for functions like <code>regexp-like</code> and <code>regexp_match</code>.</p>
<p>For more details, refer to the <a href="https://spiceai.org/docs/reference/sql/scalar_functions#regular-expression-functions" target="_blank" rel="noopener noreferrer" class="">SQL Reference</a> for the list of available regular expression functions.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements--bugfixes">Additional Improvements &amp; Bugfixes<a href="https://spiceai.org/blog/releases/v1.8.1#additional-improvements--bugfixes" class="hash-link" aria-label="Direct link to Additional Improvements &amp; Bugfixes" title="Direct link to Additional Improvements &amp; Bugfixes" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Resolved an issue with partitioning on empty partition sets.</li>
<li class=""><strong>Validation</strong>: Added better validation for incorrectly configured Spicepods.</li>
<li class=""><strong>Reliability</strong>: Fixed <code>partition_by</code> accelerations when a projection is applied on empty partition sets.</li>
<li class=""><strong>Performance</strong>: Ensured <code>ListingTable</code> partitions are pruned when filters are not used.</li>
<li class=""><strong>Performance</strong>: Don't download acceleration snapshots if the acceleration is already present.</li>
<li class=""><strong>Performance</strong>: Refactored some blocking I/O and synchronization in the async codebase by moving operations to <code>tokio::task::spawn_blocking</code>, replacing blocking locks with async-friendly variants.</li>
<li class=""><strong>Bugfix</strong>: Nullable fields are now supported for S3 Vectors index columns.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.8.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/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>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.8.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/blog/releases/v1.8.1#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="">New <a href="https://github.com/spiceai/cookbook/blob/trunk/acceleration/snapshots/README.md" target="_blank" rel="noopener noreferrer" class="">Accelerated Snapshots</a> Recipe - The recipe shows how to bootstrap DuckDB accelerations from object storage to skip cold starts.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 81 recipes to help you get started with Spice quickly and easily.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.8.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.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.8.1</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.8.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/blog/releases/v1.8.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Remove println in datafusion by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7461" target="_blank" rel="noopener noreferrer" class="">#7461</a></li>
<li class="">fix: Ensure ListingTable partitions are pruned when filters are not used by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7471" target="_blank" rel="noopener noreferrer" class="">#7471</a></li>
<li class="">Create <code>runtime-secrets</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7474" target="_blank" rel="noopener noreferrer" class="">#7474</a></li>
<li class="">Create <code>runtime-parameters</code> crate by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7475" target="_blank" rel="noopener noreferrer" class="">#7475</a></li>
<li class="">Don't download the snapshot if the acceleration is present by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7477" target="_blank" rel="noopener noreferrer" class="">#7477</a></li>
<li class="">Add support for S3 dataset params by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7476" target="_blank" rel="noopener noreferrer" class="">#7476</a></li>
<li class="">Add better snapshot validation for incorrectly configured spicepods by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7487" target="_blank" rel="noopener noreferrer" class="">#7487</a></li>
<li class="">Move blocking/sync I/O to spawn blocking  by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7462" target="_blank" rel="noopener noreferrer" class="">#7462</a></li>
<li class="">Validate spicepod file exists before running tests by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7492" target="_blank" rel="noopener noreferrer" class="">#7492</a></li>
<li class="">Make snapshot reading/writing more robust with Iceberg-like metadata.json by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7486" target="_blank" rel="noopener noreferrer" class="">#7486</a></li>
<li class="">Create <code>runtime-request-context</code> crate by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7459" target="_blank" rel="noopener noreferrer" class="">#7459</a></li>
<li class="">Two minor fixes for AI udf tests by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7503" target="_blank" rel="noopener noreferrer" class="">#7503</a></li>
<li class="">Add model response timeout for ai udf tests  by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7504" target="_blank" rel="noopener noreferrer" class="">#7504</a></li>
<li class="">Add sccache for build test operator by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7515" target="_blank" rel="noopener noreferrer" class="">#7515</a></li>
<li class="">Fix partition_by accelerations when a projection is applied on empty partition sets by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7526" target="_blank" rel="noopener noreferrer" class="">#7526</a></li>
<li class="">Nullable fields for index columns by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7523" target="_blank" rel="noopener noreferrer" class="">#7523</a></li>
</ul>]]></content>
        <author>
            <name>Viktor Yershov</name>
            <uri>https://github.com/krinart</uri>
        </author>
        <category label="release" term="release"/>
        <category label="snapshots" term="snapshots"/>
        <category label="duckdb" term="duckdb"/>
        <category label="sql" term="sql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.8.0 (Oct 6, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.8.0</id>
        <link href="https://spiceai.org/blog/releases/v1.8.0"/>
        <updated>2025-10-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.8.0! 🧊]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.8.0! 🧊</p>
<p>Spice v1.8.0 delivers major advances in data writes, scalable vector search, and now in preview—<strong>managed acceleration snapshots</strong> for fast cold starts. This release introduces <strong>write support for Iceberg tables</strong> using standard SQL <code>INSERT INTO</code>, <strong>partitioned S3 Vector indexes</strong> for petabyte-scale vector search, and <strong>preview of the AI SQL function</strong> for direct LLM integration in SQL. Additional improvements include improved reliability, and the v3.0.3 release of the Spice.js Node.js SDK.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v180">What's New in v1.8.0<a href="https://spiceai.org/blog/releases/v1.8.0#whats-new-in-v180" class="hash-link" aria-label="Direct link to What's New in v1.8.0" title="Direct link to What's New in v1.8.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="iceberg-table-write-support-preview">Iceberg Table Write Support (Preview)<a href="https://spiceai.org/blog/releases/v1.8.0#iceberg-table-write-support-preview" class="hash-link" aria-label="Direct link to Iceberg Table Write Support (Preview)" title="Direct link to Iceberg Table Write Support (Preview)" translate="no">​</a></h3>
<p><strong>Append Data to Iceberg Tables with SQL <code>INSERT INTO</code></strong>: Spice now supports writing to Iceberg tables and catalogs using standard SQL <code>INSERT INTO</code> statements. This enables data ingestion, transformation, and pipeline use cases—no Spark or external writer required.</p>
<ul>
<li class=""><strong>Append-only</strong>: Initial version targets appends; no overwrite or delete.</li>
<li class=""><strong>Schema validation</strong>: Inserted data must match the target table schema.</li>
<li class=""><strong>Secure by default</strong>: Writes are only enabled for datasets or catalogs explicitly marked with <code>access: read_write</code>.</li>
</ul>
<p><strong>Example Spicepod 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">catalogs</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg</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">//glue.ap</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">northeast</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">3.amazonaws.com/iceberg/v1/catalogs/111111/namespaces</span><br></span><span class="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"> ice</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">access</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> read_write</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg</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">//iceberg</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">catalog</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">host.com/v1/namespaces/my_namespace/tables/my_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">access</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> read_write</span><br></span></code></pre></div></div>
<p><strong>Example SQL usage:</strong></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Insert from another table</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INTO</span><span class="token plain"> iceberg_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> existing_table</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Insert with values</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INTO</span><span class="token plain"> iceberg_table </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> amount</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">1</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%)">'John'</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%)">100.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><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">2</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%)">'Jane'</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%)">200.0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Insert into catalog table</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INTO</span><span class="token plain"> ice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">sales</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token keyword" style="color:hsl(301, 63%, 40%)">transactions</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">VALUES</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">1001</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%)">'2025-01-15'</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%)">299.99</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%)">'completed'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<blockquote>
<p><strong>Note</strong>: Only Iceberg datasets and catalogs with <code>access: read_write</code> support writes. Internal Spice tables and other connectors remain read-only.</p>
</blockquote>
<p>Learn more in the <a href="https://spiceai.org/docs/components/data-connectors/iceberg" target="_blank" rel="noopener noreferrer" class="">Iceberg Data Connector documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="acceleration-snapshots-for-fast-cold-starts-preview">Acceleration Snapshots for Fast Cold Starts (Preview)<a href="https://spiceai.org/blog/releases/v1.8.0#acceleration-snapshots-for-fast-cold-starts-preview" class="hash-link" aria-label="Direct link to Acceleration Snapshots for Fast Cold Starts (Preview)" title="Direct link to Acceleration Snapshots for Fast Cold Starts (Preview)" translate="no">​</a></h3>
<p><strong>Bootstrap Managed Accelerations from Object Storage</strong>: Spice now supports managed acceleration snapshots in preview, enabling datasets accelerated with file-based engines (DuckDB or SQLite) to bootstrap from a snapshot stored in object storage (such as S3) if the local acceleration file does not exist on startup. This dramatically reduces cold start times and enables ephemeral storage for accelerations with persistent recovery.</p>
<p><strong>Key features:</strong></p>
<ul>
<li class=""><strong>Rapid readiness:</strong> Datasets can become ready in seconds by downloading a pre-built snapshot, skipping lengthy initial acceleration.</li>
<li class=""><strong>Hive-style partitioning:</strong> Snapshots are organized by month, day, and dataset for easy retention and management.</li>
<li class=""><strong>Flexible bootstrapping:</strong> Configurable fallback and retry behavior if a snapshot is missing or corrupted.</li>
</ul>
<p><strong>Example Spicepod 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><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"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">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">//some_bucket/some_folder/ </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Folder for storing snapshots</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">bootstrap_on_failure_behavior</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> warn </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Options: warn, retry, fallback</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">s3_auth</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iam_role </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># All S3 dataset params accepted here</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">//some_bucket/some_table/</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> some_table</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">file_format</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> parquet</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">s3_auth</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iam_role</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">snapshots</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Options: enabled, disabled, bootstrap_only, create_only</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> file</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">duckdb_file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> /nvme/some_table.db</span><br></span></code></pre></div></div>
<p><strong>How it works:</strong></p>
<ul>
<li class="">On startup, if the acceleration file does not exist, Spice checks the snapshot location for the latest snapshot and downloads it.</li>
<li class="">Snapshots are stored as: <code>s3://some_bucket/some_folder/month=2025-09/day=2025-09-30/dataset=some_table/some_table_&lt;timestamp&gt;.db</code></li>
<li class="">If no snapshot is found, a new acceleration file is created as usual.</li>
<li class="">Snapshots are written after each refresh (unless configured otherwise).</li>
</ul>
<p><strong>Supported snapshot modes:</strong></p>
<ul>
<li class=""><code>enabled</code>: Download and write snapshots.</li>
<li class=""><code>bootstrap_only</code>: Only download on startup, do not write new snapshots.</li>
<li class=""><code>create_only</code>: Only write snapshots, do not download on startup.</li>
<li class=""><code>disabled</code>: No snapshotting.</li>
</ul>
<blockquote>
<p><strong>Note</strong>: This feature is only supported for file-based accelerations (DuckDB or SQLite) with dedicated files.</p>
</blockquote>
<p><strong>Why use acceleration snapshots?</strong></p>
<ul>
<li class=""><strong>Faster cold starts:</strong> Skip waiting for full acceleration on startup.</li>
<li class=""><strong>Ephemeral storage:</strong> Use fast local disks (e.g., NVMe) for acceleration, with persistent recovery from object storage.</li>
<li class=""><strong>Disaster recovery:</strong> Recover from federated source outages by bootstrapping from the latest snapshot.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="partitioned-s3-vector-indexes">Partitioned S3 Vector Indexes<a href="https://spiceai.org/blog/releases/v1.8.0#partitioned-s3-vector-indexes" class="hash-link" aria-label="Direct link to Partitioned S3 Vector Indexes" title="Direct link to Partitioned S3 Vector Indexes" translate="no">​</a></h3>
<p><strong>Efficient, Scalable Vector Search with Partitioning</strong>: Spice now supports partitioning Amazon S3 Vector indexes and scatter-gather queries using a <code>partition_by</code> expression in the dataset vector engine configuration. Partitioned indexes enable faster ingestion, lower query latency, and scale to billions of vectors.</p>
<p><strong>Example Spicepod 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3_vectors</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">s3_vectors_bucket</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket</span><br></span><span class="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_vectors_index</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">embeddings</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">partition_by</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'bucket(50, PULocationID)'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> body</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">          </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock_titan</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> title</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">          </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock_titan</span><br></span></code></pre></div></div>
<p>See the <a href="https://spiceai.org/docs/components/vectors/s3_vectors" target="_blank" rel="noopener noreferrer" class="">Amazon S3 Vectors documentation</a> for details.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="ai-sql-function-for-llm-integration-preview">AI SQL function for LLM Integration (Preview)<a href="https://spiceai.org/blog/releases/v1.8.0#ai-sql-function-for-llm-integration-preview" class="hash-link" aria-label="Direct link to AI SQL function for LLM Integration (Preview)" title="Direct link to AI SQL function for LLM Integration (Preview)" translate="no">​</a></h3>
<p><strong>LLMs Directly In SQL</strong>: A new asynchronous <code>ai</code> SQL function enables direct calls to LLMs from SQL queries for text generation, translation, classification, and more. This feature is released in preview and supports both default and model-specific invocation.</p>
<p><strong>Example Spicepod model 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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">models</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> gpt</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">4o</span><br></span><span class="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"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">gpt</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">4o</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">openai_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">openai_key</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></span></code></pre></div></div>
<p><strong>Example SQL usage:</strong></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- basic usage with default model</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> ai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">'hi, this prompt is directly from SQL.'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- basic usage with specified model</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> ai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">'hi, this prompt is directly from 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%)">'gpt-4o'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Using row data as input to the prompt</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> ai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">concat_ws</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" 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 string" style="color:hsl(119, 34%, 47%)">'Categorize the zone'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> Zone</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%)">'in a single word. Only return the word.'</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 keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> category</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> taxi_zones</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>Learn more in the <a href="https://spiceai.org/docs/reference/sql/ai" target="_blank" rel="noopener noreferrer" class="">SQL Reference AI documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="remote-endpoint-support-for-spice-cli">Remote Endpoint Support for Spice CLI<a href="https://spiceai.org/blog/releases/v1.8.0#remote-endpoint-support-for-spice-cli" class="hash-link" aria-label="Direct link to Remote Endpoint Support for Spice CLI" title="Direct link to Remote Endpoint Support for Spice CLI" translate="no">​</a></h3>
<p><strong>Run CLI Commands Remotely:</strong> The Spice CLI now supports connecting to remote Spice instances, enabling you to run <code>spice sql</code>, <code>spice search</code>, and <code>spice chat</code> commands from your local machine against a remote <code>spiced</code> daemon or to Spice Cloud. Previously, these commands required running on the same machine as the runtime. Now, new flags allow remote execution:</p>
<ul>
<li class=""><code>--cloud</code>: Connect to a Spice Cloud instance (requires <code>--api-key</code>).</li>
<li class=""><code>--endpoint &lt;endpoint&gt;</code>: Connect to a remote Spice instance via HTTP or Arrow Flight SQL (gRPC). Supports <code>http://</code>, <code>https://</code>, <code>grpc://</code>, or <code>grpc+tls://</code> schemes.</li>
</ul>
<p><strong>Examples:</strong></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Run SQL queries against a remote Spice instance</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice sql </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--endpoint</span><span class="token plain"> http://remote-host:8090</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Use Spice Cloud for chat or search</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice chat </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--cloud</span><span class="token plain"> --api-key </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&lt;</span><span class="token plain">your-api-key</span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice search </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--cloud</span><span class="token plain"> --api-key </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&lt;</span><span class="token plain">your-api-key</span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;</span><br></span></code></pre></div></div>
<p><strong>Supported CLI Commands:</strong></p>
<ul>
<li class=""><code>spice sql --cloud</code> / <code>spice sql --endpoint &lt;endpoint&gt;</code></li>
<li class=""><code>spice search --cloud</code> / <code>spice search --endpoint &lt;endpoint&gt;</code></li>
<li class=""><code>spice chat --cloud</code> / <code>spice chat --endpoint &lt;endpoint&gt;</code></li>
</ul>
<p><strong>Additional Flags:</strong></p>
<ul>
<li class=""><code>--headers</code>: Pass custom HTTP headers to the remote endpoint.</li>
<li class=""><code>--tls-root-certificate-file</code>: Specify a root certificate for TLS verification.</li>
<li class=""><code>--user-agent</code>: Set a custom user agent for requests.</li>
</ul>
<p>For more details, see the <a href="https://spiceai.org/docs/cli/reference" target="_blank" rel="noopener noreferrer" class="">Spice CLI Command Reference</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spicejs-v303-sdk">Spice.js v3.0.3 SDK<a href="https://spiceai.org/blog/releases/v1.8.0#spicejs-v303-sdk" class="hash-link" aria-label="Direct link to Spice.js v3.0.3 SDK" title="Direct link to Spice.js v3.0.3 SDK" translate="no">​</a></h3>
<p><strong>Spice.js v3.0.3 Released:</strong> The official <a href="https://www.npmjs.com/package/@spiceai/spice" target="_blank" rel="noopener noreferrer" class="">Spice.ai Node.js/JavaScript SDK</a> has been updated to v3.0.3, bringing cross-platform support, new APIs, and improved reliability for both Node.js and browser environments.</p>
<ul>
<li class=""><strong>Modern Query Methods:</strong> Use <code>sql()</code>, <code>sqlJson()</code>, and <code>nsql()</code> for flexible querying, streaming, and natural language to SQL.</li>
<li class=""><strong>Browser Support:</strong> SDK now works in browsers and web applications, automatically selecting the optimal transport (gRPC or HTTP).</li>
<li class=""><strong>Health Checks &amp; Dataset Refresh:</strong> Easily monitor Spice runtime health and trigger dataset refreshes on demand.</li>
<li class=""><strong>Automatic HTTP Fallback:</strong> If gRPC/Flight is unavailable, the SDK falls back to HTTP automatically.</li>
<li class=""><strong>Migration Guidance:</strong> v3 requires Node.js 20+, uses camelCase parameters, and introduces a new package structure.</li>
</ul>
<p><strong>Example usage:</strong></p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword module" style="color:hsl(301, 63%, 40%)">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">SpiceClient</span><span class="token imports"> </span><span class="token imports punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"> </span><span class="token keyword module" style="color:hsl(301, 63%, 40%)">from</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'@spiceai/spice'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> client </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%)">new</span><span class="token plain"> </span><span class="token class-name" style="color:hsl(35, 99%, 36%)">SpiceClient</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">apiKey</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> table </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:hsl(301, 63%, 40%)">await</span><span class="token plain"> client</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token method function property-access" style="color:hsl(221, 87%, 60%)">sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">'SELECT * FROM my_table LIMIT 10'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token console class-name" style="color:hsl(35, 99%, 36%)">console</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token method function property-access" style="color:hsl(221, 87%, 60%)">table</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">table</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token method function property-access" style="color:hsl(221, 87%, 60%)">toArray</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><br></span></code></pre></div></div>
<p>See <a href="https://spiceai.org/docs/sdks/javascript" target="_blank" rel="noopener noreferrer" class="">Spice.js SDK documentation</a> for full details, migration tips, and advanced usage.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="additional-improvements">Additional Improvements<a href="https://spiceai.org/blog/releases/v1.8.0#additional-improvements" class="hash-link" aria-label="Direct link to Additional Improvements" title="Direct link to Additional Improvements" translate="no">​</a></h3>
<ul>
<li class=""><strong>Reliability</strong>: Improved logging, error handling, and network readiness checks across connectors (Iceberg, Databricks, etc.).</li>
<li class=""><strong>Vector search durability and scale</strong>: Refined logging, stricter default limits, safeguards against index-only scans and duplicate results, and always-accessible metadata for robust queryability at scale.</li>
<li class=""><strong>Cache behavior</strong>: Tightened cache logic for modification queries.</li>
<li class=""><strong>Full-Text Search</strong>: FTS metadata columns now usable in projections; max search results increased to 1000.</li>
<li class=""><strong>RRF Hybrid Search</strong>: Reciprocal Rank Fusion (RRF) UDTF enhancements for advanced hybrid search scenarios.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.8.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/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>
<li class=""><a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a></li>
<li class=""><a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a></li>
<li class=""><a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.8.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p>This release introduces two breaking changes associated with the search observability and tooling.</p>
<p>Firstly, the <a href="https://spiceai.org/docs/components/tools#available-tools" target="_blank" rel="noopener noreferrer" class=""><code>document_similarity</code></a> tool has been renamed to <code>search</code>. This has the equivalent change to tracing of these tool calls:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">## Old: v1.7.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;&gt;</span><span class="token plain"> spice trace tool_use::document_similarity</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;&gt;</span><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 parameter variable" style="color:hsl(221, 87%, 60%)">-XPOST</span><span class="token plain"> http://localhost:8090/v1/tools/document_similarity </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-d</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    "datasets": ["my_tbl"],</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    "text": "Welcome to another Spice release"</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">  }'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">## New: v1.8.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;&gt;</span><span class="token plain"> spice trace tool_use::search</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;&gt;</span><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 parameter variable" style="color:hsl(221, 87%, 60%)">-XPOST</span><span class="token plain"> http://localhost:8090/v1/tools/search </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-d</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    "datasets": ["my_tbl"],</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    "text": "Welcome to another Spice release"</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">  }'</span><br></span></code></pre></div></div>
<p>Secondly, the <code>vector_search</code> task in <code>runtime.task_history</code> has been renamed to <code>search</code>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.8.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 new <a href="https://github.com/spiceai/cookbook/tree/trunk/ai" target="_blank" rel="noopener noreferrer" class="">AI SQL function</a> recipe for invoking LLMs within SQL queries.</li>
<li class="">Updated <a href="https://github.com/spiceai/cookbook/blob/trunk/catalogs/iceberg/README.md" target="_blank" rel="noopener noreferrer" class="">Iceberg Catalog Connector</a> recipe for Iceberg Writes.</li>
<li class="">Updated <a href="https://github.com/spiceai/cookbook/blob/trunk/client-sdk/spice.js-sdk-sample/README.md" target="_blank" rel="noopener noreferrer" class="">Spice.js JavaScript (Node.js) SDK</a> for v3.0.3 with examples and v2 to v3 migration guide.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> now includes 80 recipes to help you get started with Spice quickly and easily.</p>
<hr>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="upgrading">Upgrading<a href="https://spiceai.org/blog/releases/v1.8.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.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.8.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.8.0</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.8.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="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.8.0#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<ul>
<li class=""><strong>iceberg-rust</strong>: <a href="https://github.com/apache/iceberg-rust/releases/tag/v0.7.0-rc.1" target="_blank" rel="noopener noreferrer" class="">Upgraded to v0.7.0-rc.1</a></li>
<li class=""><strong>mimalloc</strong>: Upgraded from 0.1.47 to 0.1.48</li>
<li class=""><strong>azure_core</strong>: Upgraded from 0.27.0 to 0.28.0</li>
<li class=""><strong>Jimver/cuda-toolkit</strong>: Upgraded from 0.2.27 to 0.2.28</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.8.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Add <code>#[cfg(feature = "postgres")]</code> to acceleration refresh 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/7241" target="_blank" rel="noopener noreferrer" class="">#7241</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7267" target="_blank" rel="noopener noreferrer" class="">#7267</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7268" target="_blank" rel="noopener noreferrer" class="">#7268</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7269" target="_blank" rel="noopener noreferrer" class="">#7269</a></li>
<li class="">Update the tpch benchmark snapshots for: federated/databricks[sql_warehouse].yaml by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7270" target="_blank" rel="noopener noreferrer" class="">#7270</a></li>
<li class="">EmbeddingInput cache keys to include model name 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/7275" target="_blank" rel="noopener noreferrer" class="">#7275</a></li>
<li class="">ensure FTS metadata columns can be used in projection by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7282" target="_blank" rel="noopener noreferrer" class="">#7282</a></li>
<li class="">Use 8-core runners for Windows CUDA 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/7284" target="_blank" rel="noopener noreferrer" class="">#7284</a></li>
<li class="">Make search test more robust by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7283" target="_blank" rel="noopener noreferrer" class="">#7283</a></li>
<li class="">Post-release housekeeping by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7272" target="_blank" rel="noopener noreferrer" class="">#7272</a></li>
<li class="">fix: Use median cached response duration for test search cache by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7286" target="_blank" rel="noopener noreferrer" class="">#7286</a></li>
<li class="">Bump dirs from 5.0.1 to 6.0.0 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7244" target="_blank" rel="noopener noreferrer" class="">#7244</a></li>
<li class="">Bump indexmap from 2.11.0 to 2.11.4 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7248" target="_blank" rel="noopener noreferrer" class="">#7248</a></li>
<li class="">Fix JOIN level filters not having columns in 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/7287" target="_blank" rel="noopener noreferrer" class="">#7287</a></li>
<li class="">use SessionContext::new_empty in RRF by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7291" target="_blank" rel="noopener noreferrer" class="">#7291</a></li>
<li class="">Use rust:1.89-slim-bookworm for build, more places to bump rust 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/7293" target="_blank" rel="noopener noreferrer" class="">#7293</a></li>
<li class="">Update openapi.json by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7290" target="_blank" rel="noopener noreferrer" class="">#7290</a></li>
<li class="">Enable chunking in <code>SearchIndex</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/7143" target="_blank" rel="noopener noreferrer" class="">#7143</a></li>
<li class="">Add index name and remove duplicate records string to S3 Vectors log by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7260" target="_blank" rel="noopener noreferrer" class="">#7260</a></li>
<li class="">Use file-based fts 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/7024" target="_blank" rel="noopener noreferrer" class="">#7024</a></li>
<li class="">Remove 'PostApplyCandidateGeneration' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7288" target="_blank" rel="noopener noreferrer" class="">#7288</a></li>
<li class="">RRF: Rank and recency boosting 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/7294" target="_blank" rel="noopener noreferrer" class="">#7294</a></li>
<li class="">Update ROADMAP.md by removing v1.7 milestone by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7297" target="_blank" rel="noopener noreferrer" class="">#7297</a></li>
<li class="">RRF: Preserve base ranking when results differ -&gt; FULL OUTER JOIN does not produce time column 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/7300" target="_blank" rel="noopener noreferrer" class="">#7300</a></li>
<li class="">chore: remove unused Dataset methods by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7295" target="_blank" rel="noopener noreferrer" class="">#7295</a></li>
<li class="">fix removing embedding column by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7302" target="_blank" rel="noopener noreferrer" class="">#7302</a></li>
<li class="">fix: Add feature flag for using object store in <code>spicepod</code> by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7303" target="_blank" rel="noopener noreferrer" class="">#7303</a></li>
<li class="">Upgrade to iceberg-rust v0.7.0-rc1 by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7296" target="_blank" rel="noopener noreferrer" class="">#7296</a></li>
<li class="">Enable DML <code>Update</code> SQL operations for datasets configured as <code>access: read_write</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/7304" target="_blank" rel="noopener noreferrer" class="">#7304</a></li>
<li class="">Create and parse partitioned S3 vector index names by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7198" target="_blank" rel="noopener noreferrer" class="">#7198</a></li>
<li class="">RRF: Fix decay for disjoint result sets 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/7305" target="_blank" rel="noopener noreferrer" class="">#7305</a></li>
<li class="">RRF: Project top scores, do not yield duplicate results 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/7306" target="_blank" rel="noopener noreferrer" class="">#7306</a></li>
<li class="">RRF: Case sensitive column/ident handling by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> in <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">#7309</a> in <a href="https://github.com/spiceai/spiceai/pull/7309" target="_blank" rel="noopener noreferrer" class="">#7309</a></li>
<li class="">For <code>vector_search</code>, use a default limit of 1000 if no limit specified by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7311" target="_blank" rel="noopener noreferrer" class="">#7311</a></li>
<li class="">Don’t cache modification queries (DDL, DML, COPY) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7316" target="_blank" rel="noopener noreferrer" class="">#7316</a></li>
<li class="">Fix Anthropic model regex and add validation tests by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7319" target="_blank" rel="noopener noreferrer" class="">#7319</a></li>
<li class="">Enhancement: Implement before/after/lag metrics for acceleration 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/7310" target="_blank" rel="noopener noreferrer" class="">#7310</a></li>
<li class="">Refactor chat model health check to lower tokens usage for reasoning models by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7317" target="_blank" rel="noopener noreferrer" class="">#7317</a></li>
<li class="">Add support for writing into Iceberg 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/7315" target="_blank" rel="noopener noreferrer" class="">#7315</a></li>
<li class="">Fix lint warnings by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7327" target="_blank" rel="noopener noreferrer" class="">#7327</a></li>
<li class="">Use logical plan in <code>SearchQueryProvider</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/7314" target="_blank" rel="noopener noreferrer" class="">#7314</a></li>
<li class="">FTS max search results 100 -&gt; 1000 by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7331" target="_blank" rel="noopener noreferrer" class="">#7331</a></li>
<li class="">Improve Databricks SQL Warehouse Error 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/7332" target="_blank" rel="noopener noreferrer" class="">#7332</a></li>
<li class="">Use spicepod embedding model name for <code>model_name()</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/7333" target="_blank" rel="noopener noreferrer" class="">#7333</a></li>
<li class="">Handle async queries for Databricks SQL Warehouse 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/7335" target="_blank" rel="noopener noreferrer" class="">#7335</a></li>
<li class="">Enable DML (INSERT INTO) operations for catalogs configured as <code>access:read_write</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/7330" target="_blank" rel="noopener noreferrer" class="">#7330</a></li>
<li class="">Bump regex from 1.11.2 to 1.11.3 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7336" target="_blank" rel="noopener noreferrer" class="">#7336</a></li>
<li class="">Update qa_analytics.csv with 1.7.0 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/7337" target="_blank" rel="noopener noreferrer" class="">#7337</a></li>
<li class="">RRF: Fix ident resolution for struct fields, autohashed join key for varying types 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/7339" target="_blank" rel="noopener noreferrer" class="">#7339</a></li>
<li class="">v1.7.1 release notes by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7348" target="_blank" rel="noopener noreferrer" class="">#7348</a></li>
<li class="">Bump Jimver/cuda-toolkit from 0.2.27 to 0.2.28 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7343" target="_blank" rel="noopener noreferrer" class="">#7343</a></li>
<li class="">Add support for writing into Glue (Iceberg) tables and catalogs by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7355" target="_blank" rel="noopener noreferrer" class="">#7355</a></li>
<li class="">Bump mimalloc from 0.1.47 to 0.1.48 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7342" target="_blank" rel="noopener noreferrer" class="">#7342</a></li>
<li class="">Add <code>ai</code> async UDF by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7328" target="_blank" rel="noopener noreferrer" class="">#7328</a></li>
<li class="">Use self-hosted and spiceai-macos runners for workflows where possible by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7371" target="_blank" rel="noopener noreferrer" class="">#7371</a></li>
<li class="">Several updates for improved 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/7358" target="_blank" rel="noopener noreferrer" class="">#7358</a></li>
<li class="">Update supported versions in SECURITY.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/7377" target="_blank" rel="noopener noreferrer" class="">#7377</a></li>
<li class="">1.7.1 release analytics 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/7380" target="_blank" rel="noopener noreferrer" class="">#7380</a></li>
<li class="">Add <code>acceleration_file_path</code> helper and refactor <code>spice_sys</code> to use Snafu errors by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">#7376</a> in <a href="https://github.com/spiceai/spiceai/pull/7376" target="_blank" rel="noopener noreferrer" class="">#7376</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7353" target="_blank" rel="noopener noreferrer" class="">#7353</a></li>
<li class="">Robust search 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/7381" target="_blank" rel="noopener noreferrer" class="">#7381</a></li>
<li class="">[bug] Fix ai UDF bug of mismatched column length by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7383" target="_blank" rel="noopener noreferrer" class="">#7383</a></li>
<li class="">Add OpenOption to spice_sys acceleration 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/7379" target="_blank" rel="noopener noreferrer" class="">#7379</a></li>
<li class="">Add new <code>snapshots</code> Spicepod configuration by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7384" target="_blank" rel="noopener noreferrer" class="">#7384</a></li>
<li class="">Update naming of <code>tool_use::document_similarity</code> and <code>vector_search</code> spans by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7273" target="_blank" rel="noopener noreferrer" class="">#7273</a></li>
<li class="">fix: Update benchmark snapshots by <a href="https://github.com/github-actions%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@github-actions[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7354" target="_blank" rel="noopener noreferrer" class="">#7354</a></li>
<li class="">Make <code>ai</code> UDF a models 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/7387" target="_blank" rel="noopener noreferrer" class="">#7387</a></li>
<li class="">Add new <code>runtime_acceleration</code> crate; create <code>SnapshotManager</code>; implement <code>SnapshotManager::download_latest_snapshot</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/7386" target="_blank" rel="noopener noreferrer" class="">#7386</a></li>
<li class="">Refactor 'VectorScanTableProvider' to use just 'VectorIndex::list_table_provider' by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7318" target="_blank" rel="noopener noreferrer" class="">#7318</a></li>
<li class="">Fix embed logs by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7382" target="_blank" rel="noopener noreferrer" class="">#7382</a></li>
<li class="">Enable spicepod dependencies in <code>testoperator</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/7334" target="_blank" rel="noopener noreferrer" class="">#7334</a></li>
<li class=""><code>ai</code> UDF security and performance optimizations by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7392" target="_blank" rel="noopener noreferrer" class="">#7392</a></li>
<li class="">Wire up the snapshot download on dataset 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/7389" target="_blank" rel="noopener noreferrer" class="">#7389</a></li>
<li class="">Implement initial snapshot creation logic in <code>SnapshotManager</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/7391" target="_blank" rel="noopener noreferrer" class="">#7391</a></li>
<li class="">Make <code>tool_use::table_schema</code> output model-friendly by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7393" target="_blank" rel="noopener noreferrer" class="">#7393</a></li>
<li class="">Fix minor lint warnings by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7395" target="_blank" rel="noopener noreferrer" class="">#7395</a></li>
<li class="">Enable metadata columns in document-based object store 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/7397" target="_blank" rel="noopener noreferrer" class="">#7397</a></li>
<li class="">Core dependencies of financebench by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7400" target="_blank" rel="noopener noreferrer" class="">#7400</a></li>
<li class="">Add S3vector variant to financebench by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7399" target="_blank" rel="noopener noreferrer" class="">#7399</a></li>
<li class="">Set PostgreSQL unsupported_spice_action=string by default by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7398" target="_blank" rel="noopener noreferrer" class="">#7398</a></li>
<li class="">Use non-blocking connection check for verify_ns_lookup_and_tcp_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/7401" target="_blank" rel="noopener noreferrer" class="">#7401</a></li>
<li class="">Bump moka from 0.12.10 to 0.12.11 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7340" target="_blank" rel="noopener noreferrer" class="">#7340</a></li>
<li class="">Bump tokio-postgres from 0.7.13 to 0.7.14 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7344" target="_blank" rel="noopener noreferrer" class="">#7344</a></li>
<li class="">Bump azure_core from 0.27.0 to 0.28.0 by <a href="https://github.com/dependabot%5Bbot%5D" target="_blank" rel="noopener noreferrer" class="">@dependabot[bot]</a> in <a href="https://github.com/spiceai/spiceai/pull/7338" target="_blank" rel="noopener noreferrer" class="">#7338</a></li>
<li class="">Forbid <code>INSERT OVERWRITE</code> DML operations by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7402" target="_blank" rel="noopener noreferrer" class="">#7402</a></li>
<li class="">Make database connection pool sizes consistent by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7403" target="_blank" rel="noopener noreferrer" class="">#7403</a></li>
<li class="">Disable vector index only scans by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7405" target="_blank" rel="noopener noreferrer" class="">#7405</a></li>
<li class="">Make CLI <code>--endpoint</code> and <code>--cloud</code> args &amp; table output consistent by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7396" target="_blank" rel="noopener noreferrer" class="">#7396</a></li>
<li class="">Write new snapshots at the end of an accelerated refresh by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7410" target="_blank" rel="noopener noreferrer" class="">#7410</a></li>
<li class="">Read and write partitioned S3 indexes by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7313" target="_blank" rel="noopener noreferrer" class="">#7313</a></li>
<li class="">Fix partial data writes in Iceberg data 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/7411" target="_blank" rel="noopener noreferrer" class="">#7411</a></li>
<li class="">Remove nix by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7414" target="_blank" rel="noopener noreferrer" class="">#7414</a></li>
<li class="">Use DataFusion JoinSetTracer for async context 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/7416" target="_blank" rel="noopener noreferrer" class="">#7416</a></li>
<li class="">Implement cache invalidation for DML (INSERT INTO) operations by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7394" target="_blank" rel="noopener noreferrer" class="">#7394</a></li>
<li class="">Make cleanup disk GH action; use in 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/7418" target="_blank" rel="noopener noreferrer" class="">#7418</a></li>
<li class="">Move S3Vector to 'search' 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/7373" target="_blank" rel="noopener noreferrer" class="">#7373</a></li>
<li class="">Use LogicalPlan builder API for LogicalPlans by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7408" target="_blank" rel="noopener noreferrer" class="">#7408</a></li>
<li class="">Use hive-style partitioned paths for DB 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/7422" target="_blank" rel="noopener noreferrer" class="">#7422</a></li>
<li class="">Limit results from <code>SearchIndex::query_table_provider</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/7421" target="_blank" rel="noopener noreferrer" class="">#7421</a></li>
<li class="">Delay initial readiness if snapshots are enabled with an append-mode refresh by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7425" target="_blank" rel="noopener noreferrer" class="">#7425</a></li>
<li class="">Disable snapshots by default by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7426" target="_blank" rel="noopener noreferrer" class="">#7426</a></li>
<li class="">Rewrite <code>ChunkedNonIndexVectorGeneration</code> to use LogicalPlanBuilder (instead of string formatting) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7413" target="_blank" rel="noopener noreferrer" class="">#7413</a></li>
<li class="">Fix for search field as metadata for chunked search indexes by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7429" target="_blank" rel="noopener noreferrer" class="">#7429</a></li>
<li class="">Add feature is currently in preview warning for read_write access mode by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7440" target="_blank" rel="noopener noreferrer" class="">#7440</a></li>
<li class="">Add feature is currently in preview warning for snapshots by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7442" target="_blank" rel="noopener noreferrer" class="">#7442</a></li>
<li class="">Fix tracing so that ai_completions are parented under sql_query by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7415" target="_blank" rel="noopener noreferrer" class="">#7415</a></li>
<li class="">Disable acceleration refresh metrics by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7450" target="_blank" rel="noopener noreferrer" class="">#7450</a></li>
<li class="">Enable snapshot acceleration by default by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7451" target="_blank" rel="noopener noreferrer" class="">#7451</a></li>
<li class="">fix: partition name validation by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7452" target="_blank" rel="noopener noreferrer" class="">#7452</a></li>
</ul>]]></content>
        <author>
            <name>Phillip LeBlanc</name>
            <uri>https://x.com/leblancphill</uri>
        </author>
        <category label="release" term="release"/>
        <category label="iceberg" term="iceberg"/>
        <category label="snapshots" term="snapshots"/>
        <category label="amazon s3 vectors" term="amazon s3 vectors"/>
        <category label="vector-search" term="vector-search"/>
        <category label="llm-tool" term="llm-tool"/>
        <category label="sql" term="sql"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.7.1 (Sep 29, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.7.1</id>
        <link href="https://spiceai.org/blog/releases/v1.7.1"/>
        <updated>2025-09-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.7.1! 🔍]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.7.1! 🔍</p>
<p>Spice v1.7.1 is a patch release focused on search improvements, bug fixes, and performance enhancements. This release introduces the Reciprocal Rank Fusion (RRF) user-defined table function (UDTF) for hybrid search, improves vector and text search reliability, and resolves several issues across the runtime, connectors, and query engine.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v171">What's New in v1.7.1<a href="https://spiceai.org/blog/releases/v1.7.1#whats-new-in-v171" class="hash-link" aria-label="Direct link to What's New in v1.7.1" title="Direct link to What's New in v1.7.1" translate="no">​</a></h2>
<p><strong>Reciprocal Rank Fusion (RRF) UDTF</strong>: Spice now supports Reciprocal Rank Fusion (RRF) as a user-defined table function, enabling advanced hybrid search scenarios that combine results from multiple search methods (e.g., vector and text search) for improved relevance ranking.</p>
<p>Features:</p>
<ul>
<li class="">Multi-search fusion: Combine results from <code>vector_search</code>, <code>text_search</code>, and other search UDTFs in a single query.</li>
<li class="">Advanced tuning: Per-query ranking weights, recency boosting, and configurable decay functions.</li>
<li class="">Performance: Optional user-specified join key for optimal performance.</li>
<li class="">Automatic joining: Falls back to on-the-fly JOIN key computation when no explicit key is provided.</li>
</ul>
<p>Example usage:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> title</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> content</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> fused_score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> rrf</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">documents</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%)">'machine learning algorithms'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> rank_weight </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 number" style="color:hsl(35, 99%, 36%)">1.5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  text_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">documents</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%)">'neural networks deep learning'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> rank_weight </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 number" style="color:hsl(35, 99%, 36%)">1.2</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  join_key </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 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 comment" style="color:hsl(230, 4%, 64%)">-- optional join key for optimal performance</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  k </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 number" style="color:hsl(35, 99%, 36%)">60.0</span><span class="token plain">            </span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- optional smoothing factor</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> fused_score </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%)">0.01</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> fused_score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>Learn more in the <a href="https://spiceai.org/docs/reference/sql/search#reciprocal-rank-fusion-rrf" target="_blank" rel="noopener noreferrer" class="">RRF documentation</a>.</p>
<p><strong>Acceleration Refresh Metrics</strong>: Spice now exposes additional Prometheus metrics that provide detailed observability into dataset acceleration refreshes. These metrics help monitor data freshness and ingestion lag for accelerated datasets with a time column.</p>
<p>Reported metrics:</p>
<table><thead><tr><th>Metric Name</th><th>Description</th></tr></thead><tbody><tr><td><code>dataset_acceleration_max_timestamp_before_refresh_ms</code></td><td>Maximum value of the dataset's time column before refresh (milliseconds).</td></tr><tr><td><code>dataset_acceleration_max_timestamp_after_refresh_ms</code></td><td>Maximum value of the dataset's time column after refresh (milliseconds).</td></tr><tr><td><code>dataset_acceleration_refresh_lag_ms</code></td><td>Difference between max timestamp after and before refresh (milliseconds).</td></tr><tr><td><code>dataset_acceleration_ingestion_lag_ms</code></td><td>Lag between current wall-clock time and max timestamp after refresh (milliseconds).</td></tr></tbody></table>
<p>These metrics are emitted during each acceleration refresh and can be scraped by Prometheus for monitoring and alerting. For more details, see the <a href="https://spiceai.org/docs/features/observability/" target="_blank" rel="noopener noreferrer" class="">Observability documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="bug-fixes--improvements">Bug Fixes &amp; Improvements<a href="https://spiceai.org/blog/releases/v1.7.1#bug-fixes--improvements" class="hash-link" aria-label="Direct link to Bug Fixes &amp; Improvements" title="Direct link to Bug Fixes &amp; Improvements" translate="no">​</a></h3>
<p>This release resolves several issues and improves reliability across search, connectors, and query planning:</p>
<ul>
<li class=""><strong>Full-Text Search (FTS):</strong> Ensure FTS metadata columns can be used in projection, fix JOIN-level filters not having columns in schema, and adds support for persistent file-based FTS indexes. Default limit of 1000 results if no limit specified.</li>
<li class=""><strong>Vector Search:</strong> Default limit of 1000 results if no limit specified, and fix removing embedding column.</li>
<li class=""><strong>Databricks SQL Warehouse:</strong> Improved error handling and support for async queries.</li>
<li class=""><strong>Other:</strong> Fixes for Anthropic model regex validation, tweaked AI-model health checks, and improved error messages.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.7.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</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/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>
<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/blog/releases/v1.7.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/blog/releases/v1.7.1#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 href="https://github.com/spiceai/cookbook/blob/trunk/search/README.md" target="_blank" rel="noopener noreferrer" class="">Hybrid-Search using RRF</a> - Combine results from multiple search methods (vector and text search) using Reciprocal Rank Fusion for improved relevance ranking.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 78 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/blog/releases/v1.7.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.7.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.7.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.7.1</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.7.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/blog/releases/v1.7.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">ensure FTS metadata columns can be used in projection (#7282) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7282" target="_blank" rel="noopener noreferrer" class="">#7282</a></li>
<li class="">Fix JOIN level filters not having columns in schema (#7287) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7287" target="_blank" rel="noopener noreferrer" class="">#7287</a></li>
<li class="">Use file-based fts index (#7024) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7024" target="_blank" rel="noopener noreferrer" class="">#7024</a></li>
<li class="">Remove 'PostApplyCandidateGeneration' (#7288) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7288" target="_blank" rel="noopener noreferrer" class="">#7288</a></li>
<li class="">RRF: Rank and recency boosting (#7294) 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/7294" target="_blank" rel="noopener noreferrer" class="">#7294</a></li>
<li class="">RRF: Preserve base ranking when results differ -&gt; FULL OUTER JOIN does not produce time column (#7300) 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/7300" target="_blank" rel="noopener noreferrer" class="">#7300</a></li>
<li class="">fix removing embedding column (#7302) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7302" target="_blank" rel="noopener noreferrer" class="">#7302</a></li>
<li class="">RRF: Fix decay for disjoint result sets (#7305) 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/7305" target="_blank" rel="noopener noreferrer" class="">#7305</a></li>
<li class="">RRF: Project top scores, do not yield duplicate results (#7306) 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/7306" target="_blank" rel="noopener noreferrer" class="">#7306</a></li>
<li class="">RRF: Case sensitive column/ident handling (#7309) 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/7309" target="_blank" rel="noopener noreferrer" class="">#7309</a></li>
<li class="">For <code>vector_search</code>, use a default limit of 1000 if no limit specified (#7311) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7311" target="_blank" rel="noopener noreferrer" class="">#7311</a></li>
<li class="">Fix Anthropic model regex and add validation tests (#7319) by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7319" target="_blank" rel="noopener noreferrer" class="">#7319</a></li>
<li class="">Enhancement: Implement before/after/lag metrics for acceleration refresh (#7310) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7310" target="_blank" rel="noopener noreferrer" class="">#7310</a></li>
<li class="">Refactor chat model health check to lower tokens usage for reasoning models (#7317) by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/7317" target="_blank" rel="noopener noreferrer" class="">#7317</a></li>
<li class="">Enable chunking in <code>SearchIndex</code> (#7143) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7143" target="_blank" rel="noopener noreferrer" class="">#7143</a></li>
<li class="">Use logical plan in <code>SearchQueryProvider</code>. (#7314) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7314" target="_blank" rel="noopener noreferrer" class="">#7314</a></li>
<li class="">FTS max search results 100 -&gt; 1000 (#7331) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7331" target="_blank" rel="noopener noreferrer" class="">#7331</a></li>
<li class="">Improve Databricks SQL Warehouse Error Handling (#7332) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7332" target="_blank" rel="noopener noreferrer" class="">#7332</a></li>
<li class="">use spicepod embedding model name for 'model_name' (#7333) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7333" target="_blank" rel="noopener noreferrer" class="">#7333</a></li>
<li class="">Handle async queries for Databricks SQL Warehouse API (#7335) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7335" target="_blank" rel="noopener noreferrer" class="">#7335</a></li>
<li class="">RRF: Fix ident resolution for struct fields, autohashed join key for varying types (#7339) 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/7339" target="_blank" rel="noopener noreferrer" class="">#7339</a></li>
</ul>]]></content>
        <author>
            <name>Kevin Zimmerman</name>
            <uri>https://github.com/kczimm</uri>
        </author>
        <category label="release" term="release"/>
        <category label="search" term="search"/>
        <category label="rrf" term="rrf"/>
        <category label="vector-search" term="vector-search"/>
        <category label="full-text-search" term="full-text-search"/>
        <category label="monitoring" term="monitoring"/>
        <category label="prometheus" term="prometheus"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.7.0 (Sep 23, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.7.0</id>
        <link href="https://spiceai.org/blog/releases/v1.7.0"/>
        <updated>2025-09-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.7.0! ⚡]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.7.0! ⚡</p>
<p>Spice v1.7.0 upgrades to DataFusion v49 for improved performance and query optimization, introduces real-time full-text search indexing for CDC streams, EmbeddingGemma support for high-quality embeddings, new search table functions powering the <code>/v1/search</code> API, embedding request caching for faster and cost-efficient search and indexing, and OpenAI Responses API tool calls with streaming. This release also includes numerous bug fixes across CDC streams, vector search, the Kafka Data Connector, and error reporting.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v170">What's New in v1.7.0<a href="https://spiceai.org/blog/releases/v1.7.0#whats-new-in-v170" class="hash-link" aria-label="Direct link to What's New in v1.7.0" title="Direct link to What's New in v1.7.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="datafusion-v49-highlights">DataFusion v49 Highlights<a href="https://spiceai.org/blog/releases/v1.7.0#datafusion-v49-highlights" class="hash-link" aria-label="Direct link to DataFusion v49 Highlights" title="Direct link to DataFusion v49 Highlights" translate="no">​</a></h3>
<p><img decoding="async" loading="lazy" alt="DataFusion Clickbench Performance Graph" src="https://spiceai.org/assets/images/datafusion-performance-12fc17231080096cdff2d9e8a2b15e45.png" width="1321" height="530" class="img_ev3q">
Source: <a href="https://datafusion.apache.org/blog/2025/07/28/datafusion-49.0.0/" target="_blank" rel="noopener noreferrer" class="">DataFusion 49.0.0 Release Blog</a>.</p>
<p><strong>Performance Improvements 🚀</strong></p>
<ul>
<li class=""><strong>Equivalence System Upgrade:</strong> Faster planning for queries with many columns, enabling more sophisticated sort-based optimizations.</li>
<li class=""><strong>Dynamic Filters &amp; TopK Pushdown:</strong> Queries with <code>ORDER BY</code> and <code>LIMIT</code> now use dynamic filters and physical filter pushdown, skipping unnecessary data reads for much faster top-k queries.</li>
<li class=""><strong>Compressed Spill Files:</strong> Intermediate files written during sort/group spill to disk are now compressed, reducing disk usage and improving performance.</li>
<li class=""><strong>WITHIN GROUP for Ordered-Set Aggregates:</strong> Support for ordered-set aggregate functions (e.g., <code>percentile_disc</code>) with <code>WITHIN GROUP</code>.</li>
<li class=""><strong>REGEXP_INSTR Function:</strong> Find regex match positions in strings.</li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="spice-runtime-highlights">Spice Runtime Highlights<a href="https://spiceai.org/blog/releases/v1.7.0#spice-runtime-highlights" class="hash-link" aria-label="Direct link to Spice Runtime Highlights" title="Direct link to Spice Runtime Highlights" translate="no">​</a></h3>
<p><strong>EmbeddingGemma Support:</strong> Spice now supports <a href="https://deepmind.google/models/gemma/embeddinggemma/" target="_blank" rel="noopener noreferrer" class="">EmbeddingGemma</a>, Google's state-of-the-art embedding model for text and documents. EmbeddingGemma provides high-quality, efficient embeddings for semantic search, retrieval, and recommendation tasks. You can use EmbeddingGemma via HuggingFace in your Spicepod configuration:</p>
<p>Example <code>spicepod.yml</code> snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> huggingface</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">huggingface.co/google/embeddinggemma</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">300m</span><br></span><span class="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"> embeddinggemma</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">hf_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">HUGGINGFACE_TOKEN</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></span></code></pre></div></div>
<p>Learn more about EmbeddingGemma in the <a href="https://ai.google.dev/gemma/docs/embeddinggemma" target="_blank" rel="noopener noreferrer" class="">official documentation</a>.</p>
<p><strong><code>POST /v1/search</code> API Use Search Table Functions:</strong> The <a href="https://spiceai.org/docs/api/HTTP/post-search" target="_blank" rel="noopener noreferrer" class=""><code>/v1/search</code> API</a> now uses the new <a href="https://spiceai.org/docs/reference/sql/search#text_search" target="_blank" rel="noopener noreferrer" class=""><code>text_search</code></a> and <a href="https://spiceai.org/docs/reference/sql/search#vector_search" target="_blank" rel="noopener noreferrer" class=""><code>vector_search</code></a> Table Functions for improved performance.</p>
<p><strong>Embedding Request Caching:</strong> The runtime now supports caching embedding requests, reducing latency and cost for repeated content and search requests.</p>
<p>Example <code>spicepod.yml</code> snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">caching</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">max_size</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 128mb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">item_ttl</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> 5s</span><br></span></code></pre></div></div>
<p>See the <a href="https://spiceai.org/docs/features/caching" target="_blank" rel="noopener noreferrer" class="">Caching documentation</a> for details.</p>
<p><strong>Real-Time Indexing for Full Text Search:</strong> Full Text search indexing is now supported for connectors that enable real-time changes, such as Debezium CDC streams. Adding a full-text index on a column with <code>refresh_mode: changes</code> works as it does for full/append-mode refreshes, enabling instant search on new data.</p>
<p>Example <code>spicepod.yml</code> snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> debezium</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">cdc.public.question</span><br></span><span class="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"> questions</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> duckdb</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">primary_key</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> id</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> changes </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Use 'changes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token important" style="color:hsl(230, 8%, 24%);font-weight:bold">*kafka_params</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> title</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">full_text_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">          </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Enable full-text-search indexing</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">          </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">row_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">            </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> id</span><br></span></code></pre></div></div>
<p><strong>OpenAI Responses API Tool Calls with Streaming:</strong> The OpenAI Responses API now supports tool calls with streaming, enabling advanced model interactions such as <code>web_search</code> and <code>code_interpreter</code> with real-time response streaming. This allows you to invoke OpenAI-hosted tools and receive results as they are generated.</p>
<p>Learn more in the <a href="https://spiceai.org/docs/components/models/openai" target="_blank" rel="noopener noreferrer" class="">OpenAI Model Provider documentation</a>.</p>
<p><strong>Runtime Output Level Configuration:</strong> You can now set the <code>output_level</code> parameter in the Spicepod runtime configuration to control logging verbosity in addition to the existing <a href="https://spiceai.org/docs/cli/tracing" target="_blank" rel="noopener noreferrer" class="">CLI and environment variable support</a>. Supported values are <code>info</code>, <code>verbose</code>, and <code>very_verbose</code>. The value is applied in the following priority: CLI, environment variables, then YAML configuration.</p>
<p>Example <code>spicepod.yml</code> snippet:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">output_level</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> info </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># or verbose, very_verbose</span><br></span></code></pre></div></div>
<p>For more details on configuring output level, see the <a href="https://spiceai.org/docs/troubleshooting" target="_blank" rel="noopener noreferrer" class="">Troubleshooting documentation</a>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="bug-fixes">Bug Fixes<a href="https://spiceai.org/blog/releases/v1.7.0#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes" translate="no">​</a></h3>
<p>Several bugs and issues have been resolved in this release, including:</p>
<ul>
<li class=""><strong>CDC Streams:</strong> Fixed issues where <code>refresh_mode: changes</code> could prevent the Spice runtime from becoming Ready, and improved support for full-text indexing on CDC streams.</li>
<li class=""><strong>Vector Search:</strong> Fixed bugs where vector search HTTP pipeline could not find more than one IndexedTableProvider, and resolved errors with field mismatches in <code>vector_search</code> UDTF.</li>
<li class=""><strong>Kafka Integration:</strong> Improved Kafka schema inference with configurable sample size, improved consumer group persistence for SQLite and Postgres accelerations, and added cooperative mode support.</li>
<li class=""><strong>Perplexity Web Search:</strong> Fixed bug where Perplexity web search sometimes used incorrect query schema (limit).</li>
<li class=""><strong>Databricks:</strong> Fixed issue with unparsing embedded columns.</li>
<li class=""><strong>Error Reporting:</strong> ThrottlingException is now reported correctly instead of as InternalError.</li>
<li class=""><strong>Iceberg Data Connector:</strong> Added support for LIMIT pushdown.</li>
<li class=""><strong>Amazon S3 Vectors:</strong> Fixed ingestion issues with zero-vectors and improved handling when vector index is full.</li>
<li class=""><strong>Tracing:</strong> Fixed vector search tracing to correctly report SQL status.</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.7.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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>
<li class=""><a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</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/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</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/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
<li class=""><a href="https://github.com/ChrisTomAlxHitachi" target="_blank" rel="noopener noreferrer" class="">@ChrisTomAlxHitachi</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="new-contributors">New Contributors<a href="https://spiceai.org/blog/releases/v1.7.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="">@ChrisTomAlxHitachi made their first contribution in <a href="https://github.com/spiceai/spiceai/pull/6932" target="_blank" rel="noopener noreferrer" class="">github.com/spiceai/spiceai/pull/6932</a> 🎉</li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.7.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/blog/releases/v1.7.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="">New <a href="https://github.com/spiceai/cookbook/blob/trunk/client-sdk/spice-dotnet-sdk-sample/README.md" target="_blank" rel="noopener noreferrer" class="">Spice with Dotnet SDK</a> Recipe - The recipe shows how to query Spice using the Dotnet SDK.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 78 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/blog/releases/v1.7.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.7.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.7.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.7.0</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.7.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="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.7.0#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<ul>
<li class=""><strong>Rust</strong>: <a href="https://blog.rust-lang.org/2025/08/07/Rust-1.89.0/" target="_blank" rel="noopener noreferrer" class="">Upgraded from 1.88.0 to 1.89.0</a></li>
<li class=""><strong>DataFusion</strong>: <a href="https://github.com/apache/datafusion/releases/tag/49.0.0" target="_blank" rel="noopener noreferrer" class="">Upgraded from 48.0.1 to 49.0.0</a></li>
<li class=""><strong>text-embeddings-inference</strong>: <a href="https://github.com/huggingface/text-embeddings-inference/releases/tag/v1.8.2" target="_blank" rel="noopener noreferrer" class="">Upgraded from 1.7.3 to 1.8.2</a></li>
<li class=""><strong>twox-hash</strong>: <a href="https://github.com/shepmaster/twox-hash" target="_blank" rel="noopener noreferrer" class="">Upgraded from 1.6.3 to 2.1.0.</a></li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.7.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Fix parameterised query planning in 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/6942" target="_blank" rel="noopener noreferrer" class="">#6942</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/6944" target="_blank" rel="noopener noreferrer" class="">#6944</a></li>
<li class="">refactor: Decouple full text search candidate from UDTF by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6940" target="_blank" rel="noopener noreferrer" class="">#6940</a></li>
<li class="">fix: Re-enable search integration tests by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6930" target="_blank" rel="noopener noreferrer" class="">#6930</a></li>
<li class="">Update acknowledgements and spicepod.schema.json by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6948" target="_blank" rel="noopener noreferrer" class="">#6948</a></li>
<li class="">Add enabling the responses API by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/6949" target="_blank" rel="noopener noreferrer" class="">#6949</a></li>
<li class="">Post-release housekeeping by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6951" target="_blank" rel="noopener noreferrer" class="">#6951</a></li>
<li class="">Add missing param in release notes by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6959" target="_blank" rel="noopener noreferrer" class="">#6959</a></li>
<li class="">Create comprehensive S3vectors 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/6903" target="_blank" rel="noopener noreferrer" class="">#6903</a></li>
<li class="">Update ROADMAP after v1.6 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/6955" target="_blank" rel="noopener noreferrer" class="">#6955</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/6961" target="_blank" rel="noopener noreferrer" class="">#6961</a></li>
<li class="">Add build step for new spiced images in end game template by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6960" target="_blank" rel="noopener noreferrer" class="">#6960</a></li>
<li class="">refactor: Use text search UDTF in v1/search by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6962" target="_blank" rel="noopener noreferrer" class="">#6962</a></li>
<li class="">Bump Jimver/cuda-toolkit from 0.2.26 to 0.2.27 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/6922" target="_blank" rel="noopener noreferrer" class="">#6922</a></li>
<li class="">Bump notify from 8.0.0 to 8.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/6924" target="_blank" rel="noopener noreferrer" class="">#6924</a></li>
<li class="">Use model2vec for search integration tests for speed by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6971" target="_blank" rel="noopener noreferrer" class="">#6971</a></li>
<li class="">feat: Add initial DuckDB regexp pushdown support by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6966" target="_blank" rel="noopener noreferrer" class="">#6966</a></li>
<li class="">Bump rustyline from 16.0.0 to 17.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/6976" target="_blank" rel="noopener noreferrer" class="">#6976</a></li>
<li class="">Upgrade delta_kernel to <code>0.14</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/6977" target="_blank" rel="noopener noreferrer" class="">#6977</a></li>
<li class="">Consistent snapshots for mongodb by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6974" target="_blank" rel="noopener noreferrer" class="">#6974</a></li>
<li class="">Bump indexmap from 2.10.0 to 2.11.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/6921" target="_blank" rel="noopener noreferrer" class="">#6921</a></li>
<li class="">Fix mongo tests: ignore container_registry() when building image name by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6983" target="_blank" rel="noopener noreferrer" class="">#6983</a></li>
<li class="">Implement support for s3 tables for glue DataConnector by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6981" target="_blank" rel="noopener noreferrer" class="">#6981</a></li>
<li class="">Bump serde_json from 1.0.142 to 1.0.143 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/6925" target="_blank" rel="noopener noreferrer" class="">#6925</a></li>
<li class="">Update build_and_release macOS pipeline to skip updating cmake if installed by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6998" target="_blank" rel="noopener noreferrer" class="">#6998</a></li>
<li class="">Mark Kafka Data Connector Alpha 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/6991" target="_blank" rel="noopener noreferrer" class="">#6991</a></li>
<li class="">Add v1.6.1 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/7000" target="_blank" rel="noopener noreferrer" class="">#7000</a></li>
<li class="">Spice CLI trace: make error friendlier 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/6996" target="_blank" rel="noopener noreferrer" class="">#6996</a></li>
<li class="">Warn when runtime or management is added in spicepod 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/6953" target="_blank" rel="noopener noreferrer" class="">#6953</a></li>
<li class="">Enable <code>.datasets[].vectors.params.s3_vectors_distance_metric</code> for S3 Vectors by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6982" target="_blank" rel="noopener noreferrer" class="">#6982</a></li>
<li class="">Add s3_vectors index support for CDC and Append streams by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6986" target="_blank" rel="noopener noreferrer" class="">#6986</a></li>
<li class="">Find all vector indexes in v1/search by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7004" target="_blank" rel="noopener noreferrer" class="">#7004</a></li>
<li class="">Fix RRF; reorder by score by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7007" target="_blank" rel="noopener noreferrer" class="">#7007</a></li>
<li class="">Fix for nested 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/7017" target="_blank" rel="noopener noreferrer" class="">#7017</a></li>
<li class="">Add --sql flag to output SQL query for spice trace by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7002" target="_blank" rel="noopener noreferrer" class="">#7002</a></li>
<li class="">Make web search params engine-specific by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/7022" target="_blank" rel="noopener noreferrer" class="">#7022</a></li>
<li class="">Add more MTEB benchmark spicepods by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7026" target="_blank" rel="noopener noreferrer" class="">#7026</a></li>
<li class="">Improve error messaging in 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/6895" target="_blank" rel="noopener noreferrer" class="">#6895</a></li>
<li class="">Add retry for exporting task history records by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7049" target="_blank" rel="noopener noreferrer" class="">#7049</a></li>
<li class="">Increase DoPut write timeout for the next batch from 30 to 120 seconds by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7054" target="_blank" rel="noopener noreferrer" class="">#7054</a></li>
<li class="">Avoid redundant search embedding by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7053" target="_blank" rel="noopener noreferrer" class="">#7053</a></li>
<li class="">Truncate <code>text_embed</code> task_history trace by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7050" target="_blank" rel="noopener noreferrer" class="">#7050</a></li>
<li class="">Use the UTC offset for the <code>start_time</code> and <code>end_time</code> fields in the 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/7056" target="_blank" rel="noopener noreferrer" class="">#7056</a></li>
<li class="">Update supported versions in SECURITY.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/7060" target="_blank" rel="noopener noreferrer" class="">#7060</a></li>
<li class="">Add integration test for Kafka S3 Vectors by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6988" target="_blank" rel="noopener noreferrer" class="">#6988</a></li>
<li class="">Enable parameters to enforce the value is one of several options by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6984" target="_blank" rel="noopener noreferrer" class="">#6984</a></li>
<li class="">feat(iceberg): lakekeeper catalog - add warehouse param to spicepod by <a href="https://github.com/ChrisTomAlxHitachi" target="_blank" rel="noopener noreferrer" class="">@ChrisTomAlxHitachi</a> in <a href="https://github.com/spiceai/spiceai/pull/6932" target="_blank" rel="noopener noreferrer" class="">#6932</a></li>
<li class="">feat: Add HTTP query concurrency support to testoperator by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7025" target="_blank" rel="noopener noreferrer" class="">#7025</a></li>
<li class="">Ensure no data does not throw error in v1/search by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7033" target="_blank" rel="noopener noreferrer" class="">#7033</a></li>
<li class="">Bump github.com/spf13/cobra from 1.9.1 to 1.10.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/7013" target="_blank" rel="noopener noreferrer" class="">#7013</a></li>
<li class="">Add QA analytics for 1.6.x releases by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7082" target="_blank" rel="noopener noreferrer" class="">#7082</a></li>
<li class="">Use env variable for HF cache in model2vec by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7076" target="_blank" rel="noopener noreferrer" class="">#7076</a></li>
<li class="">chore: upgrade to Rust 1.88 by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7077" target="_blank" rel="noopener noreferrer" class="">#7077</a></li>
<li class="">Kafka/Debezium: make common errors user-friendlier by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7084" target="_blank" rel="noopener noreferrer" class="">#7084</a></li>
<li class="">Create Apache Datafusion upgrade issue template by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6800" target="_blank" rel="noopener noreferrer" class="">#6800</a></li>
<li class="">No join predicate pushdown on empty results by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7075" target="_blank" rel="noopener noreferrer" class="">#7075</a></li>
<li class="">Bump tract-onnx from 0.21.10 to 0.22.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/7071" target="_blank" rel="noopener noreferrer" class="">#7071</a></li>
<li class="">Bump mongodb from 3.2.4 to 3.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/7073" target="_blank" rel="noopener noreferrer" class="">#7073</a></li>
<li class="">Bump indicatif from 0.17.11 to 0.18.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/7070" target="_blank" rel="noopener noreferrer" class="">#7070</a></li>
<li class="">Bump actions/github-script from 7 to 8 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/7069" target="_blank" rel="noopener noreferrer" class="">#7069</a></li>
<li class="">Bump actions/setup-go 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/7068" target="_blank" rel="noopener noreferrer" class="">#7068</a></li>
<li class="">Bump actions/download-artifact from 4 to 5 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7066" target="_blank" rel="noopener noreferrer" class="">#7066</a></li>
<li class="">Bedrock: Tool use without inputs must empty Document by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7036" target="_blank" rel="noopener noreferrer" class="">#7036</a></li>
<li class="">Bump github.com/stretchr/testify from 1.10.0 to 1.11.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/7015" target="_blank" rel="noopener noreferrer" class="">#7015</a></li>
<li class="">Bump actions/setup-python 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/7067" target="_blank" rel="noopener noreferrer" class="">#7067</a></li>
<li class="">Upgrade dependabot 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/7061" target="_blank" rel="noopener noreferrer" class="">#7061</a></li>
<li class="">Bump tempfile 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/7018" target="_blank" rel="noopener noreferrer" class="">#7018</a></li>
<li class="">Only call 'list_datasets' once, after initial system/user messages by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7039" target="_blank" rel="noopener noreferrer" class="">#7039</a></li>
<li class="">Bump github.com/spf13/pflag from 1.0.7 to 1.0.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/7062" target="_blank" rel="noopener noreferrer" class="">#7062</a></li>
<li class="">Bump actions/checkout from 4 to 5 by <a href="https://github.com/app/dependabot" target="_blank" rel="noopener noreferrer" class="">@app/dependabot</a> in <a href="https://github.com/spiceai/spiceai/pull/7065" target="_blank" rel="noopener noreferrer" class="">#7065</a></li>
<li class="">Bump golang.org/x/mod from 0.27.0 to 0.28.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/7064" target="_blank" rel="noopener noreferrer" class="">#7064</a></li>
<li class="">Bump github.com/AzureAD/microsoft-authentication-library-for-go from 1.4.1 to 1.5.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/7063" target="_blank" rel="noopener noreferrer" class="">#7063</a></li>
<li class="">Add friendly message for Kafka operation timeout error, improve 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/7088" target="_blank" rel="noopener noreferrer" class="">#7088</a></li>
<li class=""><code>embed</code> UDF 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/6967" target="_blank" rel="noopener noreferrer" class="">#6967</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/7097" target="_blank" rel="noopener noreferrer" class="">#7097</a></li>
<li class="">Fix SF100 benchmark tests 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/7098" target="_blank" rel="noopener noreferrer" class="">#7098</a></li>
<li class="">chore(logging): add log when iceberg rest catalog fails with ssl cert error by <a href="https://github.com/ChrisTomAlxHitachi" target="_blank" rel="noopener noreferrer" class="">@ChrisTomAlxHitachi</a> in <a href="https://github.com/spiceai/spiceai/pull/6909" target="_blank" rel="noopener noreferrer" class="">#6909</a></li>
<li class="">Add xxhash support for search/sql 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/6978" target="_blank" rel="noopener noreferrer" class="">#6978</a></li>
<li class="">Use proper federation in <code>max_timestamp_df</code> during acceleration 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/7055" target="_blank" rel="noopener noreferrer" class="">#7055</a></li>
<li class="">Fix spiced_docker workflows for new actions/download-artifact@v5 behavior by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7108" target="_blank" rel="noopener noreferrer" class="">#7108</a></li>
<li class="">Fix spiced_docker 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/7111" target="_blank" rel="noopener noreferrer" class="">#7111</a></li>
<li class="">Add filter for zero vectors before writing to 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/7110" target="_blank" rel="noopener noreferrer" class="">#7110</a></li>
<li class="">Ensure we find vector index when it also has 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/7120" target="_blank" rel="noopener noreferrer" class="">#7120</a></li>
<li class="">Enable unified traceparent override support for HTTP API by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7122" target="_blank" rel="noopener noreferrer" class="">#7122</a></li>
<li class="">Fix <code>ORDER BY</code>: (<code>BytesProcessedExec</code> to avoid pruning ordered execs during physical optimization) 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/7105" target="_blank" rel="noopener noreferrer" class="">#7105</a></li>
<li class="">Fix spiced_docker_nightly 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/7125" target="_blank" rel="noopener noreferrer" class="">#7125</a></li>
<li class="">Add <code>output_level</code> to runtime config by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7119" target="_blank" rel="noopener noreferrer" class="">#7119</a></li>
<li class="">Add tests for xxhash hashers by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7124" target="_blank" rel="noopener noreferrer" class="">#7124</a></li>
<li class="">Add input option to update snapshots in 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/7127" target="_blank" rel="noopener noreferrer" class="">#7127</a></li>
<li class="">Fix formatting to improve merges by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7128" target="_blank" rel="noopener noreferrer" class="">#7128</a></li>
<li class="">Add tests to nulling logic by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7113" target="_blank" rel="noopener noreferrer" class="">#7113</a></li>
<li class="">Bump chrono from 0.4.41 to 0.4.42 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/7131" target="_blank" rel="noopener noreferrer" class="">#7131</a></li>
<li class="">Bump ctrlc from 3.4.7 to 3.5.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/7132" target="_blank" rel="noopener noreferrer" class="">#7132</a></li>
<li class="">Search: RRF UDTF 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/7090" target="_blank" rel="noopener noreferrer" class="">#7090</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/7141" target="_blank" rel="noopener noreferrer" class="">#7141</a></li>
<li class="">Bump packages to DF49; resolve incompatibilities by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7101" target="_blank" rel="noopener noreferrer" class="">#7101</a></li>
<li class="">fix: Don't error for chunked columns when vectors are disabled by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7150" target="_blank" rel="noopener noreferrer" class="">#7150</a></li>
<li class="">Allow bzip2-1.0.6 license in deny.toml by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7148" target="_blank" rel="noopener noreferrer" class="">#7148</a></li>
<li class="">Tune retry settings for Kafka/Debezium connectors by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7142" target="_blank" rel="noopener noreferrer" class="">#7142</a></li>
<li class="">Update TEI by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7152" target="_blank" rel="noopener noreferrer" class="">#7152</a></li>
<li class="">Use twox-hash version 2.1.2 by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7165" target="_blank" rel="noopener noreferrer" class="">#7165</a></li>
<li class="">Revert "Use proper federation in <code>max_timestamp_df</code> during acceleration refresh (#7055)" by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7156" target="_blank" rel="noopener noreferrer" class="">#7156</a></li>
<li class="">Bump octocrab from 0.44.1 to 0.45.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/7158" target="_blank" rel="noopener noreferrer" class="">#7158</a></li>
<li class="">Bump github.com/spf13/viper from 1.19.0 to 1.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/7130" target="_blank" rel="noopener noreferrer" class="">#7130</a></li>
<li class="">Bump keyring from 3.6.2 to 3.6.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/7157" target="_blank" rel="noopener noreferrer" class="">#7157</a></li>
<li class="">fix: Remove keywords from AI document search by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7052" target="_blank" rel="noopener noreferrer" class="">#7052</a></li>
<li class="">Bump tract-core from 0.21.10 to 0.22.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/7134" target="_blank" rel="noopener noreferrer" class="">#7134</a></li>
<li class="">Update TEI by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7171" target="_blank" rel="noopener noreferrer" class="">#7171</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/7172" target="_blank" rel="noopener noreferrer" class="">#7172</a></li>
<li class="">fix: Ensure vector search UDTF respects the supplied projection by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7155" target="_blank" rel="noopener noreferrer" class="">#7155</a></li>
<li class="">Bump clap from 4.5.45 to 4.5.47 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/7135" target="_blank" rel="noopener noreferrer" class="">#7135</a></li>
<li class="">Bump golang.org/x/sys from 0.35.0 to 0.36.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/7129" target="_blank" rel="noopener noreferrer" class="">#7129</a></li>
<li class="">Include 'catalog_id' in Glue catalog parameters by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7151" target="_blank" rel="noopener noreferrer" class="">#7151</a></li>
<li class="">fix: Use head ref from merge group event in pulls-with-spice concurrency group by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7175" target="_blank" rel="noopener noreferrer" class="">#7175</a></li>
<li class="">Fix lint for xxhash 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/7176" target="_blank" rel="noopener noreferrer" class="">#7176</a></li>
<li class="">Add Kafka-specific metrics for consumer lag and consumed records by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7146" target="_blank" rel="noopener noreferrer" class="">#7146</a></li>
<li class="">Kafka: persist consumer between restarts with SQLite and PG 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/7177" target="_blank" rel="noopener noreferrer" class="">#7177</a></li>
<li class="">Kafka: support specifying a target consumer group ID by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7178" target="_blank" rel="noopener noreferrer" class="">#7178</a></li>
<li class="">Fix timestamp parsing for spice trace by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7173" target="_blank" rel="noopener noreferrer" class="">#7173</a></li>
<li class="">Support full-text indexing on CDC/append 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/7180" target="_blank" rel="noopener noreferrer" class="">#7180</a></li>
<li class="">Bump iceberg-rust version to include limit push down by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7191" target="_blank" rel="noopener noreferrer" class="">#7191</a></li>
<li class="">Make full text stream connector more robust by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7193" target="_blank" rel="noopener noreferrer" class="">#7193</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/7179" target="_blank" rel="noopener noreferrer" class="">#7179</a></li>
<li class="">Initial changes for SearchIndex by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7103" target="_blank" rel="noopener noreferrer" class="">#7103</a></li>
<li class="">Robustly handle indexing FTS for CDC 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/7197" target="_blank" rel="noopener noreferrer" class="">#7197</a></li>
<li class="">Proper handling/mapping for <code>ThrottlingException</code> during embedding calls by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7170" target="_blank" rel="noopener noreferrer" class="">#7170</a></li>
<li class="">Add spicepod.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/7202" target="_blank" rel="noopener noreferrer" class="">#7202</a></li>
<li class="">Delta Lake: Support read pruning on timestamp columns using maxValues stats by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7203" target="_blank" rel="noopener noreferrer" class="">#7203</a></li>
<li class="">feat: Add initial embeddings cache by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7194" target="_blank" rel="noopener noreferrer" class="">#7194</a></li>
<li class="">Make S3vector a FixedSizeListArray by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7201" target="_blank" rel="noopener noreferrer" class="">#7201</a></li>
<li class="">Fix projection mismatch issues with RRF calling vector search / text search 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/7200" target="_blank" rel="noopener noreferrer" class="">#7200</a></li>
<li class="">feat: Add embeddings cache to all embeddings by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/7204" target="_blank" rel="noopener noreferrer" class="">#7204</a></li>
<li class="">Revert "Make S3vector a FixedSizeListArray (#7201)" by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7210" target="_blank" rel="noopener noreferrer" class="">#7210</a></li>
<li class="">Update duckdb version to make ICU statically linked by default by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7215" target="_blank" rel="noopener noreferrer" class="">#7215</a></li>
<li class="">Change DataType list nullability from true to false by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7216" target="_blank" rel="noopener noreferrer" class="">#7216</a></li>
<li class="">Use <code>Instant</code> + <code>saturating_sub</code> to handle time drift by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7212" target="_blank" rel="noopener noreferrer" class="">#7212</a></li>
<li class="">Flatten 'IndexedTableProvider' when adding full-text 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/7219" target="_blank" rel="noopener noreferrer" class="">#7219</a></li>
<li class="">Include comments in pulls by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/7224" target="_blank" rel="noopener noreferrer" class="">#7224</a></li>
<li class="">Add github_max_concurrent_connections = 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/7225" target="_blank" rel="noopener noreferrer" class="">#7225</a></li>
<li class="">RRF: Fix scoring 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/7226" target="_blank" rel="noopener noreferrer" class="">#7226</a></li>
<li class="">Update RRF search integration snapshots after scoring change 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/7227" target="_blank" rel="noopener noreferrer" class="">#7227</a></li>
<li class="">Make S3vector a FixedSizeListArray by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7230" target="_blank" rel="noopener noreferrer" class="">#7230</a></li>
<li class="">Proper federation during acceleration refresh + datafusion version bump + integration 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/7228" target="_blank" rel="noopener noreferrer" class="">#7228</a></li>
<li class="">Use DuckDBDialect for DuckDB non-federated queries by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/7232" target="_blank" rel="noopener noreferrer" class="">#7232</a></li>
<li class="">Move chunking out of <code>llms</code> and into new crate <code>chunking</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/7229" target="_blank" rel="noopener noreferrer" class="">#7229</a></li>
<li class="">Remove duplicate pg_port configuration in 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/7233" target="_blank" rel="noopener noreferrer" class="">#7233</a></li>
<li class="">Upgrade to Rust 1.89 by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/7235" target="_blank" rel="noopener noreferrer" class="">#7235</a></li>
<li class="">Catalog connection error: fix connector name from 'iceberg' to 'spice.ai' by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7240" target="_blank" rel="noopener noreferrer" class="">#7240</a></li>
<li class="">Create PutVectorsSink by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/7199" target="_blank" rel="noopener noreferrer" class="">#7199</a></li>
<li class="">Benchmark tests: fix API key reference in spicecloud 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/7239" target="_blank" rel="noopener noreferrer" class="">#7239</a></li>
<li class="">Add Dotnet SDK sample to end game template by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/7238" target="_blank" rel="noopener noreferrer" class="">#7238</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/7254" target="_blank" rel="noopener noreferrer" class="">#7254</a></li>
<li class="">Postgres: Improve Decimals read performance and add Name 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/7255" target="_blank" rel="noopener noreferrer" class="">#7255</a></li>
<li class="">Add tests for hybrid search on a vector engine by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/7220" target="_blank" rel="noopener noreferrer" class="">#7220</a></li>
</ul>]]></content>
        <author>
            <name>Sergei Grebnov</name>
            <uri>https://github.com/sgrebnov</uri>
        </author>
        <category label="release" term="release"/>
        <category label="datafusion" term="datafusion"/>
        <category label="openai" term="openai"/>
        <category label="search" term="search"/>
        <category label="embeddings" term="embeddings"/>
        <category label="embeddinggemma" term="embeddinggemma"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.6.1 (Sep 1, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.6.1</id>
        <link href="https://spiceai.org/blog/releases/v1.6.1"/>
        <updated>2025-09-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.6.1! ⚡]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.6.1! ⚡</p>
<p>Spice 1.6.1 is a patch release that provides improved Kafka type inference and JSON flattening support, alongside several bug fixes.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v161">What's New in v1.6.1<a href="https://spiceai.org/blog/releases/v1.6.1#whats-new-in-v161" class="hash-link" aria-label="Direct link to What's New in v1.6.1" title="Direct link to What's New in v1.6.1" translate="no">​</a></h2>
<p><strong>Improved Kafka Type Inference</strong>: Improve Kafka type inference by configuring the number of Kafka messages sampled during schema inference. Increasing the sample size can improve the robustness and reliability of inferred schemas, especially in cases where data contains optional fields or varying structures.</p>
<p>Example <code>spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dataset</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token 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"> kafka</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">orders_events</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> orders</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">schema_infer_max_records</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%)">100</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Default 1.</span><br></span></code></pre></div></div>
<p>For details, see the <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka Data Connector Documentation</a>.</p>
<p><strong>Improved Kafka JSON Support</strong>: Enable nested JSON Kafka messages to be represented in flattened JSON format for the dataset schema.</p>
<p>Example <code>spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dataset</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token 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"> kafka</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">orders_events</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> orders</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">flatten_json</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><span class="token comment" style="color:hsl(230, 4%, 64%)"># default false</span><br></span></code></pre></div></div>
<p>For example, the object:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"order_id"</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%)">"a1f2c3d4-1111-2222-3333-444455556666"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"customer"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"id"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">101</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"name"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"Alice"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"premium"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token boolean" style="color:hsl(35, 99%, 36%)">true</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"contact"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"email"</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%)">"alice@example.com"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"phone"</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%)">"555-1234"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"discount"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5.0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"shipped"</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 plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></span></code></pre></div></div>
<p>With <code>flatten_json: true</code> the result is:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token comment" style="color:hsl(230, 4%, 64%)">------------------------+-----------+-------------+</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> column_name            </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> data_type </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> is_nullable </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token comment" style="color:hsl(230, 4%, 64%)">------------------------+-----------+-------------+</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> order_id               </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Utf8      </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> customer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">id            </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Int64     </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> customer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">name          </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Utf8      </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> customer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">premium       </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%)">Boolean</span><span class="token plain">   </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> customer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">contact</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">email </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Utf8      </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> customer</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">contact</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">phone </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Utf8      </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> discount               </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Float64   </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> shipped                </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%)">Boolean</span><span class="token plain">   </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token comment" style="color:hsl(230, 4%, 64%)">------------------------+-----------+-------------+</span><br></span></code></pre></div></div>
<p>With <code>flatten_json: false</code> or ommitted the result is:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token comment" style="color:hsl(230, 4%, 64%)">-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> column_name </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> data_type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> is_nullable </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token comment" style="color:hsl(230, 4%, 64%)">-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> order_id    </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Utf8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> customer    </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Struct</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">Field { name: </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"> data_type: Int64</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> nullable: </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"> dict_id: </span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> dict_is_ordered: </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"> metadata: {} }</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> Field { name: </span><span class="token string" style="color:hsl(119, 34%, 47%)">"name"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> data_type: Utf8</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> nullable: </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"> dict_id: </span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> dict_is_ordered: </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"> metadata: {} }</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> Field { name: </span><span class="token string" style="color:hsl(119, 34%, 47%)">"premium"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> data_type: </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">Boolean</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> nullable: </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"> dict_id: </span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> dict_is_ordered: </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"> metadata: {} }</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> Field { name: </span><span class="token string" style="color:hsl(119, 34%, 47%)">"contact"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> data_type: Struct</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">Field { name: </span><span class="token string" style="color:hsl(119, 34%, 47%)">"email"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> data_type: Utf8</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> nullable: </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"> dict_id: </span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> dict_is_ordered: </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"> metadata: {} }</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> Field { name: </span><span class="token string" style="color:hsl(119, 34%, 47%)">"phone"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> data_type: Utf8</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> nullable: </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"> dict_id: </span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> dict_is_ordered: </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"> metadata: {} }</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"> nullable: </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"> dict_id: </span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> dict_is_ordered: </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"> metadata: {} }</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 operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> discount    </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> Float64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> shipped     </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%)">Boolean</span><span class="token plain">                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"> YES         </span><span class="token operator" style="color:hsl(221, 87%, 60%)">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token comment" style="color:hsl(230, 4%, 64%)">-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+</span><br></span></code></pre></div></div>
<p>For details, see the <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka Data Connector Documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.6.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a></li>
<li class=""><a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</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>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.6.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/blog/releases/v1.6.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 added in this release.</p>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 77 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/blog/releases/v1.6.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.6.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.6.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.6.1</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is now available in the <a href="https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i" target="_blank" rel="noopener noreferrer" class="">AWS Marketplace</a>!</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-changed">What's Changed<a href="https://spiceai.org/blog/releases/v1.6.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/blog/releases/v1.6.1#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Fix metadata field issue by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6957" target="_blank" rel="noopener noreferrer" class="">#6957</a></li>
<li class="">Update datafusion and datafusion-table-providers crates (#6985) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6985" target="_blank" rel="noopener noreferrer" class="">#6985</a></li>
<li class="">Add flatten_json param support for Kafka connector (#6976) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6976" target="_blank" rel="noopener noreferrer" class="">#6976</a></li>
<li class="">Add schema_inference_sample_count param support for Kafka connector (#6969) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6969" target="_blank" rel="noopener noreferrer" class="">#6969</a></li>
<li class="">Add integration test for Kafka connector (#6965) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6965" target="_blank" rel="noopener noreferrer" class="">#6965</a></li>
<li class="">Skip dataset health check for IcebergTableProvider 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/6995" target="_blank" rel="noopener noreferrer" class="">#6995</a></li>
</ul>]]></content>
        <author>
            <name>Jack Eadie</name>
            <uri>https://github.com/Jeadie</uri>
        </author>
        <category label="release" term="release"/>
        <category label="kafka" term="kafka"/>
        <category label="json" term="json"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.6.0 (Aug 26, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.6.0</id>
        <link href="https://spiceai.org/blog/releases/v1.6.0"/>
        <updated>2025-08-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.6.0! 🔥]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.6.0! 🔥</p>
<p>Spice 1.6.0 upgrades DataFusion to v48, reducing expressions memory footprint by ~50% for faster planning and lower memory usage, eliminating unnecessary projections in queries, optimizing string functions like <code>ascii</code> and <code>character_length</code> for up to 3x speedup, and accelerating unbounded aggregate window functions by 5.6x. The release adds Kafka and MongoDB connectors for real-time streaming and NoSQL data acceleration, supports OpenAI Responses API for advanced model interactions including OpenAI-hosted tools like <code>web_search</code> and <code>code_interpreter</code>, improves the OpenAI Embeddings Connector with usage tier configuration for higher throughput via increased concurrent requests, introduces Model2Vec embeddings for ultra-low-latency encoding, and improves the Amazon S3 Vectors engine to support multi-column primary keys.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v160">What's New in v1.6.0<a href="https://spiceai.org/blog/releases/v1.6.0#whats-new-in-v160" class="hash-link" aria-label="Direct link to What's New in v1.6.0" title="Direct link to What's New in v1.6.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="datafusion-v48-highlights">DataFusion v48 Highlights<a href="https://spiceai.org/blog/releases/v1.6.0#datafusion-v48-highlights" class="hash-link" aria-label="Direct link to DataFusion v48 Highlights" title="Direct link to DataFusion v48 Highlights" translate="no">​</a></h3>
<p>Spice.ai is built on the DataFusion query engine. The v48 release brings:</p>
<p><strong>Performance &amp; Size Improvements 🚀</strong>: Expressions memory footprint was reduced by ~50% resulting in faster planning and lower memory usage, with planning times improved by 10-20%. There are now fewer unnecessary projections in queries. The string functions, <code>ascii</code> and <code>character_length</code> were optimized for improved performance, with <code>character_length</code> achieving up to 3x speedup. Queries with unbounded aggregate window functions have improved performance by 5.6 times via avoided unnecessary computation for constant results across partitions. The <code>Expr</code> struct size was reduced from 272 to 144 bytes.</p>
<p><strong>New Features &amp; Enhancements ✨</strong>: Support was added for <code>ORDER BY ALL</code> for easy ordering of all columns in a query.</p>
<p>See the <a href="https://datafusion.apache.org/blog/2025/07/16/datafusion-48.0.0/" target="_blank" rel="noopener noreferrer" class="">Apache DataFusion 48.0.0 Blog</a> for details.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="runtime-highlights">Runtime Highlights<a href="https://spiceai.org/blog/releases/v1.6.0#runtime-highlights" class="hash-link" aria-label="Direct link to Runtime Highlights" title="Direct link to Runtime Highlights" translate="no">​</a></h3>
<p><strong>Amazon S3 Vectors Multi-Column Primary Keys:</strong> The <a href="https://spiceai.org/docs/components/vectors/s3_vectors" target="_blank" rel="noopener noreferrer" class="">Amazon S3 Vectors</a> engine now supports datasets with multi-column primary keys. This enables vector indexes for datasets where more than one column forms the primary key, such as those splitting documents into chunks for retrieval contexts. For multi-column keys, Spice serializes the keys using arrow-json format, storing them as single string keys in the vector index.</p>
<p><strong>Model2Vec Embeddings</strong>: Spice now supports <a href="https://huggingface.co/blog/Pringled/model2vec" target="_blank" rel="noopener noreferrer" class="">model2vec static embeddings</a> with a new <code>model2vec</code> embeddings provider, for sentence transformers up to 500x faster and 15x smaller, enabling scenarios requiring low latency and high-throughput encoding.</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> model2vec</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">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">8M </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># HuggingFace model</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> potion</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> model2vec</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">path/to/my/local/model </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># local model</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> local</span><br></span></code></pre></div></div>
<p>Learn more in the <a href="https://spiceai.org/docs/components/embeddings/model2vec" target="_blank" rel="noopener noreferrer" class="">Model2Dev Embeddings documentation</a>.</p>
<p><strong>Kafka Data Connector</strong>: Use <code>from: kafka:&lt;topic&gt;</code> to ingest data directly from Kafka topics for integration with existing Kafka-based event streaming infrastructure, providing real-time data acceleration and query without additional middleware.</p>
<p>Example <code>Spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><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"> kafka</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">orders_events</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> orders</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">acceleration</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">refresh_mode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> append</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">kafka_bootstrap_servers</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> server</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">9092</span><br></span></code></pre></div></div>
<p>Learn more in the <a href="https://spiceai.org/docs/components/data-connectors/kafka" target="_blank" rel="noopener noreferrer" class="">Kafka Data Connector documentation</a>.</p>
<p><strong>MongoDB Data Connector</strong>: Use <code>from: mongodb:&lt;dataset&gt;</code> to access and accelerate data stored in MongoDB, deployed on-premises or in the cloud.</p>
<p>Example <code>spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> mongodb</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">my_dataset</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_dataset</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mongodb_host</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> localhost</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mongodb_db</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_database</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mongodb_user</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my_user</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">mongodb_pass</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> password</span><br></span></code></pre></div></div>
<p>Learn more in the <a href="https://spiceai.org/docs/components/data-connectors/mongodb" target="_blank" rel="noopener noreferrer" class="">MongoDB Data Connector documentation</a>.</p>
<p><strong>OpenAI Responses API Support</strong>: The OpenAI Responses API (<code>/v1/responses</code>) is now supported, which is OpenAI's most advanced interface for generating model responses.</p>
<p>To enable the <code>/v1/responses</code> HTTP endpoint, set the <code>responses_api</code> parameter to <code>enabled</code>:</p>
<p>Example <code>spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">models</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> openai_model_using_responses_api</span><br></span><span class="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"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">gpt</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token number" style="color:hsl(35, 99%, 36%)">4.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">openai_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">OPENAI_API_KEY </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">responses_api</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Enable the /v1/responses endpoint for this model</span><br></span></code></pre></div></div>
<p>Example <code>curl</code> request:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">curl</span><span class="token plain"> http://localhost:8090/v1/responses </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-H</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"Content-Type: application/json"</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-d</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    "model": "gpt-4.1",</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">    "input": "Tell me a three sentence bedtime story about Spice AI."</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)">  }'</span><br></span></code></pre></div></div>
<p>To use responses in <code>spice chat</code>, use the <code>--responses</code> flag.</p>
<p>Example:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice chat </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">--responses</span><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Use the `/v1/responses` endpoint for all completions instead of `/v1/chat/completions`</span><br></span></code></pre></div></div>
<p>Use OpenAI-hosted <a href="https://platform.openai.com/docs/api-reference/responses/create#responses_create-tools" target="_blank" rel="noopener noreferrer" class="">tools</a> supported by Open AI's Responses API by specifying the <code>openai_responses_tools</code> parameter:</p>
<p>Example <code>spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">models</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> test</span><br></span><span class="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"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">gpt</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token number" style="color:hsl(35, 99%, 36%)">4.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">openai_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">SPICE_OPENAI_API_KEY </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">tools</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> sql</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> list_datasets</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">responses_api</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">openai_responses_tools</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> web_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> code_interpreter </span><span class="token comment" style="color:hsl(230, 4%, 64%)">#  'code_interpreter' or 'web_search'</span><br></span></code></pre></div></div>
<p>These OpenAI-specific tools are only available from the <code>/v1/responses</code> endpoint. Any other tools specified via the <code>tools</code> parameter are available from both the <code>/v1/chat/completions</code> and <code>/v1/responses</code> endpoints.</p>
<p>Learn more in the <a href="https://spiceai.org/docs/components/models/openai" target="_blank" rel="noopener noreferrer" class="">OpenAI Model Provider documentation</a>.</p>
<p><strong>OpenAI Embeddings &amp; Models Connectors Usage Tier:</strong> The OpenAI Embeddings and Models Connectors now supports specifying account usage tier for embeddings and model requests, improving the performance of generating text embeddings or calling models during dataset load and search by increasing concurrent requests.</p>
<p>Example <code>spicepod.yml</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> openai</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">text</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embedding</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">small</span><br></span><span class="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"> openai_embed</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">openai_usage_tier</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> tier1</span><br></span></code></pre></div></div>
<p>By setting the usage tier to the matching usage tier for your OpenAI account, the Embeddings and Models Connector will increase the maximum number of concurrent requests to match the specified tier.</p>
<p>Learn more in the <a href="https://spiceai.org/docs/components/models/openai" target="_blank" rel="noopener noreferrer" class="">OpenAI Model Provider documentation</a>.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.6.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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>
<li class=""><a href="https://github.com/Sevenannn" target="_blank" rel="noopener noreferrer" class="">@Sevenannn</a></li>
<li class=""><a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</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/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</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/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</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/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a></li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="new-contributors">New Contributors<a href="https://spiceai.org/blog/releases/v1.6.0#new-contributors" class="hash-link" aria-label="Direct link to New Contributors" title="Direct link to New Contributors" translate="no">​</a></h3>
<ul>
<li class="">@krinart made their first contribution in <a href="https://github.com/spiceai/spiceai/pull/6573" target="_blank" rel="noopener noreferrer" class="">github.com/spiceai/spiceai/pull/6573</a></li>
</ul>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="breaking-changes">Breaking Changes<a href="https://spiceai.org/blog/releases/v1.6.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/blog/releases/v1.6.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 href="https://github.com/spiceai/cookbook/tree/trunk/openai-responses-api/README.md" target="_blank" rel="noopener noreferrer" class="">OpenAI Responses API</a> - Use OpenAI's Responses API with Spice</li>
<li class="">Added <a href="https://github.com/spiceai/cookbook/tree/trunk/kafka/README.md" target="_blank" rel="noopener noreferrer" class="">Live Orders Analytics with Apache Kafka Data Connector</a> - Combine real-time data streaming from Kafka with other datasets</li>
<li class="">Added <a href="https://github.com/spiceai/cookbook/tree/trunk/mongodb/connector/README.md" target="_blank" rel="noopener noreferrer" class="">MongoDB Data Connector</a> - Use MongoDB as a data source with Spice</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 77 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/blog/releases/v1.6.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.6.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.6.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.6.0</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is also now 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/blog/releases/v1.6.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="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.6.0#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<ul>
<li class=""><strong>DataFusion</strong>: <a href="https://github.com/apache/datafusion/releases/tag/48.0.1" target="_blank" rel="noopener noreferrer" class="">Upgraded to v48</a></li>
<li class=""><strong>Rust</strong>: <a href="https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/" target="_blank" rel="noopener noreferrer" class="">Upgraded from 1.86.0 to 1.87.0</a></li>
</ul>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.6.0#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">Support Streaming with Tool Calls (#6941) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6941" target="_blank" rel="noopener noreferrer" class="">#6941</a></li>
<li class="">Fix parameterized query planning in DataFusion (#6942) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6942" target="_blank" rel="noopener noreferrer" class="">#6942</a></li>
<li class="">Update the UnableToLoadCredentials error with a pointer to docs (#6937) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6937" target="_blank" rel="noopener noreferrer" class="">#6937</a></li>
<li class="">Fix spicecloud benchmark (#6935) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6935" target="_blank" rel="noopener noreferrer" class="">#6935</a></li>
<li class="">[Debezium] Support for VariableScaleDecimal (#6934) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6934" target="_blank" rel="noopener noreferrer" class="">#6934</a></li>
<li class="">Update to DF 48 (#6665) by <a href="https://github.com/mach-kernel" target="_blank" rel="noopener noreferrer" class="">@mach-kernel</a> and <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6665" target="_blank" rel="noopener noreferrer" class="">#6665</a></li>
<li class="">Mark append-stream and CDC datasets as ready after first message (#6914) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6914" target="_blank" rel="noopener noreferrer" class="">#6914</a></li>
<li class="">Model2Vec embedding model support (#6846) 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/6846" target="_blank" rel="noopener noreferrer" class="">#6846</a></li>
<li class="">Update snapshot for S3 vector search test (#6920) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6920" target="_blank" rel="noopener noreferrer" class="">#6920</a></li>
<li class="">remove [] from queryset in spicepod path for CI (#6919) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6919" target="_blank" rel="noopener noreferrer" class="">#6919</a></li>
<li class="">Remove verbose tracing (#6915) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6915" target="_blank" rel="noopener noreferrer" class="">#6915</a></li>
<li class="">Refactor how models supporting the Responses API are loaded (#6912) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6912" target="_blank" rel="noopener noreferrer" class="">#6912</a></li>
<li class="">Write tests for truncate formatting in <code>arrow_tools</code> and fix bug. (#6900) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6900" target="_blank" rel="noopener noreferrer" class="">#6900</a></li>
<li class="">Support using the Responses API from <code>spice chat</code> (#6894) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6894" target="_blank" rel="noopener noreferrer" class="">#6894</a></li>
<li class="">Include GPT-5 into Text-To-SQL and Financebench benchmarks (#6907) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6907" target="_blank" rel="noopener noreferrer" class="">#6907</a></li>
<li class="">Better error message when credentials aren't loaded for S3 Vectors (#6910) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6910" target="_blank" rel="noopener noreferrer" class="">#6910</a></li>
<li class="">Add tracing and system prompt support for the Responses API (#6893) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6893" target="_blank" rel="noopener noreferrer" class="">#6893</a></li>
<li class="">Constraint violation check is improved to control behavior when violations occur within a batch (#6897) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6897" target="_blank" rel="noopener noreferrer" class="">#6897</a></li>
<li class="">fix: Multi-column text search with v1/search (#6905) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6905" target="_blank" rel="noopener noreferrer" class="">#6905</a></li>
<li class="">fix: Correctly project text search primary keys to underlying projection (#6904) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6904" target="_blank" rel="noopener noreferrer" class="">#6904</a></li>
<li class="">fix: Update benchmark snapshots (#6901) 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/6901" target="_blank" rel="noopener noreferrer" class="">#6901</a></li>
<li class="">In S3vector, do not pushdown on non-filterable columns (#6884) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6884" target="_blank" rel="noopener noreferrer" class="">#6884</a></li>
<li class="">Run E2E Test CI macOS build on bigger runners (#6896) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6896" target="_blank" rel="noopener noreferrer" class="">#6896</a></li>
<li class="">Enable configuration of the Responses API for the Azure model provider (#6891) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6891" target="_blank" rel="noopener noreferrer" class="">#6891</a></li>
<li class="">fix: Update benchmark snapshots (#6888) 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/6888" target="_blank" rel="noopener noreferrer" class="">#6888</a></li>
<li class="">Update OpenAPI specification for <code>/v1/responses</code> (#6889) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6889" target="_blank" rel="noopener noreferrer" class="">#6889</a></li>
<li class="">Add test to ensure tools are injected correctly in the Responses API (#6886) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6886" target="_blank" rel="noopener noreferrer" class="">#6886</a></li>
<li class="">Enable embeddings for append streams (#6878) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6878" target="_blank" rel="noopener noreferrer" class="">#6878</a></li>
<li class="">Show correct limit for EXPLAIN plans in <code>S3VectorsQueryExec</code> (#6852) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6852" target="_blank" rel="noopener noreferrer" class="">#6852</a></li>
<li class="">Responses API support for Azure Open AI (#6879) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6879" target="_blank" rel="noopener noreferrer" class="">#6879</a></li>
<li class="">fix: Update search test case structure (#6865) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6865" target="_blank" rel="noopener noreferrer" class="">#6865</a></li>
<li class="">Fix mongodb benchmark (#6883) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6883" target="_blank" rel="noopener noreferrer" class="">#6883</a></li>
<li class="">Support multiple column primary keys for S3 vectors. (#6775) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6775" target="_blank" rel="noopener noreferrer" class="">#6775</a></li>
<li class="">Kafka Data Connector: persist consumer between restarts (#6870) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6870" target="_blank" rel="noopener noreferrer" class="">#6870</a></li>
<li class="">Fix newlines in errors added in recent PRs (#6877) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6877" target="_blank" rel="noopener noreferrer" class="">#6877</a></li>
<li class="">Add override parameter to force support for the Responses API (#6871) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6871" target="_blank" rel="noopener noreferrer" class="">#6871</a></li>
<li class="">Don't use metadata columns in <code>VectorScanTableProvider</code> (#6854) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6854" target="_blank" rel="noopener noreferrer" class="">#6854</a></li>
<li class="">Add non-streaming tool call support (hosted and Spice tools) via the Responses API (#6869) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6869" target="_blank" rel="noopener noreferrer" class="">#6869</a></li>
<li class="">Update error guideline to remove newlines + remove newlines from error messages. (#6866) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6866" target="_blank" rel="noopener noreferrer" class="">#6866</a></li>
<li class="">Remove void acceleration engine + optional table behaviors (#6868) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6868" target="_blank" rel="noopener noreferrer" class="">#6868</a></li>
<li class="">Kafka Data Connector basic support (#6856) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6856" target="_blank" rel="noopener noreferrer" class="">#6856</a></li>
<li class="">Federated+Accelerated TPCH Benchmarks for MongoDB (#6788) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6788" target="_blank" rel="noopener noreferrer" class="">#6788</a></li>
<li class="">Pass embeddings calculated in <code>compute_index</code> to the acceleration (#6792) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6792" target="_blank" rel="noopener noreferrer" class="">#6792</a></li>
<li class="">Add non-streaming and streaming support for OpenAI Responses API endpoint (#6830) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6830" target="_blank" rel="noopener noreferrer" class="">#6830</a></li>
<li class="">Use latest version of OpenAI crate to resolve issues with Service Tier deserialization (#6853) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6853" target="_blank" rel="noopener noreferrer" class="">#6853</a></li>
<li class="">Update openapi.json (#6799) 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/6799" target="_blank" rel="noopener noreferrer" class="">#6799</a></li>
<li class="">Improve management message (#6850) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/6850" target="_blank" rel="noopener noreferrer" class="">#6850</a></li>
<li class="">fix: Include FTS search column if it is the PK (#6836) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6836" target="_blank" rel="noopener noreferrer" class="">#6836</a></li>
<li class="">Refactor Health Checks (#6848) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6848" target="_blank" rel="noopener noreferrer" class="">#6848</a></li>
<li class="">Introduce a <code>Responses</code> trait and LLM registry for model providers that support the OpenAI Responses API (#6798) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6798" target="_blank" rel="noopener noreferrer" class="">#6798</a></li>
<li class="">fix: Update datafusion-table-providers to include constraints (#6837) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6837" target="_blank" rel="noopener noreferrer" class="">#6837</a></li>
<li class="">Bump postcard from 1.1.2 to 1.1.3 (#6841) 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/6841" target="_blank" rel="noopener noreferrer" class="">#6841</a></li>
<li class="">Bump governor from 0.10.0 to 0.10.1 (#6835) 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/6835" target="_blank" rel="noopener noreferrer" class="">#6835</a></li>
<li class="">Bump ctor from 0.2.9 to 0.5.0 (#6827) 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/6827" target="_blank" rel="noopener noreferrer" class="">#6827</a></li>
<li class="">Bump azure_core from 0.26.0 to 0.27.0 (#6826) 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/6826" target="_blank" rel="noopener noreferrer" class="">#6826</a></li>
<li class="">Bump rstest from 0.25.0 to 0.26.1 (#6825) 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/6825" target="_blank" rel="noopener noreferrer" class="">#6825</a></li>
<li class="">Use latest commit in our fork of async-openai (#6829) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6829" target="_blank" rel="noopener noreferrer" class="">#6829</a></li>
<li class="">Bump rustls from 0.23.27 to 0.23.31 (#6824) 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/6824" target="_blank" rel="noopener noreferrer" class="">#6824</a></li>
<li class="">Bump async-trait from 0.1.88 to 0.1.89 (#6823) 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/6823" target="_blank" rel="noopener noreferrer" class="">#6823</a></li>
<li class="">Bump hyper from 1.6.0 to 1.7.0 (#6814) 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/6814" target="_blank" rel="noopener noreferrer" class="">#6814</a></li>
<li class="">Bump serde_json from 1.0.140 to 1.0.142 (#6812) 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/6812" target="_blank" rel="noopener noreferrer" class="">#6812</a></li>
<li class="">Add s3 vector test retrieving vectors (#6786) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6786" target="_blank" rel="noopener noreferrer" class="">#6786</a></li>
<li class="">fix: Allow v1/search with only FTS (#6811) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6811" target="_blank" rel="noopener noreferrer" class="">#6811</a></li>
<li class="">Bump tantivy from 0.24.1 to 0.24.2 (#6806) 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/6806" target="_blank" rel="noopener noreferrer" class="">#6806</a></li>
<li class="">Bump tokio-util from 0.7.15 to 0.7.16 (#6810) 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/6810" target="_blank" rel="noopener noreferrer" class="">#6810</a></li>
<li class="">fix: Improve FTS index primary key handling (#6809) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6809" target="_blank" rel="noopener noreferrer" class="">#6809</a></li>
<li class="">Bump logos from 0.15.0 to 0.15.1 (#6808) 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/6808" target="_blank" rel="noopener noreferrer" class="">#6808</a></li>
<li class="">Bump hf-hub from 0.4.2 to 0.4.3 (#6807) 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/6807" target="_blank" rel="noopener noreferrer" class="">#6807</a></li>
<li class="">Bump odbc-api from 13.0.1 to 13.1.0 (#6803) 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/6803" target="_blank" rel="noopener noreferrer" class="">#6803</a></li>
<li class="">fix: Spice search CLI with FTS supports string or slice unmarshalling (#6805) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6805" target="_blank" rel="noopener noreferrer" class="">#6805</a></li>
<li class="">Bump uuid from 1.17.0 to 1.18.0 (#6797) 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/6797" target="_blank" rel="noopener noreferrer" class="">#6797</a></li>
<li class="">Bump reqwest from 0.12.22 to 0.12.23 (#6796) 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/6796" target="_blank" rel="noopener noreferrer" class="">#6796</a></li>
<li class="">Bump anyhow from 1.0.98 to 1.0.99 (#6795) 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/6795" target="_blank" rel="noopener noreferrer" class="">#6795</a></li>
<li class="">Bump clap from 4.5.41 to 4.5.45 (#6794) 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/6794" target="_blank" rel="noopener noreferrer" class="">#6794</a></li>
<li class="">Respect default MAX_DECODING_MESSAGE_SIZE (100MB) in Flight API (#6802) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6802" target="_blank" rel="noopener noreferrer" class="">#6802</a></li>
<li class="">Fix compilation errors caused by upgrading <code>async-openai</code> (#6793) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6793" target="_blank" rel="noopener noreferrer" class="">#6793</a></li>
<li class="">Remove outdated vector search benchmark (replaced with testoperator) (#6791) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6791" target="_blank" rel="noopener noreferrer" class="">#6791</a></li>
<li class="">Handle errors in vector ingestion pipeline (#6782) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6782" target="_blank" rel="noopener noreferrer" class="">#6782</a></li>
<li class="">fix: Explicitly error when chunking is defined for vector engines (#6787) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6787" target="_blank" rel="noopener noreferrer" class="">#6787</a></li>
<li class="">Make <code>VectorScanTableProvider</code> and <code>VectorQueryTableProvider</code> support multi-column primary keys (#6757) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6757" target="_blank" rel="noopener noreferrer" class="">#6757</a></li>
<li class="">Use <code>megascience/megascience</code> Q+A dataset for text search testing. (#6702) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6702" target="_blank" rel="noopener noreferrer" class="">#6702</a></li>
<li class="">Flight REPL autocomplete (#6589) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6589" target="_blank" rel="noopener noreferrer" class="">#6589</a></li>
<li class="">use ref: <code>github.event.pull_request.head.sha</code> in integration_models.yml (#6780) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6780" target="_blank" rel="noopener noreferrer" class="">#6780</a></li>
<li class="">fix: Move search telemetry calls in UDTF to scan (#6778) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6778" target="_blank" rel="noopener noreferrer" class="">#6778</a></li>
<li class="">Fix Hugging Face models and embeddings loading in Docker (#6777) by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/6777" target="_blank" rel="noopener noreferrer" class="">#6777</a></li>
<li class="">feat: Migrate bedrock rate limiter (#6773) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6773" target="_blank" rel="noopener noreferrer" class="">#6773</a></li>
<li class="">Run the PR checks on the DEV runners (#6769) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6769" target="_blank" rel="noopener noreferrer" class="">#6769</a></li>
<li class="">feat: add OpenAI models rate controller (#6767) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6767" target="_blank" rel="noopener noreferrer" class="">#6767</a></li>
<li class="">Implement MongoDB data connector (#6594) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">@krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6594" target="_blank" rel="noopener noreferrer" class="">#6594</a></li>
<li class="">fix: Use head ref for concurrency group (#6770) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6770" target="_blank" rel="noopener noreferrer" class="">#6770</a></li>
<li class="">fix: Run enforce pulls with spice on pull_request_target (#6768) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6768" target="_blank" rel="noopener noreferrer" class="">#6768</a></li>
<li class="">feat: Add OpenAI Embeddings Rate Controller (#6764) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6764" target="_blank" rel="noopener noreferrer" class="">#6764</a></li>
<li class="">Move AWS SDK credential bridge integration test to the existing AWS SDK integration test run (#6766) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6766" target="_blank" rel="noopener noreferrer" class="">#6766</a></li>
<li class="">Use Spice specific errors instead of OpenAIError in embedding module (#6748) by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6748" target="_blank" rel="noopener noreferrer" class="">#6748</a></li>
<li class="">Use context in Glue Catalog Provider (#6763) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6763" target="_blank" rel="noopener noreferrer" class="">#6763</a></li>
<li class="">pin cargo-deny to previous version (#6762) by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6762" target="_blank" rel="noopener noreferrer" class="">#6762</a></li>
<li class="">Bump actions/download-artifact from 4 to 5 (#6720) 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/6720" target="_blank" rel="noopener noreferrer" class="">#6720</a></li>
<li class="">Upgrade dependabot dependencies (#6754) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6754" target="_blank" rel="noopener noreferrer" class="">#6754</a></li>
<li class="">Set E2E Test CI models build to 90 minute timeout (#6756) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6756" target="_blank" rel="noopener noreferrer" class="">#6756</a></li>
<li class="">chore: upgrade to Rust 1.87.0 (#6614) by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6614" target="_blank" rel="noopener noreferrer" class="">#6614</a></li>
<li class="">feat: Add initial runtime-rate-limiter crate (#6753) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6753" target="_blank" rel="noopener noreferrer" class="">#6753</a></li>
<li class="">feat: Add more embedding traces, add MiniLM MTEB spicepod (#6742) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6742" target="_blank" rel="noopener noreferrer" class="">#6742</a></li>
<li class="">Update QA analytics for release (#6740) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6740" target="_blank" rel="noopener noreferrer" class="">#6740</a></li>
<li class="">Always use 'returnData: true' for s3 vector query index (#6741) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6741" target="_blank" rel="noopener noreferrer" class="">#6741</a></li>
<li class="">feat: Add Embedding and Search anonymous telemetry (#6737) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6737" target="_blank" rel="noopener noreferrer" class="">#6737</a></li>
<li class="">Add 1.5.2 to SECURITY.md (#6739) by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/6739" target="_blank" rel="noopener noreferrer" class="">#6739</a></li>
<li class="">Combine the Iceberg and Object Store AWS SDK bridges into one crate (#6718) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6718" target="_blank" rel="noopener noreferrer" class="">#6718</a></li>
<li class="">Updates to v1.5.2 release notes (#6736) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/6736" target="_blank" rel="noopener noreferrer" class="">#6736</a></li>
<li class="">Update end game template - move glue catalog to catalogs section (#6732) by <a href="https://github.com/ewgenius" target="_blank" rel="noopener noreferrer" class="">@ewgenius</a> in <a href="https://github.com/spiceai/spiceai/pull/6732" target="_blank" rel="noopener noreferrer" class="">#6732</a></li>
<li class="">Update v1.5.2.md (#6735) by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6735" target="_blank" rel="noopener noreferrer" class="">#6735</a></li>
<li class="">Add note about S3 Vectors workaround (#6734) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6734" target="_blank" rel="noopener noreferrer" class="">#6734</a></li>
<li class="">feat: Avoid joining for VectorScanTableProvider if the index is sufficient (#6714) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6714" target="_blank" rel="noopener noreferrer" class="">#6714</a></li>
<li class="">update changelog (#6729) by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6729" target="_blank" rel="noopener noreferrer" class="">#6729</a></li>
<li class="">remove unneeded autogenerated s3 vector code (#6715) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6715" target="_blank" rel="noopener noreferrer" class="">#6715</a></li>
<li class="">fix: Set S3 vectors default limit to 30, add more tracing (#6712) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6712" target="_blank" rel="noopener noreferrer" class="">#6712</a></li>
<li class="">docs: Add Hadoop cookbook to endgame template (#6708) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6708" target="_blank" rel="noopener noreferrer" class="">#6708</a></li>
<li class="">Fix testoperator append mode compilation error (#6706) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6706" target="_blank" rel="noopener noreferrer" class="">#6706</a></li>
<li class="">test: Add VectorScanTableProvider snapshot tests (#6701) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6701" target="_blank" rel="noopener noreferrer" class="">#6701</a></li>
<li class="">feat: Add Hadoop catalog-mode benchmark (#6684) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6684" target="_blank" rel="noopener noreferrer" class="">#6684</a></li>
<li class="">Move shared AWS crates used in bridges to workspace (#6705) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6705" target="_blank" rel="noopener noreferrer" class="">#6705</a></li>
<li class="">Use installation id to group connections (#6703) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6703" target="_blank" rel="noopener noreferrer" class="">#6703</a></li>
<li class="">Add Guardrails for AWS bedrock models (#6692) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6692" target="_blank" rel="noopener noreferrer" class="">#6692</a></li>
<li class="">Update bedrock keys for CI. (#6693) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6693" target="_blank" rel="noopener noreferrer" class="">#6693</a></li>
<li class="">Update acknowledgements (#6690) 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/6690" target="_blank" rel="noopener noreferrer" class="">#6690</a></li>
<li class="">ROADMAP updates Aug 1, 2025 (#6667) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/6667" target="_blank" rel="noopener noreferrer" class="">#6667</a></li>
<li class="">Add retry logic for OpenAI embeddings creation (#6656) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6656" target="_blank" rel="noopener noreferrer" class="">#6656</a></li>
<li class="">Make models E2E chat test more robust (#6657) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6657" target="_blank" rel="noopener noreferrer" class="">#6657</a></li>
<li class="">Update Search GH Workflow to use Test Operator (#6650) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6650" target="_blank" rel="noopener noreferrer" class="">#6650</a></li>
<li class="">Score and P95 latency calculation for MTEB Quora-based vector search tests in Test Operator (#6640) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6640" target="_blank" rel="noopener noreferrer" class="">#6640</a></li>
<li class="">Fix multiple query error being classified as an internal error (#6635) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6635" target="_blank" rel="noopener noreferrer" class="">#6635</a></li>
<li class="">Add Support for S3 Table Buckets (#6573) by <a href="https://github.com/krinart" target="_blank" rel="noopener noreferrer" class="">krinart</a> in <a href="https://github.com/spiceai/spiceai/pull/6573" target="_blank" rel="noopener noreferrer" class="">#6573</a></li>
<li class="">set MISTRALRS_METAL_PRECOMPILE=0 for metal (#6652) by <a href="https://github.com/kczimm" target="_blank" rel="noopener noreferrer" class="">@kczimm</a> in <a href="https://github.com/spiceai/spiceai/pull/6652" target="_blank" rel="noopener noreferrer" class="">#6652</a></li>
<li class="">Vector search to push down udtf limit argument into logical sort plan (#6636) 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/6636" target="_blank" rel="noopener noreferrer" class="">#6636</a></li>
<li class="">docs: Update qa_analytics.csv (#6643) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6643" target="_blank" rel="noopener noreferrer" class="">#6643</a></li>
<li class="">Update SECURITY.md (#6642) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6642" target="_blank" rel="noopener noreferrer" class="">#6642</a></li>
<li class="">docs: Update qa_analytics.csv (#6641) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6641" target="_blank" rel="noopener noreferrer" class="">#6641</a></li>
<li class="">Separate token usage (#6619) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6619" target="_blank" rel="noopener noreferrer" class="">#6619</a></li>
<li class="">Fix typo in release notes (#6634) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6634" target="_blank" rel="noopener noreferrer" class="">#6634</a></li>
<li class="">Add environment variable for org token (#6633) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6633" target="_blank" rel="noopener noreferrer" class="">#6633</a></li>
<li class="">CDC: Compute embeddings on ingest (#6612) 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/6612" target="_blank" rel="noopener noreferrer" class="">#6612</a></li>
<li class="">Add view name to view creation errors (#6611) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/6611" target="_blank" rel="noopener noreferrer" class="">#6611</a></li>
<li class="">Add core logic for running MTEB Quora-based vector search tests in Test Operator (#6607) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6607" target="_blank" rel="noopener noreferrer" class="">#6607</a></li>
<li class="">Revert "Update generate-openapi.yml (#6584)" (#6620) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6620" target="_blank" rel="noopener noreferrer" class="">#6620</a></li>
<li class="">Non-accelerated views should report as ready only after all dependent datasets are ready (#6617) by <a href="https://github.com/sgrebnov" target="_blank" rel="noopener noreferrer" class="">@sgrebnov</a> in <a href="https://github.com/spiceai/spiceai/pull/6617" target="_blank" rel="noopener noreferrer" class="">#6617</a></li>
</ul>]]></content>
        <author>
            <name>Sergei Grebnov</name>
            <uri>https://github.com/sgrebnov</uri>
        </author>
        <category label="release" term="release"/>
        <category label="amazon s3 vectors" term="amazon s3 vectors"/>
        <category label="data-connector" term="data-connector"/>
        <category label="aws" term="aws"/>
        <category label="kafka" term="kafka"/>
        <category label="mongodb" term="mongodb"/>
        <category label="openai" term="openai"/>
        <category label="model2vec" term="model2vec"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Spice v1.5.2 (Aug 11, 2025)]]></title>
        <id>https://spiceai.org/blog/releases/v1.5.2</id>
        <link href="https://spiceai.org/blog/releases/v1.5.2"/>
        <updated>2025-08-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Announcing the release of Spice v1.5.2! 🛠️]]></summary>
        <content type="html"><![CDATA[<p>Announcing the release of Spice v1.5.2! 🛠️</p>
<p>Spice v1.5.2 introduces a new Amazon Bedrock Models Provider for converse API (Nova) compatible models, AWS Redshift support using the Postgres data connector, and Hadoop Catalog Support for Iceberg tables along with several bug fixes and improvements.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="whats-new-in-v152">What's New in v1.5.2<a href="https://spiceai.org/blog/releases/v1.5.2#whats-new-in-v152" class="hash-link" aria-label="Direct link to What's New in v1.5.2" title="Direct link to What's New in v1.5.2" translate="no">​</a></h2>
<p><strong>Amazon Bedrock Models Provider</strong>: Adds a new Amazon Bedrock LLM Provider. Models compatible with the <a href="https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html" target="_blank" rel="noopener noreferrer" class="">Converse API</a> (Nova) are supported.</p>
<p>Amazon Bedrock provides access to a range of foundation models for generative AI. Spice supports using Bedrock-hosted models by specifying the <code>bedrock</code> prefix in the <code>from</code> field and configuring the required parameters.</p>
<p><strong>Supported Model IDs:</strong></p>
<ul>
<li class=""><code>amazon.nova-lite-v1:0</code></li>
<li class=""><code>amazon.nova-micro-v1:0</code></li>
<li class=""><code>amazon.nova-premier-v1:0</code></li>
<li class=""><code>amazon.nova-pro-v1:0</code></li>
</ul>
<p>Refer to the <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrock documentation</a> for details on available models and cross-region inference profiles.</p>
<p>Example Spicepod.yaml:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">models</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">us.amazon.nova</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">lite</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">v1</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> novash</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">aws_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><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">aws_access_key_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">AWS_ACCESS_KEY_ID </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">aws_secret_access_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">AWS_SECRET_ACCESS_KEY </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">bedrock_guardrail_identifier</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> arn</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">aws</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">bedrock</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">abcdefg012927</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">0123456789876</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">guardrail/hello</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">bedrock_guardrail_version</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> DRAFT</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">bedrock_trace</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> enabled</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">bedrock_temperature</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%)">42</span><br></span></code></pre></div></div>
<p>For more information, see the <a href="https://spiceai.org/docs/components/models/bedrock" target="_blank" rel="noopener noreferrer" class="">Amazon Bedrock Documentation</a>.</p>
<p><strong>AWS Redshift Support for Postgres Data Connector</strong>: Spice now supports connecting to Amazon Redshift using the PostgreSQL data connector. Redshift is a columnar OLAP database compatible with PostgreSQL, allowing you to use the same connector and configuration parameters.</p>
<p>To connect to Redshift, use the format <code>postgres:schema.table</code> in your Spicepod and set the connection parameters to match your Redshift cluster settings.</p>
<p>Example Spicepod.yaml:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)"># Example datasets for Redshift TPCH tables</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> postgres</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">public.customer</span><br></span><span class="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"> customer</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pg_host</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> $</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_HOST</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pg_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%)">5439</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pg_sslmode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> prefer</span><br></span><span class="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"> dev</span><br></span><span class="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"> $</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_USER</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">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></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> postgres</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">public.lineitem</span><br></span><span class="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"> lineitem</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pg_host</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> $</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_HOST</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pg_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%)">5439</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">pg_sslmode</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> prefer</span><br></span><span class="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"> dev</span><br></span><span class="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"> $</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_USER</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">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><br></span></code></pre></div></div>
<p>Redshift types are mapped to PostgreSQL types. See the <a href="https://spiceai.org/docs/components/data-connectors/postgres" target="_blank" rel="noopener noreferrer" class="">PostgreSQL connector documentation</a> for details on supported types and configuration.</p>
<p><strong>Hadoop Catalog Support for Iceberg</strong>: The Iceberg Data and Catalog connectors now support connecting to Hadoop catalogs on filesystem (<code>file://</code>) or S3 object storage (<code>s3://</code>, <code>s3a://</code>). This enables connecting to Iceberg catalogs without a separate catalog provider service.</p>
<p>Example Spicepod.yaml:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">catalogs</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">///tmp/hadoop_warehouse/</span><br></span><span class="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"> local_hadoop</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg</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/hadoop_warehouse/</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3_hadoop</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Example datasets</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">file</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">///data/hadoop_warehouse/test/my_table_1</span><br></span><span class="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"> local_hadoop</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> iceberg</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/hadoop_warehouse/test/my_table_2</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3_hadoop</span><br></span></code></pre></div></div>
<p>For more details, see the <a href="https://spiceai.org/docs/components/data-connectors/iceberg" target="_blank" rel="noopener noreferrer" class="">Iceberg Data Connector documentation</a> and the <a href="https://spiceai.org/docs/components/catalog-connectors/iceberg" target="_blank" rel="noopener noreferrer" class="">Iceberg Catalog Connector documentation</a>.</p>
<p><strong>Parquet Reader: Optional Parquet Page Index</strong>: Fixed an issue where the Parquet reader, using <code>arrow-rs</code> and DataFusion, errored on files missing page indexes, despite the Parquet spec allowing optional indexes. The Spice team contributed optional page index support to <code>arrow-rs</code> (<a href="https://github.com/spiceai/arrow-rs/pull/6" target="_blank" rel="noopener noreferrer" class="">PR #6</a>) and configurable handling in DataFusion (<a href="https://github.com/spiceai/datafusion/pull/93" target="_blank" rel="noopener noreferrer" class="">PR #93</a>). A new runtime parameter, <code>parquet_page_index</code>, makes Parquet Page Indexes configurable in Spice:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">runtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">parquet_page_index</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> required </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># Options: required, skip, auto</span><br></span></code></pre></div></div>
<ul>
<li class=""><strong>required</strong>: (Default) Errors if page indexes are absent.</li>
<li class=""><strong>skip</strong>: Ignores page indexes, potentially reducing query performance.</li>
<li class=""><strong>auto</strong>: Uses page indexes if available; skips otherwise.</li>
</ul>
<p>This improves compatibility and query flexibility for Parquet datasets.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="contributors">Contributors<a href="https://spiceai.org/blog/releases/v1.5.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/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</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/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</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/blog/releases/v1.5.2#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<p><strong>Amazon S3 Vectors Vector Engine</strong>: Amazon S3 Vectors is currently a preview AWS service. A recent update to the Amazon S3 Vectors service API introduced a breaking change that affects the integration when projecting (selecting) the embedding column. This results in the following error:</p>
<p><code>Json error: whilst decoding field 'data': expected [ got nullReceived only partial JSON payload from QueryVectors</code></p>
<p>The issue is expected to be resolved in the next release of Spice. A current workaround is to limit queries to non-embedding columns.</p>
<p>i.e. instead of:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> url</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> title</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> scored</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> body_embedding</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">pulls</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%)">'bugs in DuckDB'</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 punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> state </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%)">'OPEN'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">4</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>Remove the <code>*_embedding</code> column from the projection. E.g.</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> url</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> title</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> scored</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">pulls</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%)">'bugs in DuckDB'</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 punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> state </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%)">'OPEN'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">4</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>This issue and workaround also applies to <code>SELECT * FROM vector_search(..)</code>. E.g.</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">pulls</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%)">'bugs in DuckDB'</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 punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> state </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%)">'OPEN'</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">4</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="cookbook-updates">Cookbook Updates<a href="https://spiceai.org/blog/releases/v1.5.2#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 href="https://github.com/spiceai/cookbook/tree/trunk/redshift" target="_blank" rel="noopener noreferrer" class="">Amazon Redshift Support</a> to the Postgres Data Connector cookbook: Connect to tables in Amazon Redshift.</li>
</ul>
<p>The <a href="https://spiceai.org/cookbook" target="_blank" rel="noopener noreferrer" class="">Spice Cookbook</a> includes 75 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/blog/releases/v1.5.2#upgrading" class="hash-link" aria-label="Direct link to Upgrading" title="Direct link to Upgrading" translate="no">​</a></h2>
<p>To upgrade to v1.5.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">spice upgrade</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">brew upgrade spiceai/spiceai/spice</span><br></span></code></pre></div></div>
<p><strong>Docker</strong>:</p>
<p>Pull the <code>spiceai/spiceai:1.5.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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">docker pull spiceai/spiceai:1.5.2</span><br></span></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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm repo update</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">helm upgrade spiceai spiceai/spiceai</span><br></span></code></pre></div></div>
<p><strong>AWS Marketplace</strong>:</p>
<p>🎉 Spice is also now 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/blog/releases/v1.5.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="dependencies">Dependencies<a href="https://spiceai.org/blog/releases/v1.5.2#dependencies" class="hash-link" aria-label="Direct link to Dependencies" title="Direct link to Dependencies" translate="no">​</a></h3>
<p>No major dependency updates.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="changelog">Changelog<a href="https://spiceai.org/blog/releases/v1.5.2#changelog" class="hash-link" aria-label="Direct link to Changelog" title="Direct link to Changelog" translate="no">​</a></h3>
<ul>
<li class="">fixes for databricks OpenAI compatibility (#6629) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6629" target="_blank" rel="noopener noreferrer" class="">#6629</a></li>
<li class="">Update spicepod.schema.json (#6632) 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/6632" target="_blank" rel="noopener noreferrer" class="">#6632</a></li>
<li class="">Remove 'stream_options' from databricks LLMs (#6637) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6637" target="_blank" rel="noopener noreferrer" class="">#6637</a></li>
<li class="">Move retry and rate limiting logic for Amazon bedrock out of embeddings. (#6626) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6626" target="_blank" rel="noopener noreferrer" class="">#6626</a></li>
<li class="">Disable Metal precomplation in integration_llms.yml (#6649) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6649" target="_blank" rel="noopener noreferrer" class="">#6649</a></li>
<li class="">fix: Hadoop integration test (#6660) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6660" target="_blank" rel="noopener noreferrer" class="">#6660</a></li>
<li class="">feat: Add Hadoop Catalog Data Component (#6658) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6658" target="_blank" rel="noopener noreferrer" class="">#6658</a></li>
<li class="">update datafusion-table-providers to latest spiceai tag (#6661) 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/6661" target="_blank" rel="noopener noreferrer" class="">#6661</a></li>
<li class="">feat: Add Hadoop Catalog connectors for Iceberg (#6659) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6659" target="_blank" rel="noopener noreferrer" class="">#6659</a></li>
<li class="">Make <code>FullTextSearchExec</code> robust to RecordBatch column ordering. (#6675) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6675" target="_blank" rel="noopener noreferrer" class="">#6675</a></li>
<li class="">Make 'runtime-object-store' crate (#6674) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6674" target="_blank" rel="noopener noreferrer" class="">#6674</a></li>
<li class="">fix: Support include for Iceberg (#6663) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6663" target="_blank" rel="noopener noreferrer" class="">#6663</a></li>
<li class="">feat: Add Hadoop TPCH benchmark (#6678) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6678" target="_blank" rel="noopener noreferrer" class="">#6678</a></li>
<li class="">feat: Add Hadoop <code>metadata_path</code> parameter (#6680) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6680" target="_blank" rel="noopener noreferrer" class="">#6680</a></li>
<li class="">fix: Automatically infer Hadoop warehouse scheme (#6681) by <a href="https://github.com/peasee" target="_blank" rel="noopener noreferrer" class="">@peasee</a> in <a href="https://github.com/spiceai/spiceai/pull/6681" target="_blank" rel="noopener noreferrer" class="">#6681</a></li>
<li class="">Amazon Bedrock, specifically Nova models (#6673) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in [#6673](<a href="https://github.com/spiceai/spiceai/pull/6673" target="_blank" rel="noopener noreferrer" class="">https://github.com/spiceai/spiceai/pull/6673</a></li>
<li class="">fix perplexity_auth_token parameters for web_search (#6685) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6685" target="_blank" rel="noopener noreferrer" class="">#6685</a></li>
<li class="">Fix AWS Auth issue (#6699) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6699" target="_blank" rel="noopener noreferrer" class="">#6699</a></li>
<li class="">Limit Concurrent Requests for GitHub (#6672) by <a href="https://github.com/Advayp" target="_blank" rel="noopener noreferrer" class="">@Advayp</a> in <a href="https://github.com/spiceai/spiceai/pull/6672" target="_blank" rel="noopener noreferrer" class="">#6672</a></li>
<li class="">Add runtime parameter to enable more permissive parquet reading when page indexes are missing (#6716) by <a href="https://github.com/phillipleblanc" target="_blank" rel="noopener noreferrer" class="">@phillipleblanc</a> in <a href="https://github.com/spiceai/spiceai/pull/6716" target="_blank" rel="noopener noreferrer" class="">#6716</a></li>
<li class="">Improve Flight REPL error messages (#6696) by <a href="https://github.com/lukekim" target="_blank" rel="noopener noreferrer" class="">@lukekim</a> in <a href="https://github.com/spiceai/spiceai/pull/6696" target="_blank" rel="noopener noreferrer" class="">#6696</a></li>
<li class="">Fixes from search tests (#6710) by <a href="https://github.com/Jeadie" target="_blank" rel="noopener noreferrer" class="">@Jeadie</a> in <a href="https://github.com/spiceai/spiceai/pull/6710" target="_blank" rel="noopener noreferrer" class="">#6710</a></li>
</ul>]]></content>
        <author>
            <name>Kevin Zimmerman</name>
            <uri>https://github.com/kczimm</uri>
        </author>
        <category label="release" term="release"/>
        <category label="aws" term="aws"/>
        <category label="data-connector" term="data-connector"/>
        <category label="bedrock" term="bedrock"/>
        <category label="redshift" term="redshift"/>
        <category label="postgres" term="postgres"/>
        <category label="hadoop" term="hadoop"/>
        <category label="iceberg" term="iceberg"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Amazon S3 Vectors with Spice]]></title>
        <id>https://spiceai.org/blog/amazon-s3-vectors-with-spice</id>
        <link href="https://spiceai.org/blog/amazon-s3-vectors-with-spice"/>
        <updated>2025-07-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Spice.ai v1.5.0 integrates Amazon S3 Vectors for scalable, cost-efficient vector search, enabling semantic search and RAG at petabyte scale with up to 90% cost savings.]]></summary>
        <content type="html"><![CDATA[<p>The latest Spice.ai Open Source release (<a class="" href="https://spiceai.org/blog/releases/v1.5.0">v1.5.0</a>) brings major improvements to search, including native support for <strong>Amazon S3 Vectors</strong>. Announced in public preview at <a href="https://www.aboutamazon.com/news/aws/aws-summit-agentic-ai-innovations-2025" target="_blank" rel="noopener noreferrer" class="">AWS Summit New York 2025</a>, Amazon S3 Vectors is a new S3 bucket type purpose-built for vector embeddings, with dedicated APIs for similarity search.</p>
<p>Spice AI was a day 1 launch partner for S3 Vectors, integrating it as a scalable vector index backend. In this post, we explore how S3 Vectors integrates into Spice.ai’s data, search, and AI-inference engine, how Spice manages indexing and lifecycle of embeddings for production vector search, and how this unlocks a powerful hybrid search experience. We’ll also put this in context with industry trends and compare Spice’s approach to other vector database solutions like Qdrant, Weaviate, Pinecone, and Turbopuffer.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="amazon-s3-vectors-overview">Amazon S3 Vectors Overview<a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#amazon-s3-vectors-overview" class="hash-link" aria-label="Direct link to Amazon S3 Vectors Overview" title="Direct link to Amazon S3 Vectors Overview" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="Amazon S3 Vectors Overview" src="https://spiceai.org/assets/images/2025-s3-vector-1-vector-overview-1-b3b90c402ef474ef6423b6d4f1e945a9.png" width="2190" height="520" class="img_ev3q"></p>
<p>Amazon S3 Vectors extends S3 object storage with native support for storing and querying vectors at scale. As AWS describes, it is <em>“designed to provide the same elasticity, scale, and durability as Amazon S3,”</em> providing storage of <strong>billions of vectors</strong> and sub-second similarity queries. Crucially, S3 Vectors dramatically lowers the cost of vector search infrastructure – reducing upload, storage, and query costs by <strong>up to 90%</strong> compared to traditional solutions. It achieves this by <strong>separating storage from compute</strong>: vectors reside durably in S3, and queries execute on transient, on-demand resources, avoiding the need for always-on, memory-intensive vector database servers. In practice, S3 Vectors exposes two core operations:</p>
<ol>
<li class="">
<p><strong>Upsert vectors</strong> – assign a vector (an array of floats) to a given key (identifier) and optionally store metadata alongside it.</p>
</li>
<li class="">
<p><strong>Vector similarity query</strong> – given a new query vector, efficiently find the stored vectors that are closest (e.g. minimal distance) to it, returning their keys (and scores).</p>
</li>
</ol>
<p>This transforms S3 into a <strong>massively scalable vector index</strong> service. You can store embeddings at petabyte scale and perform similarity search with metrics like cosine or Euclidean distance via a simple API. It’s ideal for AI use cases like semantic search, recommendations, or Retrieval-Augmented Generation (RAG) where large volumes of embeddings need to be queried semantically. By leveraging S3’s pay-for-use storage and ephemeral compute, S3 Vectors can handle infrequent or large-scale queries much more cost-effectively than memory-bound databases, yet still deliver sub-second results.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="vector-search-with-embeddings">Vector Search with Embeddings<a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#vector-search-with-embeddings" class="hash-link" aria-label="Direct link to Vector Search with Embeddings" title="Direct link to Vector Search with Embeddings" translate="no">​</a></h2>
<p>Vector similarity search retrieves data by comparing items in a high-dimensional embedding space rather than by exact keywords. In a typical pipeline:</p>
<ul>
<li class="">
<p><strong>Data to vectors:</strong> We first convert each data item (text, image, etc.) into a numeric vector representation (embedding) using an ML model. For example, a customer review text might be turned into a 768-dimensional embedding that encodes its semantic content. Models like Amazon Titan Embeddings, OpenAI, or Hugging Face sentence transformers handle this step.</p>
</li>
<li class="">
<p><strong>Index storage:</strong> These vectors are stored in a specialized index or database optimized for similarity search. This could be a dedicated vector database or, in our case, Amazon S3 Vectors acting as the index. Each vector is stored with an identifier (e.g. the primary key of the source record) and possibly metadata.</p>
</li>
<li class="">
<p><strong>Query by vector:</strong> A search query (e.g. a phrase or image) is also converted into an embedding vector. The vector index is then queried to find the closest stored vectors by distance metric (cosine, Euclidean, dot product, etc.). The result is a set of IDs of the most similar items, often with a similarity score.</p>
</li>
</ul>
<p>This process enables <strong>semantic search</strong> – results are returned based on meaning and similarity rather than exact text matches. It powers features like finding relevant documents by topic even if exact terms differ, recommendation systems (finding similar user behavior or content), and providing knowledge context to LLMs in RAG. With the Spice.ai Open Source integration, this whole lifecycle (embedding data, indexing vectors, querying) is managed by the Spice runtime and exposed via a familiar SQL or HTTP interface.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="amazon-s3-vectors-in-spiceai">Amazon S3 Vectors in Spice.ai<a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#amazon-s3-vectors-in-spiceai" class="hash-link" aria-label="Direct link to Amazon S3 Vectors in Spice.ai" title="Direct link to Amazon S3 Vectors in Spice.ai" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/6bdd5ed9-7663-47a3-8ae6-480ab20a6751" alt="Spice integration with Amazon S3 Vectors" class="img_ev3q"></p>
<p>Spice.ai is an open-source data, search and AI compute engine that supports vector search end-to-end. By integrating S3 Vectors as an index, Spice can embed data, store embeddings in S3, and perform similarity queries – all orchestrated through simple configuration and SQL queries. Let’s walk through how you enable and use this in Spice.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="configuring-a-dataset-with-embeddings">Configuring a Dataset with Embeddings<a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#configuring-a-dataset-with-embeddings" class="hash-link" aria-label="Direct link to Configuring a Dataset with Embeddings" title="Direct link to Configuring a Dataset with Embeddings" translate="no">​</a></h3>
<p>To use vector search, annotate your dataset schema to specify which column(s) to embed and with which model. Spice supports various embedding models (both local or hosted) via the embeddings section in the configuration. For example, suppose we have a <strong>customer reviews</strong> table and we want to enable semantic search over the review text (<code>body</code> column):</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> oracle</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token string" style="color:hsl(119, 34%, 47%)">"CUSTOMER_REVIEWS"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> body</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">          </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock_titan </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># use an embedding model defined below</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">embeddings</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain">amazon.titan</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">embed</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">v2</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> bedrock_titan</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">aws_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%)">2</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">dimensions</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'256'</span><br></span></code></pre></div></div>
<p>In this <code>spicepod.yaml</code>, we defined an embedding model <code>bedrock_titan</code> (in this case AWS's <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/titan-embedding-models.html" target="_blank" rel="noopener noreferrer" class="">Titan text embedding model</a>) and attached it to the <code>body</code> column. When the Spice runtime ingests the dataset, it will automatically generate a vector embedding for each row’s <code>body</code> text using that model. By default, Spice can either store these vectors in its acceleration layer or compute them on the fly. However, with S3 Vectors, we can offload them to an S3 Vectors index for scalable storage.</p>
<p>To use S3 Vectors, we simply enable the vector engine in the dataset config:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">datasets</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">from</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> oracle</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token string" style="color:hsl(119, 34%, 47%)">"CUSTOMER_REVIEWS"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> reviews</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">enabled</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> </span><span class="token boolean important" style="color:hsl(230, 8%, 24%);font-weight:bold">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">engine</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> s3_vectors</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">params</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">s3_vectors_bucket</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> my</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">s3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">vector</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">bucket</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token comment" style="color:hsl(230, 4%, 64%)">#... (rest of dataset definition as above)</span><br></span></code></pre></div></div>
<p>This tells Spice to create or use an S3 Vectors index (in the specified S3 bucket) for storing the <code>body</code> embeddings. Spice manages the entire index lifecycle: it creates the vector index, handles inserting each vector with its primary key into S3, and knows how to query it. The embedding model and data source are as before – the only change is where the vectors are stored and queried. The benefit is that now our vectors reside in S3’s highly scalable storage, and we can leverage S3 Vectors’ efficient similarity search API.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="performing-a-vector-search-query"><strong>Performing a Vector Search Query</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#performing-a-vector-search-query" class="hash-link" aria-label="Direct link to performing-a-vector-search-query" title="Direct link to performing-a-vector-search-query" translate="no">​</a></h3>
<p>Once configured, performing a semantic search is straightforward. Spice exposes both an HTTP endpoint and a SQL table-valued function for vector search. For example, using the HTTP API:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token function" style="color:hsl(221, 87%, 60%)">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-X</span><span class="token plain"> POST http://localhost:8090/v1/search </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-H</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"Content-Type: application/json"</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token parameter variable" style="color:hsl(221, 87%, 60%)">-d</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'{</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)"> "datasets": ["reviews"],</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)"> "text": "issues with same day shipping",</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)"> "additional_columns": ["rating", "customer_id"],</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)"> "where": "created_at &gt;= now() - INTERVAL '</span><span class="token number" style="color:hsl(35, 99%, 36%)">7</span><span class="token plain"> days</span><span class="token string" style="color:hsl(119, 34%, 47%)">'",</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)"> "limit": 2</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token string" style="color:hsl(119, 34%, 47%)"> }'</span><br></span></code></pre></div></div>
<p>This JSON query says: search the <strong>reviews</strong> dataset for items similar to the text "issues with same day shipping", and return the top 2 results, including their rating and customer id, filtered to reviews from the last 7 days. The Spice engine will embed the query text (using the same model as the index), perform a similarity lookup in the S3 Vectors index, filter by the WHERE clause, and return the results. A sample response might look like:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"results"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"matches"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token property" style="color:hsl(5, 74%, 59%)">"body"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"Everything on the site made it seem like I’d get it the same day. Still waiting the next morning was a letdown."</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"data"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"rating"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">3</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%)">"customer_id"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">6482</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></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"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 plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"review_id"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">123</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></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"score"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">0.82</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"dataset"</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%)">"reviews"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"matches"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">        </span><span class="token property" style="color:hsl(5, 74%, 59%)">"body"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"It was marked as arriving 'today' when I paid, but the delivery was pushed back without any explanation. Timing was kind of important for me."</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"data"</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><span class="token property" style="color:hsl(5, 74%, 59%)">"rating"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">2</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%)">"customer_id"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">3310</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></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"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 plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"review_id"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">24</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></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"score"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">0.76</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"dataset"</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%)">"reviews"</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"duration_ms"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">86</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></span></code></pre></div></div>
<p>Each result includes the matching column snippet (body), the additional requested fields, the primary key, and a relevance score. In this case, the two reviews shown are indeed complaints about “same day” delivery issues, which the vector search found based on semantic similarity to the query (see how the second result made no mention of "same day" delivery, but rather described a similar issue as the first ).</p>
<p>Developers can also use <strong>SQL</strong> for the same operation. Spice provides a table function <code>vector_search(dataset, query)</code> that can be used in the FROM clause of a SQL query. For example, the above search could be expressed as:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> rating</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> customer_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">reviews</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%)">'issues with same day shipping'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">WHERE</span><span class="token plain"> created_at </span><span class="token operator" style="color:hsl(221, 87%, 60%)">&gt;=</span><span class="token plain"> to_unixtime</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token function" style="color:hsl(221, 87%, 60%)">now</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 operator" style="color:hsl(221, 87%, 60%)">-</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">INTERVAL</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">'7 days'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">2</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>This would yield a result set (with columns like <code>review_id</code>, <code>score</code>, etc.) similar to the JSON above, which you can join or filter just like any other SQL table. This ability to treat vector search results as a subquery/table and combine them with standard SQL filtering is a powerful feature of Spice.ai’s integration – few other solutions let you <strong>natively mix vector similarity and relational queries</strong> so seamlessly.</p>
<p>See a 2-min demo of it in action:</p>
<div style="display:flex;justify-content:center;margin-bottom:15px"><!--$--><video style="display:block;width:320px;height:180px" controls=""></video><!--/$--></div>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="managing-embeddings-storage-in-spiceai"><strong>Managing Embeddings Storage in Spice.ai</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#managing-embeddings-storage-in-spiceai" class="hash-link" aria-label="Direct link to managing-embeddings-storage-in-spiceai" title="Direct link to managing-embeddings-storage-in-spiceai" translate="no">​</a></h2>
<p>An important design question for any vector search system is <strong>where and how to store the embedding vectors</strong>. Before introducing S3 Vectors, Spice offered two approaches for managing vectors:</p>
<ol>
<li class="">
<p><strong>Accelerator storage:</strong> Embed the data in advance and store the vectors alongside other cached data in a <strong>Data Accelerator</strong> (Spice’s high-performance materialization layer). This keeps vectors readily accessible in memory or fast storage.</p>
</li>
<li class="">
<p><strong>Just-in-time computation:</strong> Compute the necessary vectors on the fly during a query, rather than storing them persistently. For example, at query time, embed only the subset of rows that satisfy recent filters (e.g. all reviews in the last 7 days) and compare those to the query vector.</p>
</li>
</ol>
<p>Both approaches have trade-offs. <strong>Pre-storing in an accelerator</strong> provides fast query responses but may not be feasible for very large datasets (which might not fit entirely, or fit affordably in fast storage) and accelerators, like DuckDB or SQLite aren’t optimized for similarity search algorithms on billion-scale vectors. <strong>Just-in-time embedding</strong> avoids extra storage but becomes prohibitively slow when computing embeddings over large data scans (and for each query), and provides no efficient algorithm for efficiently finding similar neighbours.</p>
<p>Amazon S3 Vectors offers a compelling third option: the <strong>scalability of S3</strong> with the efficient retrieval of vector index data structures. By configuring the dataset with engine: <code>s3_vectors</code> as shown earlier, Spice will offload the vector storage and similarity computations to S3 Vectors. This means you can handle very large embedding sets (millions or billions of items) without worrying about Spice’s memory or local disk limits, and still get fast similarity operations via S3’s API. In practice, when Spice ingests data, it will embed each row’s body and <strong>PUT</strong> it into the S3 Vector index (with the <code>review_id</code> as the key, and possibly some metadata). At query time, Spice calls S3 Vectors’ <strong>query API</strong> to retrieve the nearest neighbors for the embedded query. All of this is abstracted away; you simply query Spice and it orchestrates these steps.</p>
<p>The Spice runtime manages index creation, updates, and deletion. For instance, if new data comes in or old data is removed, Spice will synchronize those changes to the S3 vector index. Developers don’t need to directly interact with S3 – it’s configured once in YAML. This tight integration accelerates application development: your app can treat Spice like any other database, while behind the scenes Spice leverages S3’s elasticity for the heavy lifting.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="vector-index-usage-in-query-execution"><strong>Vector Index Usage in Query Execution</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#vector-index-usage-in-query-execution" class="hash-link" aria-label="Direct link to vector-index-usage-in-query-execution" title="Direct link to vector-index-usage-in-query-execution" translate="no">​</a></h2>
<p>How does a vector index actually get used in Spice’s SQL query planner? To illustrate, consider the simplified SQL we used:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">*</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">reviews</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%)">'issues with same day shipping'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>Logically, without a vector index, Spice would have to do the following at query time:</p>
<ol>
<li class="">
<p><strong>Embed the query text</strong> 'issues with same day shipping' into a vector <code>v</code>.</p>
</li>
<li class="">
<p><strong>Retrieve or compute all candidate vectors</strong> for the searchable column (here every <code>body</code> embedding in the dataset). This could mean scanning every row or at least every row matching other filter predicate.</p>
</li>
<li class="">
<p><strong>Calculate distances</strong> between the query vector <code>v</code> and each candidate vector, compute a similarity score (e.g. <code>score = 1 - distance</code>).</p>
</li>
<li class="">
<p><strong>Sort all candidates</strong> by the score and take the top 5.</p>
</li>
</ol>
<p>For large datasets, steps 2–4 would be extremely expensive (a brute-force scan through potentially millions of vectors for each search, then a full sort operation). A vector index avoiding unnecessary recomputation of embeddings, reduces the number of distance calculations required, and provides in-order candidate neighbors.</p>
<p>With S3 Vectors, step 2 and 3 are pushed down to the S3 service. The vector index can directly return the <em>top K closest matches</em> to <code>v</code>. Conceptually, S3 Vectors gives back an ordered list of primary keys with their similarity scores. For example, it might return something like: <code>{(review_id=123, score=0.82), (review_id=24, score=0.76), ...}</code> up to K results.</p>
<p>Spice then uses these results, logically as a <em>temporary table</em> (let’s call it vector_query_results), joined with the main reviews table to get the full records. In SQL pseudocode, Spice does something akin to:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- The vector index returns the closest matches for a given query.</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">TEMP</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">TABLE</span><span class="token plain"> vector_query_results </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> review_id </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BIGINT</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FLOAT</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>Imagine this temp table is populated by an efficient vector retrieval operatin in S3 Vectors for the query.</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Now we join to retrieve full details</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">rating</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">customer_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_query_results v</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">JOIN</span><span class="token plain"> reviews r </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ON</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>This way, only the top few results (say 50 or 100 candidates) are processed in the database, rather than the entire dataset. The heavy work of narrowing down candidates occurs inside the vector index. <strong>Spice essentially treats vector_search(dataset, query) as a table-valued function that produces (id, score) pairs which are then joinable</strong>.</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="handling-filters-efficiently"><strong>Handling Filters Efficiently</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#handling-filters-efficiently" class="hash-link" aria-label="Direct link to handling-filters-efficiently" title="Direct link to handling-filters-efficiently" translate="no">​</a></h3>
<p>One consideration when using an external vector index is how to handle additional filter conditions (the <code>WHERE</code> clause). In our example, we had a filter <code>created_at &gt;= now() - 7 days</code>. If we simply retrieve the top K results from the vector search and then apply the time filter, we might run into an issue: those top K might not include any recent items, even if there are relevant recent items slightly further down the similarity ranking. This is because S3 Vectors (like most ANN indexes) will return the top K most similar vectors globally, unaware of our date constraint.</p>
<p>If only a small fraction of the data meets the filter, a naive approach could drop most of the top results, leaving fewer than the desired number of final results. For example, imagine the vector index returns 100 nearest reviews overall, but only 5% of all reviews are from the last week – we’d expect only ~5 of those 100 to be recent, possibly fewer than the LIMIT. The query could end up with too few results not because they don’t exist, but because the index wasn’t filter-aware and we truncated the candidate list.</p>
<p>To solve this, <strong>S3 Vectors supports metadata filtering at query time</strong>. We can store certain fields as metadata with each vector and have the similarity search constrained to vectors where the metadata meets criteria. Spice.ai leverages this by allowing you to mark some dataset columns as “vector filterable”. In our YAML, we could do:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> created_at</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">metadata</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> filterable</span><br></span></code></pre></div></div>
<p>By doing this, Spice's query planner will include the <code>created_at</code> value with each vector it upserts to S3, and it will push down the time filter into the S3 Vectors query. Under the hood, the S3 vector query will then return only nearest neighbors that also satisfy <code>created_at &gt;= now()-7d</code>. This greatly improves both efficiency and result relevance. The query execution would conceptually become:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Vector query with filter returns a temp table including the metadata</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">TEMP</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">TABLE</span><span class="token plain"> vector_query_results </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> review_id </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BIGINT</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FLOAT</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> created_at </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">TIMESTAMP</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- vector_query_results is already filtered to last 7 days</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">rating</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">customer_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_query_results v</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">JOIN</span><span class="token plain"> reviews r </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ON</span><span class="token plain"> r</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- (no need for additional created_at filter here, it’s pre-filtered)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>Now the index itself is ensuring all similar reviews <em>are from the last week</em>, and so if there are at least five results from the last week, it will return a full result (i.e. respecting <code>LIMIT 5</code>).</p>
<h3 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="including-data-to-avoid-joins"><strong>Including Data to Avoid Joins</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#including-data-to-avoid-joins" class="hash-link" aria-label="Direct link to including-data-to-avoid-joins" title="Direct link to including-data-to-avoid-joins" translate="no">​</a></h3>
<p>Another optimization Spice supports is storing additional, non-filterable columns in the vector index to entirely avoid the expensive table join back to the main table for certain queries. For example, we might mark <code>rating</code>, <code>customer_id</code>, or even the text <code>body</code> as <strong>non-filterable vector metadata</strong>. This means these fields are stored with the vector in S3, but not used for filtering (just for retrieval). In the Spice config, it would look like:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token key atrule" style="color:hsl(35, 99%, 36%)">columns</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> rating</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">metadata</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> non</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">filterable</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> customer_id</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">metadata</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> non</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">filterable</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain"> </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">name</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> body</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">metadata</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token key atrule" style="color:hsl(35, 99%, 36%)">vectors</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">:</span><span class="token plain"> non</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">-</span><span class="token plain">filterable</span><br></span></code></pre></div></div>
<p>With this setup, when Spice queries S3 Vectors, the vector index will return not only each match’s <code>review_id</code> and <code>score</code>, but also the stored <code>rating</code>, <code>customer_id</code>, and <code>body</code> values. Thus, the temporary <code>vector_query_results</code> table already has all the information needed to satisfy the query. We don’t even need to join against the reviews table unless we want some column that wasn’t stored. The query can be answered entirely from the index data:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> rating</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> customer_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_query_results</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>This is particularly useful for read-heavy query workloads where hitting the main database adds latency. By storing the most commonly needed fields along with the vector, Spice’s vector search behaves like an <strong>index-only query</strong> (similar to covering indexes in relational databases). You trade a bit of extra storage in S3 (duplicating some fields, but still managed by Spice) for faster queries that bypass the heavier join.</p>
<p>This extends to <code>WHERE</code> conditions on non-filterable columns, or filter predicate unsupported by S3 vectors. Spice's execution engine can apply these filters, still avoiding any expensive JOIN on the underlying table.</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> rating</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> customer_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_query_results</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">where</span><span class="token plain"> rating </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%)">3</span><span class="token plain">  </span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- Filter performed in Spice on, with non-filterable data from vector index</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>It’s worth noting that you should choose carefully which fields to mark as metadata – too many or very large fields could increase index storage and query payload sizes. Spice gives you the flexibility to include just what you need for filtering and projection to optimize each use case.</p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="beyond-basic-vector-search-in-spice"><strong>Beyond Basic Vector Search in Spice</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#beyond-basic-vector-search-in-spice" class="hash-link" aria-label="Direct link to beyond-basic-vector-search-in-spice" title="Direct link to beyond-basic-vector-search-in-spice" translate="no">​</a></h2>
<p>Many real-world search applications go beyond a single-vector similarity lookup. Spice.ai’s strength is that it’s a full database engine. You can compose more complex search workflows, including <strong>hybrid search</strong> (combining keyword/text search with vector search), multi-vector queries, re-ranking strategies, and more. Spice provides both an out-of-the-box hybrid search API and the ability to write custom SQL to implement advanced retrieval logic.</p>
<ul>
<li class="">
<p><strong>Multiple vector fields or multi-modal search:</strong> You might have vectors for different aspects of data (e.g. an e-commerce product could have embeddings for both its description and the product's image. Or a document has both a title and body that should be searchable individually and together) that you may want to search across and combine results. Spice lets you do vector search on multiple columns easily, and you can weight the importance of each. For instance, you might boost matches in the title higher than matches in the body.</p>
</li>
<li class="">
<p><strong>Vector and full-text search:</strong> Similar to vector search, columns can have text indexes <a href="https://spiceai.org/docs/features/search/full-text" target="_blank" rel="noopener noreferrer" class="">defined</a> that enable full-text BM25 search. Text search can then be performed in SQL with a similar <code>text_search</code> <a href="https://spiceai.org/docs/features/search/full-text#searching-with-sql" target="_blank" rel="noopener noreferrer" class="">UDTF</a>. The <code>/v1/search</code> HTTP API will perform a <strong>hybrid search</strong> across both full-text and vector indexes, merging results using Reciprocal Rank Fusion (RRF). This means you get a balanced result set that accounts for direct keyword matches as well as semantic similarity. The example below demonstrates how RRF can be implemented in SQL by combining ranks.</p>
</li>
<li class="">
<p><strong>Hybrid vector + keyword search:</strong> Sometimes you want to ensure certain keywords are present while also using semantic similarity. Spice supports <strong>hybrid search</strong> natively – its default <code>/v1/search</code> HTTP API actually performs both full-text BM25 search and vector search, then merges results using Reciprocal Rank Fusion (RRF). This means you get a balanced result set that accounts for direct keyword matches as well as semantic similarity. In Spice’s SQL, you can also call text_search(dataset, query) for traditional full-text search, and combine it with vector_search results. The example below demonstrates how RRF can be implemented in SQL by combining ranks.</p>
</li>
<li class="">
<p><strong>Two-phase retrieval (re-ranking):</strong> A common pattern is to use a fast first-pass retrieval (e.g. a keyword search) to get a larger candidate set, then apply a more expensive or precise ranking (e.g. vector search) on this subset to improve the score of the required final candidate set. With Spice, you can orchestrate this in SQL or in application code. For example, you could query a BM25 index for 100 candidates, then perform a vector search amongst this candidate set(i.e. restricted to those IDs) for a second phase. Since Spice supports standard SQL constructs, you can express these multi-step plans with common table expressions (CTEs) and joins.</p>
</li>
</ul>
<p>To illustrate hybrid search, here’s a SQL snippet that uses the <strong>Reciprocal Rank Fusion (RRF)</strong> technique to merge vector and text search results for the same query (RRF is used, when needed, in the <code>v1/search</code> HTTP API):</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">WITH</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">vector_results </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> RANK</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 keyword" style="color:hsl(301, 63%, 40%)">OVER</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</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"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</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%)">AS</span><span class="token plain"> vector_rank</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">reviews</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%)">'issues with same day shipping'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">text_results </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> RANK</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 keyword" style="color:hsl(301, 63%, 40%)">OVER</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</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"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</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%)">AS</span><span class="token plain"> text_rank</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> text_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">reviews</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%)">'issues with same day shipping'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">COALESCE</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> t</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token comment" style="color:hsl(230, 4%, 64%)">-- RRF scoring: 1/(60+rank) from each source</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">1.0</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 punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">60</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%)">COALESCE</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">vector_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%)">1000</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 operator" style="color:hsl(221, 87%, 60%)">+</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">1.0</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 punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">60</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%)">COALESCE</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">t</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">text_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%)">1000</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><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> fused_score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_results v</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FULL</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">OUTER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">JOIN</span><span class="token plain"> text_results t </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ON</span><span class="token plain"> v</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> t</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> fused_score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">50</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>This takes the vector similarity results and text (BM25) results, assigns each a rank based not on the score, but rather the relative order of candidates, and combines these ranks for an overall order. Spice’s primary key SQL semantics easily enables this document ID join.</p>
<p>For a multi-column vector search example, suppose our reviews dataset has both a title and body with embeddings, and we want to prioritize title matches higher. We could create a <code>combined_score</code> where the title is weighted twice as high as the body:</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"><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">WITH</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">body_results </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> body_score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">reviews</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%)">'issues with same day shipping'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> col </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 string" style="color:hsl(119, 34%, 47%)">'body'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">title_results </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> title_score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> vector_search</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">reviews</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%)">'issues with same day shipping'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> col </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 string" style="color:hsl(119, 34%, 47%)">'title'</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">SELECT</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">COALESCE</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">body</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> title</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> review_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">COALESCE</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">body_score</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 punctuation" style="color:hsl(119, 34%, 47%)">)</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 number" style="color:hsl(35, 99%, 36%)">2.0</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%)">COALESCE</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">title_score</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 punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">AS</span><span class="token plain"> combined_score</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FROM</span><span class="token plain"> body_results</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">FULL</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">OUTER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">JOIN</span><span class="token plain"> title_results </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ON</span><span class="token plain"> body_results</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> title_results</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">review_id</span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">BY</span><span class="token plain"> combined_score </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">DESC</span><span class="token plain"></span><br></span><span class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">LIMIT</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">5</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></span></code></pre></div></div>
<p>These examples scratch the surface of what you can do by leveraging Spice’s <strong>SQL-based composition</strong>. The key point is that Spice isn’t just a vector database – it’s a hybrid engine that lets you combine vector search with other query logic (text search, filters, joins, aggregations, etc.) all in one place. This can significantly simplify building complex search and AI-driven applications.</p>
<p><em>(Note: Like most vector search systems, S3 Vectors uses an approximate nearest neighbor (ANN) algorithm under the hood for performance. This yields fast results that are probabilistically the closest, which is usually an acceptable trade-off in practice. Additionally, in our examples we focused on one embedding per row; production systems may use techniques like chunking text into multiple embeddings or adding external context, but the principles above remain the same.)</em></p>
<h2 class="anchor anchorTargetHideOnScrollNavbar_vjPI" id="industry-context-and-comparisons"><strong>Industry Context and Comparisons</strong><a href="https://spiceai.org/blog/amazon-s3-vectors-with-spice#industry-context-and-comparisons" class="hash-link" aria-label="Direct link to industry-context-and-comparisons" title="Direct link to industry-context-and-comparisons" translate="no">​</a></h2>
<p>The rise of vector databases over the past few years (Pinecone, Qdrant, Weaviate, etc.) has been driven by the need to serve AI applications with semantic search at scale. Each solution takes a slightly different approach in architecture and trade-offs. Spice.ai’s integration with Amazon S3 Vectors represents a newer trend in this space: <strong>decoupling storage from compute for vector search</strong>, analogous to how data warehouses separated compute and storage in the past. Let’s compare this approach with some existing solutions:</p>
<ul>
<li class="">
<p><strong>Traditional Vector Databases (Qdrant, Weaviate, Pinecone):</strong> These systems typically run as dedicated services or clusters that handle both the storage of vectors (on disk or in-memory) and the computation of similarity search. For example, Qdrant (an open-source engine in Rust) allows either in-memory storage or on-disk storage (using RocksDB) for vectors and payloads. It’s optimized for high performance and offers features like filtering, quantization, and distributed clustering, but you generally need to provision servers/instances that will host all your data and indexes. Weaviate, another popular open-source vector DB, uses a <strong>Log-Structured Merge (LSM) tree</strong> based storage engine that persists data to disk and keeps indexes in memory. Weaviate supports hybrid search (it can combine keyword and vector queries) and offers a GraphQL API, with a managed cloud option priced mainly by data volume. Pinecone, a fully managed SaaS, also requires you to select a service tier or pod which has certain memory/CPU allocated for your index – essentially your data lives in Pinecone’s infrastructure, not in your AWS account. These solutions excel at low-latency search for <strong>high query throughput</strong> scenarios (since data is readily available in RAM or local SSD), but the cost can be high for large datasets. You pay for a lot of infrastructure to be running, even during idle times. In fact, prior to S3 Vectors, vector search engines often stored data in memory at ~$2/GB and needed multiple replicas on SSD, which is <em>“the most expensive way to store data”</em>, as Simon Eskildsen (Turbopuffer’s founder) noted. Some databases mitigate cost by compressing or offloading to disk, but still, maintaining say 100 million embeddings might require a sizable cluster of VMs or a costly cloud plan.</p>
</li>
<li class="">
<p><strong>Spice.ai with Amazon S3 Vectors:</strong> This approach flips the script by storing vectors in <strong>cheap, durable object storage (S3)</strong> and loading/indexing them on demand. As discussed, S3 Vectors keeps the entire vector dataset in S3 at ~$0.02/GB storage , and only spins up transient compute (managed by AWS) to serve queries, meaning you aren’t paying for idle GPU or RAM time. AWS states this design can cut total costs by up to 90% while still giving sub-second performance on billions of vectors. It’s essentially a <strong>serverless vector search</strong> model – you don’t manage servers or even dedicated indices; you just use the API. Spice.ai’s integration means developers get this cost-efficiency without having to rebuild their application: they can use standard SQL and Spice will push down operations to S3 Vectors as appropriate. This decoupled storage/compute model is ideal for use cases where the data is huge but query volumes are moderate or bursty (e.g., an enterprise semantic search that is used a few times an hour, or a nightly ML batch job). It avoids the “monolithic database” scenario of having a large cluster running 24/7. However, one should note that if you need extremely high QPS (thousands of queries per second at ultra-low latency), a purely object-storage-based solution might not outperform a tuned in-memory vector DB – AWS positions S3 Vectors as complementary to higher-QPS solutions like OpenSearch for real-time needs.</p>
</li>
<li class="">
<p><strong>Turbopuffer:</strong> Turbopuffer is a startup that, much like Spice with S3 Vectors, is <strong>built from first principles on object storage</strong>. It provides <em>“serverless vector and full-text search… fast, 10× cheaper, and extremely scalable,”</em> by leveraging S3 or similar object stores with smart caching. The philosophy is the same: use the durability and low cost of object storage for the bulk of data, and layer a cache (memory/SSD) in front for performance-critical portions. According to Turbopuffer’s founder, moving from memory/SSD-centric architectures to an object storage core can yield <strong>100× cost savings for cold data and 6–20× for warm data</strong>, without sacrificing too much performance. Turbopuffer’s engine indexes data incrementally on S3 and uses caching to achieve similar latency to conventional search engines on hot data. The key difference is that Turbopuffer is a standalone search service (with its own API), whereas Spice uses AWS’s S3 Vectors service as the backend. Both approaches validate the industry trend toward <strong>disaggregated storage</strong> for search. Essentially, they are bringing the cloud data warehouse economics to vector search: store everything cheaply, compute on demand.</p>
</li>
</ul>
<p>In summary, Spice.ai’s integration with S3 Vectors and similar efforts indicate a shift in vector search towards <strong>cost-efficient, scalable architectures</strong> that separate the concerns of storing massive vector sets and serving queries. Developers now have options: if you need blazing fast, realtime vector search with constant high traffic, dedicated compute infrastructure might be justified. But for many applications – enterprise search, AI assistants with a lot of knowledge but lower QPS, periodic analytics over embeddings – offloading to something like S3 Vectors can save enormously on cost while still delivering sub-second performance at huge scale. And with Spice.ai, you get the best of both worlds: the ease of a unified SQL engine that can do <strong>keyword + vector hybrid search on structured data</strong>, combined with the power of a cloud-native vector store. It simplifies your stack (no separate vector DB service to manage) and accelerates development since you can join and filter vector search results with your data immediately in one query .</p>
<p><strong>References:</strong></p>
<ul>
<li class="">
<p><a href="https://spice.ai/blog/amazon-s3-vectors" target="_blank" rel="noopener noreferrer" class="">Spice.ai announcement</a>: <em>“Spice.ai Now Supports Amazon S3 Vectors For Vector Search at Petabyte Scale!”</em></p>
</li>
<li class="">
<p><a href="https://spiceai.org/docs/components/vectors/s3_vectors" target="_blank" rel="noopener noreferrer" class="">Spice.ai Amazon S3 Vectors documentation</a></p>
</li>
<li class="">
<p><a href="https://github.com/spiceai/cookbook/blob/trunk/vectors/s3/README.md" target="_blank" rel="noopener noreferrer" class="">Spice.ai Amazon S3 Vectors Cookbook Recipe Sample</a></p>
</li>
<li class="">
<p><a href="https://aws.amazon.com/s3/features/vectors" target="_blank" rel="noopener noreferrer" class="">Amazon S3 Vectors official page</a></p>
</li>
<li class="">
<p><a href="https://docs.pinecone.io/guides/get-started/database-architecture" target="_blank" rel="noopener noreferrer" class="">Pinecone Database Architecture</a> (managed vector database)</p>
</li>
<li class="">
<p><a href="https://qdrant.tech/documentation/concepts/indexing" target="_blank" rel="noopener noreferrer" class="">Qdrant documentation</a> (storage modes and features)</p>
</li>
<li class="">
<p><a href="https://turbopuffer.com/blog/turbopuffer" target="_blank" rel="noopener noreferrer" class="">Turbopuffer blog</a> by Simon Eskildsen (cost of search on object storage)</p>
</li>
<li class="">
<p><a href="https://docs.weaviate.io/weaviate/concepts/storage" target="_blank" rel="noopener noreferrer" class="">Weaviate</a> storage architecture discussion</p>
</li>
</ul>]]></content>
        <author>
            <name>Jack Eadie</name>
            <uri>https://github.com/Jeadie</uri>
        </author>
        <category label="spiceai" term="spiceai"/>
        <category label="engineering" term="engineering"/>
        <category label="vectors" term="vectors"/>
        <category label="embeddings" term="embeddings"/>
        <category label="s3" term="s3"/>
        <category label="search" term="search"/>
        <category label="vector-search" term="vector-search"/>
        <category label="semantic-search" term="semantic-search"/>
        <category label="rag" term="rag"/>
        <category label="hybrid-search" term="hybrid-search"/>
    </entry>
</feed>