You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/05/15 13:29:13 UTC

(datafusion-python) branch asf-staging updated: Publish built docs triggered by baef8f00e1de6a086fa1814c98e65d216fb16277

This is an automated email from the ASF dual-hosted git repository.

github-actions[bot] pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/datafusion-python.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 1cd9e15b Publish built docs triggered by baef8f00e1de6a086fa1814c98e65d216fb16277
1cd9e15b is described below

commit 1cd9e15bf68448a2224b927676cec810eaaaccb8
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Fri May 15 13:29:08 2026 +0000

    Publish built docs triggered by baef8f00e1de6a086fa1814c98e65d216fb16277
---
 _sources/autoapi/datafusion/context/index.rst.txt |  15 +++
 _sources/autoapi/datafusion/expr/index.rst.txt    |  21 ++++
 _sources/autoapi/datafusion/index.rst.txt         |  84 ++++++++++++---
 _sources/autoapi/datafusion/plan/index.rst.txt    |  63 ++++++++---
 autoapi/datafusion/context/index.html             |  32 ++++++
 autoapi/datafusion/expr/index.html                |  35 +++++++
 autoapi/datafusion/index.html                     | 122 ++++++++++++++++++++--
 autoapi/datafusion/plan/index.html                |  87 +++++++++++++--
 genindex.html                                     |  44 ++++++--
 objects.inv                                       | Bin 10126 -> 10229 bytes
 searchindex.js                                    |   2 +-
 user-guide/common-operations/aggregations.html    |  36 +++----
 user-guide/common-operations/basic-info.html      |  46 ++++----
 user-guide/common-operations/functions.html       |  20 ++--
 user-guide/common-operations/udf-and-udfa.html    |   4 +-
 15 files changed, 511 insertions(+), 100 deletions(-)

diff --git a/_sources/autoapi/datafusion/context/index.rst.txt b/_sources/autoapi/datafusion/context/index.rst.txt
index 4a7f6741..3f479de9 100644
--- a/_sources/autoapi/datafusion/context/index.rst.txt
+++ b/_sources/autoapi/datafusion/context/index.rst.txt
@@ -442,6 +442,12 @@ Module Contents
 
 
 
+   .. py:method:: __datafusion_physical_extension_codec__() -> Any
+
+      Access the PyCapsule FFI_PhysicalExtensionCodec.
+
+
+
    .. py:method:: __datafusion_task_context_provider__() -> Any
 
       Access the PyCapsule FFI_TaskContextProvider.
@@ -1281,6 +1287,15 @@ Module Contents
 
 
 
+   .. py:method:: with_physical_extension_codec(codec: Any) -> SessionContext
+
+      Create a new session context with the specified physical codec.
+
+      This only supports codecs that have been implemented using the
+      FFI interface.
+
+
+
    .. py:attribute:: ctx
 
 
diff --git a/_sources/autoapi/datafusion/expr/index.rst.txt b/_sources/autoapi/datafusion/expr/index.rst.txt
index 2ff3e584..8e0e3255 100644
--- a/_sources/autoapi/datafusion/expr/index.rst.txt
+++ b/_sources/autoapi/datafusion/expr/index.rst.txt
@@ -626,6 +626,17 @@ Module Contents
 
 
 
+   .. py:method:: from_bytes(ctx: datafusion.context.SessionContext, data: bytes) -> Expr
+      :staticmethod:
+
+
+      Decode an expression from serialized protobuf bytes.
+
+      ``ctx`` provides the function registry for resolving UDF
+      references and the logical codec for in-band Python payloads.
+
+
+
    .. py:method:: from_unixtime() -> Expr
 
       Converts an integer to RFC3339 timestamp format string.
@@ -955,6 +966,16 @@ Module Contents
 
 
 
+   .. py:method:: to_bytes(ctx: datafusion.context.SessionContext | None = None) -> bytes
+
+      Serialize this expression to protobuf bytes.
+
+      When ``ctx`` is supplied, encoding routes through the session's
+      installed :class:`LogicalExtensionCodec`. Without ``ctx`` a
+      default codec is used.
+
+
+
    .. py:method:: to_hex() -> Expr
 
       Converts an integer to a hexadecimal string.
diff --git a/_sources/autoapi/datafusion/index.rst.txt b/_sources/autoapi/datafusion/index.rst.txt
index 729b16f2..b562329f 100644
--- a/_sources/autoapi/datafusion/index.rst.txt
+++ b/_sources/autoapi/datafusion/index.rst.txt
@@ -470,13 +470,23 @@ Package Contents
 
 
 
-   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> ExecutionPlan
+   .. py:method:: from_bytes(ctx: datafusion.context.SessionContext, data: bytes) -> ExecutionPlan
       :staticmethod:
 
 
-      Create an ExecutionPlan from protobuf bytes.
+      Create an ExecutionPlan from serialized protobuf bytes.
+
+      Decoding routes through the session's installed
+      `PhysicalExtensionCodec`. Tables created in memory from record
+      batches are currently not supported.
+
+
+
+   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> ExecutionPlan
+      :staticmethod:
+
 
-      Tables created in memory from record batches are currently not supported.
+      Deprecated alias for :meth:`from_bytes`.
 
 
 
@@ -491,11 +501,19 @@ Package Contents
 
 
 
-   .. py:method:: to_proto() -> bytes
+   .. py:method:: to_bytes(ctx: datafusion.context.SessionContext | None = None) -> bytes
+
+      Convert an ExecutionPlan into serialized protobuf bytes.
 
-      Convert an ExecutionPlan into protobuf bytes.
+      When ``ctx`` is supplied, encoding routes through the session's
+      installed `PhysicalExtensionCodec`. Tables created in memory
+      from record batches are currently not supported.
 
-      Tables created in memory from record batches are currently not supported.
+
+
+   .. py:method:: to_proto() -> bytes
+
+      Deprecated alias for :meth:`to_bytes`.
 
 
 
@@ -977,6 +995,17 @@ Package Contents
 
 
 
+   .. py:method:: from_bytes(ctx: datafusion.context.SessionContext, data: bytes) -> Expr
+      :staticmethod:
+
+
+      Decode an expression from serialized protobuf bytes.
+
+      ``ctx`` provides the function registry for resolving UDF
+      references and the logical codec for in-band Python payloads.
+
+
+
    .. py:method:: from_unixtime() -> Expr
 
       Converts an integer to RFC3339 timestamp format string.
@@ -1306,6 +1335,16 @@ Package Contents
 
 
 
+   .. py:method:: to_bytes(ctx: datafusion.context.SessionContext | None = None) -> bytes
+
+      Serialize this expression to protobuf bytes.
+
+      When ``ctx`` is supplied, encoding routes through the session's
+      installed :class:`LogicalExtensionCodec`. Without ``ctx`` a
+      default codec is used.
+
+
+
    .. py:method:: to_hex() -> Expr
 
       Converts an integer to a hexadecimal string.
