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 32169731e7 Publish built docs triggered by 
33b9afa911f7d01edac0053beb17ca298111ea19
32169731e7 is described below

commit 32169731e76476c812ca233a485f1d643b522b43
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Mar 9 20:48:25 2026 +0000

    Publish built docs triggered by 33b9afa911f7d01edac0053beb17ca298111ea19
---
 _sources/library-user-guide/extending-sql.md.txt | 51 ++++++++++++++++++++++--
 library-user-guide/extending-sql.html            | 44 +++++++++++++++++++-
 searchindex.js                                   |  2 +-
 3 files changed, 91 insertions(+), 6 deletions(-)

diff --git a/_sources/library-user-guide/extending-sql.md.txt 
b/_sources/library-user-guide/extending-sql.md.txt
index 687d884895..eea5b3b1ac 100644
--- a/_sources/library-user-guide/extending-sql.md.txt
+++ b/_sources/library-user-guide/extending-sql.md.txt
@@ -158,7 +158,7 @@ when you need to support SQL types that aren't natively 
recognized.
 
 ```rust
 # use std::sync::Arc;
-# use arrow::datatypes::{DataType, TimeUnit};
+# use arrow::datatypes::{DataType, FieldRef, TimeUnit};
 # use datafusion::error::Result;
 # use datafusion::prelude::*;
 # use datafusion::execution::SessionStateBuilder;
@@ -169,7 +169,7 @@ use datafusion_expr::planner::TypePlanner;
 struct MyTypePlanner;
 
 impl TypePlanner for MyTypePlanner {
-    fn plan_type(&self, sql_type: &ast::DataType) -> Result<Option<DataType>> {
+    fn plan_type_field(&self, sql_type: &ast::DataType) -> 
Result<Option<FieldRef>> {
         match sql_type {
             // Map DATETIME(precision) to Arrow Timestamp
             ast::DataType::Datetime(precision) => {
@@ -180,7 +180,9 @@ impl TypePlanner for MyTypePlanner {
                     None | Some(9) => TimeUnit::Nanosecond,
                     _ => return Ok(None), // Let default handling take over
                 };
-                Ok(Some(DataType::Timestamp(time_unit, None)))
+                Ok(Some(
+                    DataType::Timestamp(time_unit, 
None).into_nullable_field_ref()
+                ))
             }
             _ => Ok(None), // Return None for types we don't handle
         }
@@ -202,6 +204,49 @@ async fn main() -> Result<()> {
 }
 ```
 
+#### Example: Supporting the UUID Type
+
+```rust
+# use std::sync::Arc;
+# use arrow::datatypes::{DataType, FieldRef, TimeUnit};
+# use datafusion::error::Result;
+# use datafusion::prelude::*;
+# use datafusion::execution::SessionStateBuilder;
+use datafusion_expr::planner::TypePlanner;
+# use sqlparser::ast;
+
+#[derive(Debug)]
+struct MyTypePlanner;
+
+impl TypePlanner for MyTypePlanner {
+    fn plan_type_field(&self, sql_type: &ast::DataType) -> 
Result<Option<FieldRef>> {
+        match sql_type {
+            sqlparser::ast::DataType::Uuid => Ok(Some(Arc::new(
+                Field::new("", DataType::FixedSizeBinary(16), 
true).with_metadata(
+                    [("ARROW:extension:name".to_string(), 
"arrow.uuid".to_string())]
+                        .into(),
+                ),
+            ))),
+            _ => Ok(None),
+        }
+    }
+}
+
+#[tokio::main]
+async fn main() -> Result<()> {
+    let state = SessionStateBuilder::new()
+        .with_default_features()
+        .with_type_planner(Arc::new(MyTypePlanner))
+        .build();
+
+    let ctx = SessionContext::new_with_state(state);
+
+    // Now UUID type is recognized
+    ctx.sql("CREATE TABLE idx (uuid UUID)").await?;
+    Ok(())
+}
+```
+
 For more details, see the [TypePlanner API documentation].
 
 ### RelationPlanner: Custom FROM Clause Elements
