This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/asf-site by this push: new 611690c914 Publish built docs triggered by b0c8dd61ac660206a436e2f003d70394495e5bf0 611690c914 is described below commit 611690c9148a572797877d34109b7afdfa40cc0a Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com> AuthorDate: Tue Aug 5 20:04:32 2025 +0000 Publish built docs triggered by b0c8dd61ac660206a436e2f003d70394495e5bf0 --- .../functions/adding-udfs.md.txt | 7 ++-- _sources/library-user-guide/upgrading.md.txt | 38 +++++++++++++++++ library-user-guide/functions/adding-udfs.html | 7 ++-- library-user-guide/upgrading.html | 48 ++++++++++++++++++++++ searchindex.js | 2 +- 5 files changed, 93 insertions(+), 9 deletions(-) diff --git a/_sources/library-user-guide/functions/adding-udfs.md.txt b/_sources/library-user-guide/functions/adding-udfs.md.txt index 00ee878e1f..6bce4c32b8 100644 --- a/_sources/library-user-guide/functions/adding-udfs.md.txt +++ b/_sources/library-user-guide/functions/adding-udfs.md.txt @@ -317,12 +317,11 @@ impl AsyncScalarUDFImpl for AsyncUpper { } /// This method is called to execute the async UDF and is similar - /// to the normal `invoke_with_args` except it returns an `ArrayRef` - /// instead of `ColumnarValue` and is `async`. + /// to the normal `invoke_with_args` except it is `async`. async fn invoke_async_with_args( &self, args: ScalarFunctionArgs, - ) -> Result<ArrayRef> { + ) -> Result<ColumnarValue> { let value = &args.args[0]; // This function simply implements a simple string to uppercase conversion // but can be used for any async operation such as network calls. @@ -337,7 +336,7 @@ impl AsyncScalarUDFImpl for AsyncUpper { } _ => return internal_err!("Expected a string argument, got {:?}", value), }; - Ok(result) + Ok(ColumnarValue::from(result)) } } ``` diff --git a/_sources/library-user-guide/upgrading.md.txt b/_sources/library-user-guide/upgrading.md.txt index 6332fb6604..c2e7d25f86 100644 --- a/_sources/library-user-guide/upgrading.md.txt +++ b/_sources/library-user-guide/upgrading.md.txt @@ -24,6 +24,44 @@ **Note:** DataFusion `50.0.0` has not been released yet. The information provided in this section pertains to features and changes that have already been merged to the main branch and are awaiting release in this version. You can see the current [status of the `50.0.0 `release here](https://github.com/apache/datafusion/issues/16799) +### `AsyncScalarUDFImpl::invoke_async_with_args` returns `ColumnarValue` + +In order to enable single value optimizations and be consistent with other +user defined function APIs, the `AsyncScalarUDFImpl::invoke_async_with_args` method now +returns a `ColumnarValue` instead of a `ArrayRef`. + +To upgrade, change the return type of your implementation + +```rust +impl AsyncScalarUDFImpl for AskLLM { + async fn invoke_async_with_args( + &self, + args: ScalarFunctionArgs, + _option: &ConfigOptions, + ) -> Result<ColumnarValue> { + .. + return array_ref; // old code + } +} +``` + +To return a `ColumnarValue` + +```rust +impl AsyncScalarUDFImpl for AskLLM { + async fn invoke_async_with_args( + &self, + args: ScalarFunctionArgs, + _option: &ConfigOptions, + ) -> Result<ColumnarValue> { + .. + return ColumnarValue::from(array_ref); // new code + } +} +``` + +See [#16896](https://github.com/apache/datafusion/issues/16896) for more details. + ### `SessionState`, `SessionConfig`, and `OptimizerConfig` returns `&Arc<ConfigOptions>` instead of `&ConfigOptions` To provide broader access to `ConfigOptions` and reduce required clones, some diff --git a/library-user-guide/functions/adding-udfs.html b/library-user-guide/functions/adding-udfs.html index ac25d788e5..0d984da82b 100644 --- a/library-user-guide/functions/adding-udfs.html +++ b/library-user-guide/functions/adding-udfs.html @@ -1001,12 +1001,11 @@ UDF.</p> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="sd">/// This method is called to execute the async UDF and is similar</span> -<span class="w"> </span><span class="sd">/// to the normal `invoke_with_args` except it returns an `ArrayRef`</span> -<span class="w"> </span><span class="sd">/// instead of `ColumnarValue` and is `async`.</span> +<span class="w"> </span><span class="sd">/// to the normal `invoke_with_args` except it is `async`.</span> <span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">invoke_async_with_args</span><span class="p">(</span> <span class="w"> </span><span class="o">&</span><span class="bp">self</span><span class="p">,</span> <span class="w"> </span><span class="n">args</span><span class="p">:</span><span class="w"> </span><span class="nc">ScalarFunctionArgs</span><span class="p">,</span> -<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Result</span><span class="o"><</span><span class="n">ArrayRef</span><span class="o">></span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Result</span><span class="o"><</span><span class="n">ColumnarValue</span><span class="o">></span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">args</span><span class="p">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span> <span class="w"> </span><span class="c1">// This function simply implements a simple string to uppercase conversion</span> <span class="w"> </span><span class="c1">// but can be used for any async operation such as network calls.</span> @@ -1021,7 +1020,7 @@ UDF.</p> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">_</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">internal_err</span><span class="o">!</span><span class="p">(</span><span class="s">"Expected a string argument, got {:?}"</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">),</span> <span class="w"> </span><span class="p">};</span> -<span class="w"> </span><span class="nb">Ok</span><span class="p">(</span><span class="n">result</span><span class="p">)</span> +<span class="w"> </span><span class="nb">Ok</span><span class="p">(</span><span class="n">ColumnarValue</span><span class="p">::</span><span class="n">from</span><span class="p">(</span><span class="n">result</span><span class="p">))</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> diff --git a/library-user-guide/upgrading.html b/library-user-guide/upgrading.html index 48fa1d7a69..40e888deed 100644 --- a/library-user-guide/upgrading.html +++ b/library-user-guide/upgrading.html @@ -554,6 +554,21 @@ </code> </a> <ul class="nav section-nav flex-column"> + <li class="toc-h3 nav-item toc-entry"> + <a class="reference internal nav-link" href="#asyncscalarudfimpl-invoke-async-with-args-returns-columnarvalue"> + <code class="docutils literal notranslate"> + <span class="pre"> + AsyncScalarUDFImpl::invoke_async_with_args + </span> + </code> + returns + <code class="docutils literal notranslate"> + <span class="pre"> + ColumnarValue + </span> + </code> + </a> + </li> <li class="toc-h3 nav-item toc-entry"> <a class="reference internal nav-link" href="#sessionstate-sessionconfig-and-optimizerconfig-returns-arc-configoptions-instead-of-configoptions"> <code class="docutils literal notranslate"> @@ -1137,6 +1152,39 @@ <h2>DataFusion <code class="docutils literal notranslate"><span class="pre">50.0.0</span></code><a class="headerlink" href="#datafusion-50-0-0" title="Link to this heading">¶</a></h2> <p><strong>Note:</strong> DataFusion <code class="docutils literal notranslate"><span class="pre">50.0.0</span></code> has not been released yet. The information provided in this section pertains to features and changes that have already been merged to the main branch and are awaiting release in this version. You can see the current <a class="reference external" href="https://github.com/apache/datafusion/issues/16799">status of the <code class="docutils literal notranslate"><span class="pre">50.0.0</span> </code>release here</a></p> +<section id="asyncscalarudfimpl-invoke-async-with-args-returns-columnarvalue"> +<h3><code class="docutils literal notranslate"><span class="pre">AsyncScalarUDFImpl::invoke_async_with_args</span></code> returns <code class="docutils literal notranslate"><span class="pre">ColumnarValue</span></code><a class="headerlink" href="#asyncscalarudfimpl-invoke-async-with-args-returns-columnarvalue" title="Link to this heading">¶</a></h3> +<p>In order to enable single value optimizations and be consistent with other +user defined function APIs, the <code class="docutils literal notranslate"><span class="pre">AsyncScalarUDFImpl::invoke_async_with_args</span></code> method now +returns a <code class="docutils literal notranslate"><span class="pre">ColumnarValue</span></code> instead of a <code class="docutils literal notranslate"><span class="pre">ArrayRef</span></code>.</p> +<p>To upgrade, change the return type of your implementation</p> +<div class="highlight-rust notranslate"><div class="highlight"><pre><span></span><span class="k">impl</span><span class="w"> </span><span class="n">AsyncScalarUDFImpl</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">AskLLM</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">invoke_async_with_args</span><span class="p">(</span> +<span class="w"> </span><span class="o">&</span><span class="bp">self</span><span class="p">,</span> +<span class="w"> </span><span class="n">args</span><span class="p">:</span><span class="w"> </span><span class="nc">ScalarFunctionArgs</span><span class="p">,</span> +<span class="w"> </span><span class="n">_option</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">ConfigOptions</span><span class="p">,</span> +<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Result</span><span class="o"><</span><span class="n">ColumnarValue</span><span class="o">></span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="o">..</span> +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">array_ref</span><span class="p">;</span><span class="w"> </span><span class="c1">// old code</span> +<span class="w"> </span><span class="p">}</span> +<span class="p">}</span> +</pre></div> +</div> +<p>To return a <code class="docutils literal notranslate"><span class="pre">ColumnarValue</span></code></p> +<div class="highlight-rust notranslate"><div class="highlight"><pre><span></span><span class="k">impl</span><span class="w"> </span><span class="n">AsyncScalarUDFImpl</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">AskLLM</span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="k">async</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">invoke_async_with_args</span><span class="p">(</span> +<span class="w"> </span><span class="o">&</span><span class="bp">self</span><span class="p">,</span> +<span class="w"> </span><span class="n">args</span><span class="p">:</span><span class="w"> </span><span class="nc">ScalarFunctionArgs</span><span class="p">,</span> +<span class="w"> </span><span class="n">_option</span><span class="p">:</span><span class="w"> </span><span class="kp">&</span><span class="nc">ConfigOptions</span><span class="p">,</span> +<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">Result</span><span class="o"><</span><span class="n">ColumnarValue</span><span class="o">></span><span class="w"> </span><span class="p">{</span> +<span class="w"> </span><span class="o">..</span> +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ColumnarValue</span><span class="p">::</span><span class="n">from</span><span class="p">(</span><span class="n">array_ref</span><span class="p">);</span><span class="w"> </span><span class="c1">// new code</span> +<span class="w"> </span><span class="p">}</span> +<span class="p">}</span> +</pre></div> +</div> +<p>See <a class="reference external" href="https://github.com/apache/datafusion/issues/16896">#16896</a> for more details.</p> +</section> <section id="sessionstate-sessionconfig-and-optimizerconfig-returns-arc-configoptions-instead-of-configoptions"> <h3><code class="docutils literal notranslate"><span class="pre">SessionState</span></code>, <code class="docutils literal notranslate"><span class="pre">SessionConfig</span></code>, and <code class="docutils literal notranslate"><span class="pre">OptimizerConfig</span></code> returns <code class="docutils literal notranslate"><span class="pre">&Arc<ConfigOptions></span></code> instead of <code class="docutils literal notranslate"><span class="pre">&ConfigOptions</span></co [...] <p>To provide broader access to <code class="docutils literal notranslate"><span class="pre">ConfigOptions</span></code> and reduce required clones, some diff --git a/searchindex.js b/searchindex.js index a397ea7d0f..7154973576 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"!=":[[56,"op-neq"]],"!~":[[56,"op-re-not-match"]],"!~*":[[56,"op-re-not-match-i"]],"!~~":[[56,"id19"]],"!~~*":[[56,"id20"]],"#":[[56,"op-bit-xor"]],"%":[[56,"op-modulo"]],"&":[[56,"op-bit-and"]],"(relation, name) tuples in logical fields and logical columns are unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[56,"op-multiply"]],"+":[[56,"op-plus"]],"-":[[56,"op-minus"]],"/":[[56,"op-divide"]],"<":[[56,"op-lt"]],"< [...] \ No newline at end of file +Search.setIndex({"alltitles":{"!=":[[56,"op-neq"]],"!~":[[56,"op-re-not-match"]],"!~*":[[56,"op-re-not-match-i"]],"!~~":[[56,"id19"]],"!~~*":[[56,"id20"]],"#":[[56,"op-bit-xor"]],"%":[[56,"op-modulo"]],"&":[[56,"op-bit-and"]],"(relation, name) tuples in logical fields and logical columns are unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[56,"op-multiply"]],"+":[[56,"op-plus"]],"-":[[56,"op-minus"]],"/":[[56,"op-divide"]],"<":[[56,"op-lt"]],"< [...] \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org For additional commands, e-mail: commits-h...@datafusion.apache.org