@@ -1470,13 +1509,23 @@ Package Contents
 
 
 
-   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> LogicalPlan
+   .. py:method:: from_bytes(ctx: datafusion.context.SessionContext, data: bytes) -> LogicalPlan
       :staticmethod:
 
 
-      Create a LogicalPlan from protobuf bytes.
+      Create a LogicalPlan from serialized protobuf bytes.
+
+      Decoding routes through the session's installed
+      `LogicalExtensionCodec`. Tables created in memory from record
+      batches are currently not supported.
+
+
+
+   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> LogicalPlan
+      :staticmethod:
 
-      Tables created in memory from record batches are currently not supported.
+
+      Deprecated alias for :meth:`from_bytes`.
 
 
 
@@ -1486,11 +1535,22 @@ Package Contents
 
 
 
-   .. py:method:: to_proto() -> bytes
+   .. py:method:: to_bytes(ctx: datafusion.context.SessionContext | None = None) -> bytes
 
-      Convert a LogicalPlan to protobuf bytes.
+      Convert a LogicalPlan to serialized protobuf bytes.
+
+      When ``ctx`` is supplied, encoding routes through the session's
+      installed `LogicalExtensionCodec` so user FFI codecs (registered
+      via :py:meth:`SessionContext.with_logical_extension_codec`) see
+      the encode path. With ``ctx=None`` a default codec is used.
+      Tables created in memory from record batches are currently not
+      supported.
+
+
+
+   .. py:method:: to_proto() -> bytes
 
-      Tables created in memory from record batches are currently not supported.
+      Deprecated alias for :meth:`to_bytes`.
 
 
 
diff --git a/_sources/autoapi/datafusion/plan/index.rst.txt b/_sources/autoapi/datafusion/plan/index.rst.txt
index 3b87b154..2db4c17d 100644
--- a/_sources/autoapi/datafusion/plan/index.rst.txt
+++ b/_sources/autoapi/datafusion/plan/index.rst.txt
@@ -84,13 +84,23 @@ Module Contents
 
 
 
-   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> ExecutionPlan
+   .. py:method:: from_bytes(ctx: datafusion.context.SessionContext, data: bytes) -> ExecutionPlan
       :staticmethod:
 
 
-      Create an ExecutionPlan from protobuf bytes.
+      Create an ExecutionPlan from serialized protobuf bytes.
+
+      Decoding routes through the session's installed
+      `PhysicalExtensionCodec`. Tables created in memory from record
+      batches are currently not supported.
+
+
+
+   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> ExecutionPlan
+      :staticmethod:
+
 
-      Tables created in memory from record batches are currently not supported.
+      Deprecated alias for :meth:`from_bytes`.
 
 
 
@@ -105,11 +115,19 @@ Module Contents
 
 
 
-   .. py:method:: to_proto() -> bytes
+   .. py:method:: to_bytes(ctx: datafusion.context.SessionContext | None = None) -> bytes
+
+      Convert an ExecutionPlan into serialized protobuf bytes.
+
+      When ``ctx`` is supplied, encoding routes through the session's
+      installed `PhysicalExtensionCodec`. Tables created in memory
+      from record batches are currently not supported.
 
-      Convert an ExecutionPlan into protobuf bytes.
 
-      Tables created in memory from record batches are currently not supported.
+
+   .. py:method:: to_proto() -> bytes
+
+      Deprecated alias for :meth:`to_bytes`.
 
 
 
@@ -180,13 +198,23 @@ Module Contents
 
 
 
-   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> LogicalPlan
+   .. py:method:: from_bytes(ctx: datafusion.context.SessionContext, data: bytes) -> LogicalPlan
       :staticmethod:
 
 
-      Create a LogicalPlan from protobuf bytes.
+      Create a LogicalPlan from serialized protobuf bytes.
+
+      Decoding routes through the session's installed
+      `LogicalExtensionCodec`. Tables created in memory from record
+      batches are currently not supported.
+
+
+
+   .. py:method:: from_proto(ctx: datafusion.context.SessionContext, data: bytes) -> LogicalPlan
+      :staticmethod:
+
 
-      Tables created in memory from record batches are currently not supported.
+      Deprecated alias for :meth:`from_bytes`.
 
 
 
@@ -196,11 +224,22 @@ Module Contents
 
 
 
-   .. py:method:: to_proto() -> bytes
+   .. py:method:: to_bytes(ctx: datafusion.context.SessionContext | None = None) -> bytes
+
+      Convert a LogicalPlan to serialized protobuf bytes.
+
+      When ``ctx`` is supplied, encoding routes through the session's
+      installed `LogicalExtensionCodec` so user FFI codecs (registered
+      via :py:meth:`SessionContext.with_logical_extension_codec`) see
+      the encode path. With ``ctx=None`` a default codec is used.
+      Tables created in memory from record batches are currently not
+      supported.
 
-      Convert a LogicalPlan to protobuf bytes.
 
-      Tables created in memory from record batches are currently not supported.
+
+   .. py:method:: to_proto() -> bytes
+
+      Deprecated alias for :meth:`to_bytes`.
 
 
 
diff --git a/autoapi/datafusion/context/index.html b/autoapi/datafusion/context/index.html
index 656c112c..5e4891c7 100644
--- a/autoapi/datafusion/context/index.html
+++ b/autoapi/datafusion/context/index.html
@@ -766,6 +766,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.context.SessionContext.__datafusion_physical_extension_codec__">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         SessionContext.__datafusion_physical_extension_codec__()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.context.SessionContext.__datafusion_task_context_provider__">
        <code class="docutils literal notranslate">
@@ -1333,6 +1342,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.context.SessionContext.with_physical_extension_codec">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         SessionContext.with_physical_extension_codec()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.context.SessionContext.ctx">
        <code class="docutils literal notranslate">
@@ -1930,6 +1948,12 @@ a query against a CSV data source using the <code class="xref py py-class docuti
 <dd><p>Access the PyCapsule FFI_LogicalExtensionCodec.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.context.SessionContext.__datafusion_physical_extension_codec__">
+<span class="sig-name descname"><span class="pre">__datafusion_physical_extension_codec__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#datafusion.context.SessionContext.__datafusion_physical_extension_codec__" title="Link to this definition">¶</a></dt>
+<dd><p>Access the PyCapsule FFI_PhysicalExtensionCodec.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.context.SessionContext.__datafusion_task_context_provider__">
 <span class="sig-name descname"><span class="pre">__datafusion_task_context_provider__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="headerlink" href="#datafusion.context.SessionContext.__datafusion_task_context_provider__" title="Link to this definition">¶</a></dt>