diff --git a/library-user-guide/extending-sql.html 
b/library-user-guide/extending-sql.html
index d11b6b91f4..2c7ef36b47 100644
--- a/library-user-guide/extending-sql.html
+++ b/library-user-guide/extending-sql.html
@@ -580,7 +580,7 @@ when you need to support SQL types that aren’t natively 
recognized.</p>
 <span class="k">struct</span><span class="w"> </span><span 
class="nc">MyTypePlanner</span><span class="p">;</span>
 
 <span class="k">impl</span><span class="w"> </span><span 
class="n">TypePlanner</span><span class="w"> </span><span 
class="k">for</span><span class="w"> </span><span 
class="n">MyTypePlanner</span><span class="w"> </span><span class="p">{</span>
-<span class="w">    </span><span class="k">fn</span><span class="w"> 
</span><span class="nf">plan_type</span><span class="p">(</span><span 
class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span 
class="w"> </span><span class="n">sql_type</span><span class="p">:</span><span 
class="w"> </span><span class="kp">&amp;</span><span class="nc">ast</span><span 
class="p">::</span><span class="n">DataType</span><span class="p">)</span><span 
class="w"> </span><span class="p"> [...]
+<span class="w">    </span><span class="k">fn</span><span class="w"> 
</span><span class="nf">plan_type_field</span><span class="p">(</span><span 
class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span 
class="w"> </span><span class="n">sql_type</span><span class="p">:</span><span 
class="w"> </span><span class="kp">&amp;</span><span class="nc">ast</span><span 
class="p">::</span><span class="n">DataType</span><span class="p">)</span><span 
class="w"> </span><span clas [...]
 <span class="w">        </span><span class="k">match</span><span class="w"> 
</span><span class="n">sql_type</span><span class="w"> </span><span 
class="p">{</span>
 <span class="w">            </span><span class="c1">// Map DATETIME(precision) 
to Arrow Timestamp</span>
 <span class="w">            </span><span class="n">ast</span><span 
class="p">::</span><span class="n">DataType</span><span 
class="p">::</span><span class="n">Datetime</span><span class="p">(</span><span 
class="n">precision</span><span class="p">)</span><span class="w"> </span><span 
class="o">=&gt;</span><span class="w"> </span><span class="p">{</span>
@@ -591,7 +591,9 @@ when you need to support SQL types that aren’t natively 
recognized.</p>
 <span class="w">                    </span><span class="nb">None</span><span 
class="w"> </span><span class="o">|</span><span class="w"> </span><span 
class="nb">Some</span><span class="p">(</span><span class="mi">9</span><span 
class="p">)</span><span class="w"> </span><span class="o">=&gt;</span><span 
class="w"> </span><span class="n">TimeUnit</span><span class="p">::</span><span 
class="n">Nanosecond</span><span class="p">,</span>
 <span class="w">                    </span><span class="n">_</span><span 
class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span 
class="k">return</span><span class="w"> </span><span class="nb">Ok</span><span 
class="p">(</span><span class="nb">None</span><span class="p">),</span><span 
class="w"> </span><span class="c1">// Let default handling take over</span>
 <span class="w">                </span><span class="p">};</span>
-<span class="w">                </span><span class="nb">Ok</span><span 
class="p">(</span><span class="nb">Some</span><span class="p">(</span><span 
class="n">DataType</span><span class="p">::</span><span 
class="n">Timestamp</span><span class="p">(</span><span 
class="n">time_unit</span><span class="p">,</span><span class="w"> </span><span 
class="nb">None</span><span class="p">)))</span>
+<span class="w">                </span><span class="nb">Ok</span><span 
class="p">(</span><span class="nb">Some</span><span class="p">(</span>
+<span class="w">                    </span><span 
class="n">DataType</span><span class="p">::</span><span 
class="n">Timestamp</span><span class="p">(</span><span 
class="n">time_unit</span><span class="p">,</span><span class="w"> </span><span 
class="nb">None</span><span class="p">).</span><span 
class="n">into_nullable_field_ref</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="n">_</span><span class="w"> 
</span><span class="o">=&gt;</span><span class="w"> </span><span 
class="nb">Ok</span><span class="p">(</span><span class="nb">None</span><span 
class="p">),</span><span class="w"> </span><span class="c1">// Return None for 
types we don&#39;t handle</span>
 <span class="w">        </span><span class="p">}</span>
@@ -613,6 +615,43 @@ when you need to support SQL types that aren’t natively 
recognized.</p>
 <span class="p">}</span>
 </pre></div>
 </div>
+</section>
+<section id="example-supporting-the-uuid-type">
+<h4>Example: Supporting the UUID Type<a class="headerlink" 
href="#example-supporting-the-uuid-type" title="Link to this heading">#</a></h4>
+<div class="highlight-rust notranslate"><div 
class="highlight"><pre><span></span><span class="k">use</span><span class="w"> 
</span><span class="n">datafusion_expr</span><span class="p">::</span><span 
class="n">planner</span><span class="p">::</span><span 
class="n">TypePlanner</span><span class="p">;</span>
+
+<span class="cp">#[derive(Debug)]</span>
+<span class="k">struct</span><span class="w"> </span><span 
class="nc">MyTypePlanner</span><span class="p">;</span>
+
+<span class="k">impl</span><span class="w"> </span><span 
class="n">TypePlanner</span><span class="w"> </span><span 
class="k">for</span><span class="w"> </span><span 
class="n">MyTypePlanner</span><span class="w"> </span><span class="p">{</span>
+<span class="w">    </span><span class="k">fn</span><span class="w"> 
</span><span class="nf">plan_type_field</span><span class="p">(</span><span 
class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span 
class="w"> </span><span class="n">sql_type</span><span class="p">:</span><span 
class="w"> </span><span class="kp">&amp;</span><span class="nc">ast</span><span 
class="p">::</span><span class="n">DataType</span><span class="p">)</span><span 
class="w"> </span><span clas [...]
+<span class="w">        </span><span class="k">match</span><span class="w"> 
</span><span class="n">sql_type</span><span class="w"> </span><span 
class="p">{</span>
+<span class="w">            </span><span class="n">sqlparser</span><span 
class="p">::</span><span class="n">ast</span><span class="p">::</span><span 
class="n">DataType</span><span class="p">::</span><span 
class="n">Uuid</span><span class="w"> </span><span class="o">=&gt;</span><span 
class="w"> </span><span class="nb">Ok</span><span class="p">(</span><span 
class="nb">Some</span><span class="p">(</span><span class="n">Arc</span><span 
class="p">::</span><span class="n">new</span><span class [...]
+<span class="w">                </span><span class="n">Field</span><span 
class="p">::</span><span class="n">new</span><span class="p">(</span><span 
class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> 
</span><span class="n">DataType</span><span class="p">::</span><span 
class="n">FixedSizeBinary</span><span class="p">(</span><span 
class="mi">16</span><span class="p">),</span><span class="w"> </span><span 
class="kc">true</span><span class="p">).</span><span class="n">with_ [...]
+<span class="w">                    </span><span class="p">[(</span><span 
class="s">&quot;ARROW:extension:name&quot;</span><span class="p">.</span><span 
class="n">to_string</span><span class="p">(),</span><span class="w"> 
</span><span class="s">&quot;arrow.uuid&quot;</span><span 
class="p">.</span><span class="n">to_string</span><span class="p">())]</span>
+<span class="w">                        </span><span class="p">.</span><span 
class="n">into</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="n">_</span><span class="w"> 
</span><span class="o">=&gt;</span><span class="w"> </span><span 
class="nb">Ok</span><span class="p">(</span><span class="nb">None</span><span 
class="p">),</span>
+<span class="w">        </span><span class="p">}</span>
+<span class="w">    </span><span class="p">}</span>
+<span class="p">}</span>
+
+<span class="cp">#[tokio::main]</span>
+<span class="k">async</span><span class="w"> </span><span 
class="k">fn</span><span class="w"> </span><span class="nf">main</span><span 
class="p">()</span><span class="w"> </span><span class="p">-&gt;</span><span 
class="w"> </span><span class="nb">Result</span><span 
class="o">&lt;</span><span class="p">()</span><span class="o">&gt;</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">state</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span 
class="n">SessionStateBuilder</span><span class="p">::</span><span 
class="n">new</span><span class="p">()</span>
+<span class="w">        </span><span class="p">.</span><span 
class="n">with_default_features</span><span class="p">()</span>
+<span class="w">        </span><span class="p">.</span><span 
class="n">with_type_planner</span><span class="p">(</span><span 
class="n">Arc</span><span class="p">::</span><span class="n">new</span><span 
class="p">(</span><span class="n">MyTypePlanner</span><span class="p">))</span>
+<span class="w">        </span><span class="p">.</span><span 
class="n">build</span><span class="p">();</span>
+
+<span class="w">    </span><span class="kd">let</span><span class="w"> 
</span><span class="n">ctx</span><span class="w"> </span><span 
class="o">=</span><span class="w"> </span><span 
class="n">SessionContext</span><span class="p">::</span><span 
class="n">new_with_state</span><span class="p">(</span><span 
class="n">state</span><span class="p">);</span>
+
+<span class="w">    </span><span class="c1">// Now UUID type is 
recognized</span>
+<span class="w">    </span><span class="n">ctx</span><span 
class="p">.</span><span class="n">sql</span><span class="p">(</span><span 
class="s">&quot;CREATE TABLE idx (uuid UUID)&quot;</span><span 
class="p">).</span><span class="k">await</span><span class="o">?</span><span 
class="p">;</span>
+<span class="w">    </span><span class="nb">Ok</span><span 
class="p">(())</span>
+<span class="p">}</span>
+</pre></div>
+</div>
 <p>For more details, see the <a class="reference external" 
href="https://docs.rs/datafusion/latest/datafusion/logical_expr/planner/trait.TypePlanner.html";>TypePlanner
 API documentation</a>.</p>
 </section>
 </section>
@@ -810,6 +849,7 @@ for queries such as:</p>
 </li>
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#typeplanner-custom-data-types">TypePlanner: Custom Data Types</a><ul 
class="nav section-nav flex-column">
 <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" 
href="#example-custom-datetime-type">Example: Custom DATETIME Type</a></li>
+<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" 
href="#example-supporting-the-uuid-type">Example: Supporting the UUID 
Type</a></li>
 </ul>
 </li>
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#relationplanner-custom-from-clause-elements">RelationPlanner: Custom 
FROM Clause Elements</a><ul class="nav section-nav flex-column">
diff --git a/searchindex.js b/searchindex.js
index 7e9a792eaf..884bbcdd6b 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[72,"op-neq"]],"!~":[[72,"op-re-not-match"]],"!~*":[[72,"op-re-not-match-i"]],"!~~":[[72,"id19"]],"!~~*":[[72,"id20"]],"#":[[72,"op-bit-xor"]],"%":[[72,"op-modulo"]],"&":[[72,"op-bit-and"]],"(relation,
 name) tuples in logical fields and logical columns are 
unique":[[14,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[72,"op-multiply"]],"+":[[72,"op-plus"]],"-":[[72,"op-minus"]],"/":[[72,"op-divide"]],"1.
 Array Literal Con [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[72,"op-neq"]],"!~":[[72,"op-re-not-match"]],"!~*":[[72,"op-re-not-match-i"]],"!~~":[[72,"id19"]],"!~~*":[[72,"id20"]],"#":[[72,"op-bit-xor"]],"%":[[72,"op-modulo"]],"&":[[72,"op-bit-and"]],"(relation,
 name) tuples in logical fields and logical columns are 
unique":[[14,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[72,"op-multiply"]],"+":[[72,"op-plus"]],"-":[[72,"op-minus"]],"/":[[72,"op-divide"]],"1.
 Array Literal Con [...]
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to