@@ -2937,6 +2961,14 @@ after parsing.</p></li>
 FFI interface.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.context.SessionContext.with_physical_extension_codec">
+<span class="sig-name descname"><span class="pre">with_physical_extension_codec</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">codec</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference inter [...]
+<dd><p>Create a new session context with the specified physical codec.</p>
+<p>This only supports codecs that have been implemented using the
+FFI interface.</p>
+</dd></dl>
+
 <dl class="py attribute">
 <dt class="sig sig-object py" id="datafusion.context.SessionContext.ctx">
 <span class="sig-name descname"><span class="pre">ctx</span></span><a class="headerlink" href="#datafusion.context.SessionContext.ctx" title="Link to this definition">¶</a></dt>
diff --git a/autoapi/datafusion/expr/index.html b/autoapi/datafusion/expr/index.html
index 73a68c49..73d1f488 100644
--- a/autoapi/datafusion/expr/index.html
+++ b/autoapi/datafusion/expr/index.html
@@ -1038,6 +1038,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.from_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.from_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.expr.Expr.from_unixtime">
        <code class="docutils literal notranslate">
@@ -1434,6 +1443,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.expr.Expr.to_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.to_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.expr.Expr.to_hex">
        <code class="docutils literal notranslate">
@@ -3415,6 +3433,14 @@ type of expression, an error will be generated when <code class="docutils litera
 <dd><p>Returns the nearest integer less than or equal to the argument.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.from_bytes">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span cl [...]
+<dd><p>Decode an expression from serialized protobuf bytes.</p>
+<p><code class="docutils literal notranslate"><span class="pre">ctx</span></code> provides the function registry for resolving UDF
+references and the logical codec for in-band Python payloads.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.expr.Expr.from_unixtime">
 <span class="sig-name descname"><span class="pre">from_unixtime</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.expr.Expr.from_unixtime" title="Link to this definition">¶</a></dt>
@@ -3738,6 +3764,15 @@ UTF8View literal, like in:
 <dd><p>Returns the hyperbolic tangent of the argument.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.expr.Expr.to_bytes">
+<span class="sig-name descname"><span class="pre">to_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class="pre">datafusion.context.SessionContext</span></a><span class="w"> </span><span [...]
+<dd><p>Serialize this expression to protobuf bytes.</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">ctx</span></code> is supplied, encoding routes through the session’s
+installed <code class="xref py py-class docutils literal notranslate"><span class="pre">LogicalExtensionCodec</span></code>. Without <code class="docutils literal notranslate"><span class="pre">ctx</span></code> a
+default codec is used.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.expr.Expr.to_hex">
 <span class="sig-name descname"><span class="pre">to_hex</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.expr.Expr" title="datafusion.expr.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.expr.Expr.to_hex" title="Link to this definition">¶</a></dt>
diff --git a/autoapi/datafusion/index.html b/autoapi/datafusion/index.html
index 442ccf05..8492122c 100644
--- a/autoapi/datafusion/index.html
+++ b/autoapi/datafusion/index.html
@@ -904,6 +904,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ExecutionPlan.from_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ExecutionPlan.from_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.ExecutionPlan.from_proto">
        <code class="docutils literal notranslate">
@@ -922,6 +931,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.ExecutionPlan.to_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ExecutionPlan.to_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.ExecutionPlan.to_proto">
        <code class="docutils literal notranslate">
@@ -1547,6 +1565,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.from_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.from_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.Expr.from_unixtime">
        <code class="docutils literal notranslate">
@@ -1943,6 +1970,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.Expr.to_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         Expr.to_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.Expr.to_hex">
        <code class="docutils literal notranslate">
@@ -2190,6 +2226,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.LogicalPlan.from_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         LogicalPlan.from_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.LogicalPlan.from_proto">
        <code class="docutils literal notranslate">
@@ -2208,6 +2253,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.LogicalPlan.to_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         LogicalPlan.to_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.LogicalPlan.to_proto">
        <code class="docutils literal notranslate">
@@ -3803,11 +3857,19 @@ DataFrame has been executed.</p>
 <dd><p>Print an indented form of the physical plan.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.ExecutionPlan.from_bytes">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class [...]
+<dd><p>Create an ExecutionPlan from serialized protobuf bytes.</p>
+<p>Decoding routes through the session’s installed
+<cite>PhysicalExtensionCodec</cite>. Tables created in memory from record
+batches are currently not supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.ExecutionPlan.from_proto">
 <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_proto</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class [...]
-<dd><p>Create an ExecutionPlan from protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.ExecutionPlan.from_bytes" title="datafusion.ExecutionPlan.from_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
@@ -3820,11 +3882,19 @@ execution.  Metric <em>values</em> (such as <code class="docutils literal notran
 meaningful after the DataFrame has been executed.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.ExecutionPlan.to_bytes">
+<span class="sig-name descname"><span class="pre">to_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class="pre">datafusion.context.SessionContext</span></a><span class="w"> </span><span cl [...]
+<dd><p>Convert an ExecutionPlan into serialized protobuf bytes.</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">ctx</span></code> is supplied, encoding routes through the session’s
+installed <cite>PhysicalExtensionCodec</cite>. Tables created in memory
+from record batches are currently not supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.ExecutionPlan.to_proto">
 <span class="sig-name descname"><span class="pre">to_proto</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bytes</span></span></span><a class="headerlink" href="#datafusion.ExecutionPlan.to_proto" title="Link to this definition">¶</a></dt>
-<dd><p>Convert an ExecutionPlan into protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.ExecutionPlan.to_bytes" title="datafusion.ExecutionPlan.to_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">to_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py attribute">
@@ -4298,6 +4368,14 @@ type of expression, an error will be generated when <code class="docutils litera
 <dd><p>Returns the nearest integer less than or equal to the argument.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.from_bytes">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class [...]
+<dd><p>Decode an expression from serialized protobuf bytes.</p>
+<p><code class="docutils literal notranslate"><span class="pre">ctx</span></code> provides the function registry for resolving UDF
+references and the logical codec for in-band Python payloads.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.Expr.from_unixtime">
 <span class="sig-name descname"><span class="pre">from_unixtime</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.Expr.from_unixtime" title="Link to this definition">¶</a></dt>
@@ -4621,6 +4699,15 @@ UTF8View literal, like in:
 <dd><p>Returns the hyperbolic tangent of the argument.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.Expr.to_bytes">
+<span class="sig-name descname"><span class="pre">to_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class="pre">datafusion.context.SessionContext</span></a><span class="w"> </span><span cl [...]
+<dd><p>Serialize this expression to protobuf bytes.</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">ctx</span></code> is supplied, encoding routes through the session’s
+installed <code class="xref py py-class docutils literal notranslate"><span class="pre">LogicalExtensionCodec</span></code>. Without <code class="docutils literal notranslate"><span class="pre">ctx</span></code> a
+default codec is used.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.Expr.to_hex">
 <span class="sig-name descname"><span class="pre">to_hex</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#datafusion.Expr" title="datafusion.Expr"><span class="pre">Expr</span></a></span></span><a class="headerlink" href="#datafusion.Expr.to_hex" title="Link to this definition">¶</a></dt>
@@ -4799,11 +4886,19 @@ using the `DOT</cite> language. This format can be visualized using software fro
 <dd><p>Print an indented form of the schema for the logical plan.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.LogicalPlan.from_bytes">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class [...]
+<dd><p>Create a LogicalPlan from serialized protobuf bytes.</p>
+<p>Decoding routes through the session’s installed
+<cite>LogicalExtensionCodec</cite>. Tables created in memory from record
+batches are currently not supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.LogicalPlan.from_proto">
 <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_proto</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class [...]
-<dd><p>Create a LogicalPlan from protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.LogicalPlan.from_bytes" title="datafusion.LogicalPlan.from_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
@@ -4812,11 +4907,22 @@ using the `DOT</cite> language. This format can be visualized using software fro
 <dd><p>Returns the list of inputs to the logical plan.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.LogicalPlan.to_bytes">
+<span class="sig-name descname"><span class="pre">to_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class="pre">datafusion.context.SessionContext</span></a><span class="w"> </span><span cl [...]
+<dd><p>Convert a LogicalPlan to serialized protobuf bytes.</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">ctx</span></code> is supplied, encoding routes through the session’s
+installed <cite>LogicalExtensionCodec</cite> so user FFI codecs (registered
+via <code class="xref py py-meth docutils literal notranslate"><span class="pre">SessionContext.with_logical_extension_codec()</span></code>) see
+the encode path. With <code class="docutils literal notranslate"><span class="pre">ctx=None</span></code> a default codec is used.
+Tables created in memory from record batches are currently not
+supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.LogicalPlan.to_proto">
 <span class="sig-name descname"><span class="pre">to_proto</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bytes</span></span></span><a class="headerlink" href="#datafusion.LogicalPlan.to_proto" title="Link to this definition">¶</a></dt>
-<dd><p>Convert a LogicalPlan to protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.LogicalPlan.to_bytes" title="datafusion.LogicalPlan.to_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">to_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
diff --git a/autoapi/datafusion/plan/index.html b/autoapi/datafusion/plan/index.html
index 54541ec7..320e8911 100644
--- a/autoapi/datafusion/plan/index.html
+++ b/autoapi/datafusion/plan/index.html
@@ -486,6 +486,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.plan.ExecutionPlan.from_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ExecutionPlan.from_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.plan.ExecutionPlan.from_proto">
        <code class="docutils literal notranslate">
@@ -504,6 +513,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.plan.ExecutionPlan.to_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         ExecutionPlan.to_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.plan.ExecutionPlan.to_proto">
        <code class="docutils literal notranslate">
@@ -596,6 +614,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.plan.LogicalPlan.from_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         LogicalPlan.from_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.plan.LogicalPlan.from_proto">
        <code class="docutils literal notranslate">
@@ -614,6 +641,15 @@
        </code>
       </a>
      </li>
+     <li class="toc-h4 nav-item toc-entry">
+      <a class="reference internal nav-link" href="#datafusion.plan.LogicalPlan.to_bytes">
+       <code class="docutils literal notranslate">
+        <span class="pre">
+         LogicalPlan.to_bytes()
+        </span>
+       </code>
+      </a>
+     </li>
      <li class="toc-h4 nav-item toc-entry">
       <a class="reference internal nav-link" href="#datafusion.plan.LogicalPlan.to_proto">
        <code class="docutils literal notranslate">
@@ -915,11 +951,19 @@ DataFrame has been executed.</p>
 <dd><p>Print an indented form of the physical plan.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.plan.ExecutionPlan.from_bytes">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span cl [...]
+<dd><p>Create an ExecutionPlan from serialized protobuf bytes.</p>
+<p>Decoding routes through the session’s installed
+<cite>PhysicalExtensionCodec</cite>. Tables created in memory from record
+batches are currently not supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.plan.ExecutionPlan.from_proto">
 <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_proto</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span cl [...]
-<dd><p>Create an ExecutionPlan from protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.plan.ExecutionPlan.from_bytes" title="datafusion.plan.ExecutionPlan.from_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
@@ -932,11 +976,19 @@ execution.  Metric <em>values</em> (such as <code class="docutils literal notran
 meaningful after the DataFrame has been executed.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.plan.ExecutionPlan.to_bytes">
+<span class="sig-name descname"><span class="pre">to_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class="pre">datafusion.context.SessionContext</span></a><span class="w"> </span><span [...]
+<dd><p>Convert an ExecutionPlan into serialized protobuf bytes.</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">ctx</span></code> is supplied, encoding routes through the session’s
+installed <cite>PhysicalExtensionCodec</cite>. Tables created in memory
+from record batches are currently not supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.plan.ExecutionPlan.to_proto">
 <span class="sig-name descname"><span class="pre">to_proto</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bytes</span></span></span><a class="headerlink" href="#datafusion.plan.ExecutionPlan.to_proto" title="Link to this definition">¶</a></dt>
-<dd><p>Convert an ExecutionPlan into protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.plan.ExecutionPlan.to_bytes" title="datafusion.plan.ExecutionPlan.to_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">to_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py attribute">
@@ -1003,11 +1055,19 @@ using the `DOT</cite> language. This format can be visualized using software fro
 <dd><p>Print an indented form of the schema for the logical plan.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.plan.LogicalPlan.from_bytes">
+<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span cl [...]
+<dd><p>Create a LogicalPlan from serialized protobuf bytes.</p>
+<p>Decoding routes through the session’s installed
+<cite>LogicalExtensionCodec</cite>. Tables created in memory from record
+batches are currently not supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.plan.LogicalPlan.from_proto">
 <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_proto</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span cl [...]
-<dd><p>Create a LogicalPlan from protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.plan.LogicalPlan.from_bytes" title="datafusion.plan.LogicalPlan.from_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">from_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
@@ -1016,11 +1076,22 @@ using the `DOT</cite> language. This format can be visualized using software fro
 <dd><p>Returns the list of inputs to the logical plan.</p>
 </dd></dl>
 
+<dl class="py method">
+<dt class="sig sig-object py" id="datafusion.plan.LogicalPlan.to_bytes">
+<span class="sig-name descname"><span class="pre">to_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../context/index.html#datafusion.context.SessionContext" title="datafusion.context.SessionContext"><span class="pre">datafusion.context.SessionContext</span></a><span class="w"> </span><span [...]
+<dd><p>Convert a LogicalPlan to serialized protobuf bytes.</p>
+<p>When <code class="docutils literal notranslate"><span class="pre">ctx</span></code> is supplied, encoding routes through the session’s
+installed <cite>LogicalExtensionCodec</cite> so user FFI codecs (registered
+via <code class="xref py py-meth docutils literal notranslate"><span class="pre">SessionContext.with_logical_extension_codec()</span></code>) see
+the encode path. With <code class="docutils literal notranslate"><span class="pre">ctx=None</span></code> a default codec is used.
+Tables created in memory from record batches are currently not
+supported.</p>
+</dd></dl>
+
 <dl class="py method">
 <dt class="sig sig-object py" id="datafusion.plan.LogicalPlan.to_proto">
 <span class="sig-name descname"><span class="pre">to_proto</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bytes</span></span></span><a class="headerlink" href="#datafusion.plan.LogicalPlan.to_proto" title="Link to this definition">¶</a></dt>
-<dd><p>Convert a LogicalPlan to protobuf bytes.</p>
-<p>Tables created in memory from record batches are currently not supported.</p>
+<dd><p>Deprecated alias for <a class="reference internal" href="#datafusion.plan.LogicalPlan.to_bytes" title="datafusion.plan.LogicalPlan.to_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">to_bytes()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
diff --git a/genindex.html b/genindex.html
index c342c80a..afd033ac 100644
--- a/genindex.html
+++ b/genindex.html
@@ -510,6 +510,8 @@
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.AggregateUDFExportable.__datafusion_aggregate_udf__">__datafusion_aggregate_udf__() (datafusion.user_defined.AggregateUDFExportable method)</a>
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.__datafusion_logical_extension_codec__">__datafusion_logical_extension_codec__() (datafusion.context.SessionContext method)</a>
+</li>
+      <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.__datafusion_physical_extension_codec__">__datafusion_physical_extension_codec__() (datafusion.context.SessionContext method)</a>
 </li>
       <li><a href="autoapi/datafusion/user_defined/index.html#datafusion.user_defined.ScalarUDFExportable.__datafusion_scalar_udf__">__datafusion_scalar_udf__() (datafusion.user_defined.ScalarUDFExportable method)</a>
 </li>
@@ -2045,10 +2047,10 @@
         <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.floor">(in module datafusion.functions)</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter.format_html">format_html() (datafusion.dataframe_formatter.DataFrameHtmlFormatter method)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.DataFrameHtmlFormatter.format_str">format_str() (datafusion.dataframe_formatter.DataFrameHtmlFormatter method)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe_formatter/index.html#datafusion.dataframe_formatter.FormatterManager">FormatterManager (class in datafusion.dataframe_formatter)</a>
@@ -2057,6 +2059,20 @@
 </li>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.from_arrow">from_arrow() (datafusion.context.SessionContext method)</a>
 </li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.ExecutionPlan.from_bytes">from_bytes() (datafusion.ExecutionPlan static method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.Expr.from_bytes">(datafusion.Expr static method)</a>
+</li>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.from_bytes">(datafusion.expr.Expr static method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.LogicalPlan.from_bytes">(datafusion.LogicalPlan static method)</a>
+</li>
+        <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.ExecutionPlan.from_bytes">(datafusion.plan.ExecutionPlan static method)</a>
+</li>
+        <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.LogicalPlan.from_bytes">(datafusion.plan.LogicalPlan static method)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/catalog/index.html#datafusion.catalog.Table.from_dataset">from_dataset() (datafusion.catalog.Table static method)</a>
 
       <ul>
@@ -3584,6 +3600,20 @@
       </ul></li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.to_arrow_table">to_arrow_table() (datafusion.dataframe.DataFrame method)</a>
 </li>
+      <li><a href="autoapi/datafusion/index.html#datafusion.ExecutionPlan.to_bytes">to_bytes() (datafusion.ExecutionPlan method)</a>
+
+      <ul>
+        <li><a href="autoapi/datafusion/index.html#datafusion.Expr.to_bytes">(datafusion.Expr method)</a>
+</li>
+        <li><a href="autoapi/datafusion/expr/index.html#datafusion.expr.Expr.to_bytes">(datafusion.expr.Expr method)</a>
+</li>
+        <li><a href="autoapi/datafusion/index.html#datafusion.LogicalPlan.to_bytes">(datafusion.LogicalPlan method)</a>
+</li>
+        <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.ExecutionPlan.to_bytes">(datafusion.plan.ExecutionPlan method)</a>
+</li>
+        <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.LogicalPlan.to_bytes">(datafusion.plan.LogicalPlan method)</a>
+</li>
+      </ul></li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.to_char">to_char() (in module datafusion.functions)</a>
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.to_date">to_date() (in module datafusion.functions)</a>
@@ -3606,6 +3636,8 @@
 </li>
       <li><a href="autoapi/datafusion/functions/index.html#datafusion.functions.to_local_time">to_local_time() (in module datafusion.functions)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.to_pandas">to_pandas() (datafusion.dataframe.DataFrame method)</a>
 </li>
       <li><a href="autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.to_polars">to_polars() (datafusion.dataframe.DataFrame method)</a>
@@ -3620,8 +3652,6 @@
         <li><a href="autoapi/datafusion/plan/index.html#datafusion.plan.LogicalPlan.to_proto">(datafusion.plan.LogicalPlan method)</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/record_batch/index.html#datafusion.record_batch.RecordBatch.to_pyarrow">to_pyarrow() (datafusion.record_batch.RecordBatch method)</a>
 
       <ul>
@@ -3964,14 +3994,14 @@
         <li><a href="autoapi/datafusion/options/index.html#datafusion.options.CsvReadOptions.with_file_sort_order">(datafusion.options.CsvReadOptions method)</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/context/index.html#datafusion.context.RuntimeEnvBuilder.with_greedy_memory_pool">with_greedy_memory_pool() (datafusion.context.RuntimeEnvBuilder method)</a>
 
       <ul>
         <li><a href="autoapi/datafusion/index.html#datafusion.RuntimeEnvBuilder.with_greedy_memory_pool">(datafusion.RuntimeEnvBuilder method)</a>
 </li>
       </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="autoapi/datafusion/index.html#datafusion.CsvReadOptions.with_has_header">with_has_header() (datafusion.CsvReadOptions method)</a>
 
       <ul>
@@ -4004,6 +4034,8 @@
         <li><a href="autoapi/datafusion/index.html#datafusion.SessionConfig.with_parquet_pruning">(datafusion.SessionConfig method)</a>
 </li>
       </ul></li>
+      <li><a href="autoapi/datafusion/context/index.html#datafusion.context.SessionContext.with_physical_extension_codec">with_physical_extension_codec() (datafusion.context.SessionContext method)</a>
+</li>
       <li><a href="autoapi/datafusion/unparser/index.html#datafusion.unparser.Unparser.with_pretty">with_pretty() (datafusion.unparser.Unparser method)</a>
 </li>
       <li><a href="autoapi/datafusion/index.html#datafusion.CsvReadOptions.with_quote">with_quote() (datafusion.CsvReadOptions method)</a>
diff --git a/objects.inv b/objects.inv
index f5d925fd..ebaa9029 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/searchindex.js b/searchindex.js
index f2b6dd74..8bc01188 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"API Reference": [[18, null], [36, "api-reference"]], "Additional Resources": [[38, "additional-resources"]], "Aggregate Functions": [[24, "aggregate-functions"], [31, "aggregate-functions"], [33, "aggregate-functions"]], "Aggregated vs Per-Partition Metrics": [[36, "aggregated-vs-per-partition-metrics"]], "Aggregation": [[24, null]], "Alternative Approach": [[19, "alternative-approach"]], "Apache Iceberg": [[35, "apache-iceberg"]], "Arrays": [[26, "arrays" [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"API Reference": [[18, null], [36, "api-reference"]], "Additional Resources": [[38, "additional-resources"]], "Aggregate Functions": [[24, "aggregate-functions"], [31, "aggregate-functions"], [33, "aggregate-functions"]], "Aggregated vs Per-Partition Metrics": [[36, "aggregated-vs-per-partition-metrics"]], "Aggregation": [[24, null]], "Alternative Approach": [[19, "alternative-approach"]], "Apache Iceberg": [[35, "apache-iceberg"]], "Arrays": [[26, "arrays" [...]
\ No newline at end of file
diff --git a/user-guide/common-operations/aggregations.html b/user-guide/common-operations/aggregations.html
index 8943616e..1bc16c02 100644
--- a/user-guide/common-operations/aggregations.html
+++ b/user-guide/common-operations/aggregations.html
@@ -652,15 +652,15 @@ Pokemon set. Since there will be many entries of <code class="docutils literal n
 <span class="o">+----------+--------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="n">List</span>                                      <span class="o">|</span>
 <span class="o">+----------+--------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="p">]</span>                        <span class="o">|</span>
-<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Steel</span><span class="p">,</span> <span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Ground</span><span class="p">,</span> <span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Fairy</span>    <span class="o">|</span> <span class="p">[]</span>                                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Fairy</span><span class="p">,</span> <span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="p">,</span> <span class="n">Fairy</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
-<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Dragon</span><span class="p">,</span> <span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Fighting</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="p">]</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                              <span class="o">|</span>
+<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Dragon</span><span class="p">,</span> <span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Ice</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span> <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ground</span>   <span class="o">|</span> <span class="p">[,</span> <span class="n">Rock</span><span class="p">]</span>                                         <span class="o">|</span>
 <span class="o">+----------+--------------------------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
@@ -676,15 +676,15 @@ entries entirely removed. The second is we can use the <code class="docutils lit
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="n">List</span>                                    <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                        <span class="o">|</span>
-<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Ground</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Steel</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Grass</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Fairy</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
+<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                              <span class="o">|</span>
 <span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Dragon</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span> <span class="o">|</span>
-<span class="o">|</span> <span class="n">Rock</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Ground</span><span class="p">,</span> <span class="n">Water</span><span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Ice</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">,</span> <span class="n">Dark</span><span class="p">]</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Rock</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Water</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Ground</span><span class="p">]</span>                        <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ghost</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">]</span>                                       <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
@@ -695,15 +695,15 @@ entries entirely removed. The second is we can use the <code class="docutils lit
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">Type</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">Type</span> <span class="mi">2</span> <span class="n">List</span>                                    <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
-<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Grass</span><span class="p">]</span>                        <span class="o">|</span>
+<span class="o">|</span> <span class="n">Bug</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Grass</span><span class="p">,</span> <span class="n">Poison</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                        <span class="o">|</span>
 <span class="o">|</span> <span class="n">Poison</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Ground</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
 <span class="o">|</span> <span class="n">Electric</span> <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Steel</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Fairy</span>    <span class="o">|</span>                                                <span class="o">|</span>
-<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Fairy</span><span class="p">]</span>                                <span class="o">|</span>
+<span class="o">|</span> <span class="n">Normal</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Fairy</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                                <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ice</span>      <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">]</span>                              <span class="o">|</span>
-<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Dragon</span><span class="p">,</span> <span class="n">Flying</span><span class="p">]</span>                               <span class="o">|</span>
-<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Ice</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span> <span class="o">|</span>
+<span class="o">|</span> <span class="n">Grass</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Psychic</span><span class="p">,</span> <span class="n">Poison</span><span class="p">]</span>                              <span class="o">|</span>
+<span class="o">|</span> <span class="n">Fire</span>     <span class="o">|</span> <span class="p">[</span><span class="n">Flying</span><span class="p">,</span> <span class="n">Dragon</span><span class="p">]</span>                               <span class="o">|</span>
+<span class="o">|</span> <span class="n">Water</span>    <span class="o">|</span> <span class="p">[</span><span class="n">Poison</span><span class="p">,</span> <span class="n">Ice</span><span class="p">,</span> <span class="n">Dark</span><span class="p">,</span> <span class="n">Psychic</span><span class="p">,</span> <span class="n">Flying</span><span class="p">,</span> <span class="n">Fighting</span><span class="p">]</span> <span class="o">|</span>
 <span class="o">|</span> <span class="n">Ground</span>   <span class="o">|</span> <span class="p">[</span><span class="n">Rock</span><span class="p">]</span>                                         <span class="o">|</span>
 <span class="o">+----------+------------------------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
diff --git a/user-guide/common-operations/basic-info.html b/user-guide/common-operations/basic-info.html
index 80ef273f..d7f1e3ca 100644
--- a/user-guide/common-operations/basic-info.html
+++ b/user-guide/common-operations/basic-info.html
@@ -461,11 +461,11 @@
 <span class="o">+-----+---------+--------+--------+</span>
 <span class="o">|</span> <span class="n">nrs</span> <span class="o">|</span> <span class="n">names</span>   <span class="o">|</span> <span class="n">random</span> <span class="o">|</span> <span class="n">groups</span> <span class="o">|</span>
 <span class="o">+-----+---------+--------+--------+</span>
-<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span>  <span class="o">|</span> <span class="mi">532</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>    <span class="o">|</span> <span class="mi">983</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">3</span>   <span class="o">|</span> <span class="n">java</span>    <span class="o">|</span> <span class="mi">222</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">4</span>   <span class="o">|</span> <span class="n">haskell</span> <span class="o">|</span> <span class="mi">485</span>    <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">5</span>   <span class="o">|</span> <span class="n">go</span>      <span class="o">|</span> <span class="mi">180</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span>  <span class="o">|</span> <span class="mi">22</span>     <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>    <span class="o">|</span> <span class="mi">500</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">3</span>   <span class="o">|</span> <span class="n">java</span>    <span class="o">|</span> <span class="mi">357</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">4</span>   <span class="o">|</span> <span class="n">haskell</span> <span class="o">|</span> <span class="mi">756</span>    <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">5</span>   <span class="o">|</span> <span class="n">go</span>      <span class="o">|</span> <span class="mi">374</span>    <span class="o">|</span> <span class="n">B</span>      <span class="o">|</span>
 <span class="o">+-----+---------+--------+--------+</span>
 </pre></div>
 </div>
@@ -476,8 +476,8 @@
 <span class="o">+-----+--------+--------+--------+</span>
 <span class="o">|</span> <span class="n">nrs</span> <span class="o">|</span> <span class="n">names</span>  <span class="o">|</span> <span class="n">random</span> <span class="o">|</span> <span class="n">groups</span> <span class="o">|</span>
 <span class="o">+-----+--------+--------+--------+</span>
-<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span> <span class="o">|</span> <span class="mi">532</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>   <span class="o">|</span> <span class="mi">983</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">1</span>   <span class="o">|</span> <span class="n">python</span> <span class="o">|</span> <span class="mi">22</span>     <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2</span>   <span class="o">|</span> <span class="n">ruby</span>   <span class="o">|</span> <span class="mi">500</span>    <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
 <span class="o">+-----+--------+--------+--------+</span>
 </pre></div>
 </div>
@@ -495,28 +495,28 @@ passing them to an Arrow table, and then converting them to a pandas DataFrame.<
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">8</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">to_pandas</span><span class="p">()</span>
 <span class="n">Out</span><span class="p">[</span><span class="mi">8</span><span class="p">]:</span> 
    <span class="n">nrs</span>    <span class="n">names</span>  <span class="n">random</span> <span class="n">groups</span>
-<span class="mi">0</span>    <span class="mi">1</span>   <span class="n">python</span>     <span class="mi">532</span>      <span class="n">A</span>
-<span class="mi">1</span>    <span class="mi">2</span>     <span class="n">ruby</span>     <span class="mi">983</span>      <span class="n">A</span>
-<span class="mi">2</span>    <span class="mi">3</span>     <span class="n">java</span>     <span class="mi">222</span>      <span class="n">B</span>
-<span class="mi">3</span>    <span class="mi">4</span>  <span class="n">haskell</span>     <span class="mi">485</span>      <span class="n">C</span>
-<span class="mi">4</span>    <span class="mi">5</span>       <span class="n">go</span>     <span class="mi">180</span>      <span class="n">B</span>
+<span class="mi">0</span>    <span class="mi">1</span>   <span class="n">python</span>      <span class="mi">22</span>      <span class="n">A</span>
+<span class="mi">1</span>    <span class="mi">2</span>     <span class="n">ruby</span>     <span class="mi">500</span>      <span class="n">A</span>
+<span class="mi">2</span>    <span class="mi">3</span>     <span class="n">java</span>     <span class="mi">357</span>      <span class="n">B</span>
+<span class="mi">3</span>    <span class="mi">4</span>  <span class="n">haskell</span>     <span class="mi">756</span>      <span class="n">C</span>
+<span class="mi">4</span>    <span class="mi">5</span>       <span class="n">go</span>     <span class="mi">374</span>      <span class="n">B</span>
 </pre></div>
 </div>
 <p><a class="reference internal" href="../../autoapi/datafusion/dataframe/index.html#datafusion.dataframe.DataFrame.describe" title="datafusion.dataframe.DataFrame.describe"><code class="xref py py-func docutils literal notranslate"><span class="pre">describe()</span></code></a> shows a quick statistic summary of your data:</p>
 <div class="highlight-ipython notranslate"><div class="highlight"><pre><span></span><span class="n">In</span> <span class="p">[</span><span class="mi">9</span><span class="p">]:</span> <span class="n">df</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span>
 <span class="n">Out</span><span class="p">[</span><span class="mi">9</span><span class="p">]:</span> 
 <span class="n">DataFrame</span><span class="p">()</span>
-<span class="o">+------------+--------------------+-------+--------------------+--------+</span>
-<span class="o">|</span> <span class="n">describe</span>   <span class="o">|</span> <span class="n">nrs</span>                <span class="o">|</span> <span class="n">names</span> <span class="o">|</span> <span class="n">random</span>             <span class="o">|</span> <span class="n">groups</span> <span class="o">|</span>
-<span class="o">+------------+--------------------+-------+--------------------+--------+</span>
-<span class="o">|</span> <span class="n">count</span>      <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="mi">5</span>     <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="mi">5</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="n">null_count</span> <span class="o">|</span> <span class="mf">0.0</span>                <span class="o">|</span> <span class="mi">0</span>     <span class="o">|</span> <span class="mf">0.0</span>                <span class="o">|</span> <span class="mi">0</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="n">mean</span>       <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">480.4</span>              <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="n">std</span>        <span class="o">|</span> <span class="mf">1.5811388300841898</span> <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">321.05342234587687</span> <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
-<span class="o">|</span> <span class="nb">min</span>        <span class="o">|</span> <span class="mf">1.0</span>                <span class="o">|</span> <span class="n">go</span>    <span class="o">|</span> <span class="mf">180.0</span>              <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="nb">max</span>        <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="n">ruby</span>  <span class="o">|</span> <span class="mf">983.0</span>              <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
-<span class="o">|</span> <span class="n">median</span>     <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">485.0</span>              <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
-<span class="o">+------------+--------------------+-------+--------------------+--------+</span>
+<span class="o">+------------+--------------------+-------+-------------------+--------+</span>
+<span class="o">|</span> <span class="n">describe</span>   <span class="o">|</span> <span class="n">nrs</span>                <span class="o">|</span> <span class="n">names</span> <span class="o">|</span> <span class="n">random</span>            <span class="o">|</span> <span class="n">groups</span> <span class="o">|</span>
+<span class="o">+------------+--------------------+-------+-------------------+--------+</span>
+<span class="o">|</span> <span class="n">count</span>      <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="mi">5</span>     <span class="o">|</span> <span class="mf">5.0</span>               <span class="o">|</span> <span class="mi">5</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="n">null_count</span> <span class="o">|</span> <span class="mf">0.0</span>                <span class="o">|</span> <span class="mi">0</span>     <span class="o">|</span> <span class="mf">0.0</span>               <span class="o">|</span> <span class="mi">0</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="n">mean</span>       <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">401.8</span>             <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
+<span class="o">|</span> <span class="n">std</span>        <span class="o">|</span> <span class="mf">1.5811388300841898</span> <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">265.5789901328793</span> <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
+<span class="o">|</span> <span class="nb">min</span>        <span class="o">|</span> <span class="mf">1.0</span>                <span class="o">|</span> <span class="n">go</span>    <span class="o">|</span> <span class="mf">22.0</span>              <span class="o">|</span> <span class="n">A</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="nb">max</span>        <span class="o">|</span> <span class="mf">5.0</span>                <span class="o">|</span> <span class="n">ruby</span>  <span class="o">|</span> <span class="mf">756.0</span>             <span class="o">|</span> <span class="n">C</span>      <span class="o">|</span>
+<span class="o">|</span> <span class="n">median</span>     <span class="o">|</span> <span class="mf">3.0</span>                <span class="o">|</span> <span class="n">null</span>  <span class="o">|</span> <span class="mf">374.0</span>             <span class="o">|</span> <span class="n">null</span>   <span class="o">|</span>
+<span class="o">+------------+--------------------+-------+-------------------+--------+</span>
 </pre></div>
 </div>
 </section>
diff --git a/user-guide/common-operations/functions.html b/user-guide/common-operations/functions.html
index a39f9380..1b790d15 100644
--- a/user-guide/common-operations/functions.html
+++ b/user-guide/common-operations/functions.html
@@ -571,16 +571,16 @@ In here we will cover some of the more popular use cases. If you want to view al
 <span class="o">+-------------------------------+</span>
 <span class="o">|</span> <span class="n">now</span><span class="p">()</span>                         <span class="o">|</span>
 <span class="o">+-------------------------------+</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
-<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">13</span><span class="n">T16</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mf">10.354563027</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
+<span class="o">|</span> <span class="mi">2026</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">15</span><span class="n">T13</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mf">54.167865203</span> <span class="o">|</span>
 <span class="o">+-------------------------------+</span>
 <span class="n">Data</span> <span class="n">truncated</span><span class="o">.</span>
 </pre></div>
diff --git a/user-guide/common-operations/udf-and-udfa.html b/user-guide/common-operations/udf-and-udfa.html
index 830e02d3..d41ec481 100644
--- a/user-guide/common-operations/udf-and-udfa.html
+++ b/user-guide/common-operations/udf-and-udfa.html
@@ -644,7 +644,7 @@ over column references and literals, so the optimizer can analyze it:</p>
 <span class="n">In</span> <span class="p">[</span><span class="mi">29</span><span class="p">]:</span> <span class="nb">print</span><span class="p">(</span><span class="n">native_filtered</span><span class="o">.</span><span class="n">execution_plan</span><span class="p">()</span><span class="o">.</span><span class="n">display_indent</span><span class="p">())</span>
 <span class="n">FilterExec</span><span class="p">:</span> <span class="n">brand</span><span class="o">@</span><span class="mi">1</span> <span class="o">=</span> <span class="n">A</span> <span class="n">AND</span> <span class="n">qty</span><span class="o">@</span><span class="mi">2</span> <span class="o">&gt;=</span> <span class="mi">150</span>
   <span class="n">RepartitionExec</span><span class="p">:</span> <span class="n">partitioning</span><span class="o">=</span><span class="n">RoundRobinBatch</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span> <span class="n">input_partitions</span><span class="o">=</span><span class="mi">1</span>
-    <span class="n">DataSourceExec</span><span class="p">:</span> <span class="n">file_groups</span><span class="o">=</span><span class="p">{</span><span class="mi">1</span> <span class="n">group</span><span class="p">:</span> <span class="p">[[</span><span class="n">tmp</span><span class="o">/</span><span class="n">tmplel6lyzi</span><span class="o">/</span><span class="n">items</span><span class="o">.</span><span class="n">parquet</span><span class="p">]]},</span> <span class="n">projec [...]
+    <span class="n">DataSourceExec</span><span class="p">:</span> <span class="n">file_groups</span><span class="o">=</span><span class="p">{</span><span class="mi">1</span> <span class="n">group</span><span class="p">:</span> <span class="p">[[</span><span class="n">tmp</span><span class="o">/</span><span class="n">tmp858wzw3d</span><span class="o">/</span><span class="n">items</span><span class="o">.</span><span class="n">parquet</span><span class="p">]]},</span> <span class="n">projec [...]
 </pre></div>
 </div>
 <p>Notice the <code class="docutils literal notranslate"><span class="pre">DataSourceExec</span></code> line. It carries three annotations the
@@ -677,7 +677,7 @@ bloom filter or dictionary is available to skip pages.</p></li>
 <span class="n">In</span> <span class="p">[</span><span class="mi">33</span><span class="p">]:</span> <span class="nb">print</span><span class="p">(</span><span class="n">udf_filtered</span><span class="o">.</span><span class="n">execution_plan</span><span class="p">()</span><span class="o">.</span><span class="n">display_indent</span><span class="p">())</span>
 <span class="n">FilterExec</span><span class="p">:</span> <span class="n">brand_qty_filter</span><span class="p">(</span><span class="n">CAST</span><span class="p">(</span><span class="n">brand</span><span class="o">@</span><span class="mi">1</span> <span class="n">AS</span> <span class="n">Utf8</span><span class="p">),</span> <span class="n">qty</span><span class="o">@</span><span class="mi">2</span><span class="p">)</span>
   <span class="n">RepartitionExec</span><span class="p">:</span> <span class="n">partitioning</span><span class="o">=</span><span class="n">RoundRobinBatch</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span> <span class="n">input_partitions</span><span class="o">=</span><span class="mi">1</span>
-    <span class="n">DataSourceExec</span><span class="p">:</span> <span class="n">file_groups</span><span class="o">=</span><span class="p">{</span><span class="mi">1</span> <span class="n">group</span><span class="p">:</span> <span class="p">[[</span><span class="n">tmp</span><span class="o">/</span><span class="n">tmplel6lyzi</span><span class="o">/</span><span class="n">items</span><span class="o">.</span><span class="n">parquet</span><span class="p">]]},</span> <span class="n">projec [...]
+    <span class="n">DataSourceExec</span><span class="p">:</span> <span class="n">file_groups</span><span class="o">=</span><span class="p">{</span><span class="mi">1</span> <span class="n">group</span><span class="p">:</span> <span class="p">[[</span><span class="n">tmp</span><span class="o">/</span><span class="n">tmp858wzw3d</span><span class="o">/</span><span class="n">items</span><span class="o">.</span><span class="n">parquet</span><span class="p">]]},</span> <span class="n">projec [...]
 </pre></div>
 </div>
 <p>The <code class="docutils literal notranslate"><span class="pre">DataSourceExec</span></code> now carries only <code class="docutils literal notranslate"><span class="pre">predicate=brand_qty_filter(...)</span></code>.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org