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

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new ec725e3ab6 Publish built docs triggered by 
41e7aed3a943134c40d1b18cb9d424b358b5e5b1
ec725e3ab6 is described below

commit ec725e3ab621fb1461a271b5bdfd0f2bbfe1099b
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Sat Mar 15 12:19:55 2025 +0000

    Publish built docs triggered by 41e7aed3a943134c40d1b18cb9d424b358b5e5b1
---
 _sources/user-guide/sql/explain.md.txt | 232 ++++++++++++++++++++++++---
 searchindex.js                         |   2 +-
 user-guide/sql/explain.html            | 280 ++++++++++++++++++++++++++++++---
 user-guide/sql/index.html              |   5 +-
 4 files changed, 468 insertions(+), 51 deletions(-)

diff --git a/_sources/user-guide/sql/explain.md.txt 
b/_sources/user-guide/sql/explain.md.txt
index 3f2c7de43e..f89e854ebf 100644
--- a/_sources/user-guide/sql/explain.md.txt
+++ b/_sources/user-guide/sql/explain.md.txt
@@ -21,41 +21,227 @@
 
 The `EXPLAIN` command shows the logical and physical execution plan for the 
specified SQL statement.
 
-See the [Reading Explain Plans](../explain-usage.md) page for more information 
on how to interpret these plans.
+## Syntax
 
 <pre>
-EXPLAIN [ANALYZE] [VERBOSE] statement
+EXPLAIN [ANALYZE] [VERBOSE] [FORMAT format] statement
 </pre>
 
-## EXPLAIN
+## `EXPLAIN`
 
 Shows the execution plan of a statement.
 If you need more detailed output, use `EXPLAIN VERBOSE`.
+Note that `EXPLAIN VERBOSE` only supports the `indent` format.
+
+The optional `[FORMAT format]` clause controls how the plan is displayed as
+explained below. If this clause is not specified, the plan is displayed using
+the format from the [configuration value] `datafusion.explain.format`.
+
+[configuration value]: ../configs.md
+
+### `indent` format (default)
+
+The `indent` format shows both the logical and physical plan, with one line for
+each operator in the plan. Child plans are indented to show the hierarchy.
+
+See [Reading Explain Plans](../explain-usage.md) for more information on how 
to interpret these plans.
+
+```sql
+> CREATE TABLE t(x int, b int) AS VALUES (1, 2), (2, 3);
+0 row(s) fetched.
+Elapsed 0.004 seconds.
+
+> EXPLAIN SELECT SUM(x) FROM t GROUP BY b;
++---------------+-------------------------------------------------------------------------------+
+| plan_type     | plan                                                         
                 |
++---------------+-------------------------------------------------------------------------------+
+| logical_plan  | Projection: sum(t.x)                                         
                 |
+|               |   Aggregate: groupBy=[[t.b]], aggr=[[sum(CAST(t.x AS 
Int64))]]                |
+|               |     TableScan: t projection=[x, b]                           
                 |
+| physical_plan | ProjectionExec: expr=[sum(t.x)@1 as sum(t.x)]                
                 |
+|               |   AggregateExec: mode=FinalPartitioned, gby=[b@0 as b], 
aggr=[sum(t.x)]       |
+|               |     CoalesceBatchesExec: target_batch_size=8192              
                 |
+|               |       RepartitionExec: partitioning=Hash([b@0], 16), 
input_partitions=16      |
+|               |         RepartitionExec: partitioning=RoundRobinBatch(16), 
input_partitions=1 |
+|               |           AggregateExec: mode=Partial, gby=[b@1 as b], 
aggr=[sum(t.x)]        |
+|               |             DataSourceExec: partitions=1, 
partition_sizes=[1]                 |
+|               |                                                              
                 |
++---------------+-------------------------------------------------------------------------------+
+2 row(s) fetched.
+Elapsed 0.004 seconds.
+```
+
+### `tree` format
+
+The `tree` format is modeled after [DuckDB plans] and is designed to be easier
+to see the high level structure of the plan
+
+[duckdb plans]: https://duckdb.org/docs/stable/guides/meta/explain.html
+
+```sql
+> EXPLAIN FORMAT TREE SELECT SUM(x) FROM t GROUP BY b;
++---------------+-------------------------------+
+| plan_type     | plan                          |
++---------------+-------------------------------+
+| physical_plan | ┌───────────────────────────┐ |
+|               | │       ProjectionExec      │ |
+|               | │    --------------------   │ |
+|               | │    sum(t.x): sum(t.x)@1   │ |
+|               | └─────────────┬─────────────┘ |
+|               | ┌─────────────┴─────────────┐ |
+|               | │       AggregateExec       │ |
+|               | │    --------------------   │ |
+|               | │       aggr: sum(t.x)      │ |
+|               | │     group_by: b@0 as b    │ |
+|               | │                           │ |
+|               | │           mode:           │ |
+|               | │      FinalPartitioned     │ |
+|               | └─────────────┬─────────────┘ |
+|               | ┌─────────────┴─────────────┐ |
+|               | │    CoalesceBatchesExec    │ |
+|               | └─────────────┬─────────────┘ |
+|               | ┌─────────────┴─────────────┐ |
+|               | │      RepartitionExec      │ |
+|               | │    --------------------   │ |
+|               | │  output_partition_count:  │ |
+|               | │             16            │ |
+|               | │                           │ |
+|               | │    partitioning_scheme:   │ |
+|               | │      Hash([b@0], 16)      │ |
+|               | └─────────────┬─────────────┘ |
+|               | ┌─────────────┴─────────────┐ |
+|               | │      RepartitionExec      │ |
+|               | │    --------------------   │ |
+|               | │  output_partition_count:  │ |
+|               | │             1             │ |
+|               | │                           │ |
+|               | │    partitioning_scheme:   │ |
+|               | │    RoundRobinBatch(16)    │ |
+|               | └─────────────┬─────────────┘ |
+|               | ┌─────────────┴─────────────┐ |
+|               | │       AggregateExec       │ |
+|               | │    --------------------   │ |
+|               | │       aggr: sum(t.x)      │ |
+|               | │     group_by: b@1 as b    │ |
+|               | │       mode: Partial       │ |
+|               | └─────────────┬─────────────┘ |
+|               | ┌─────────────┴─────────────┐ |
+|               | │       DataSourceExec      │ |
+|               | │    --------------------   │ |
+|               | │         bytes: 224        │ |
+|               | │       format: memory      │ |
+|               | │          rows: 1          │ |
+|               | └───────────────────────────┘ |
+|               |                               |
++---------------+-------------------------------+
+1 row(s) fetched.
+Elapsed 0.016 seconds.
+```
+
+### `pgjson` format
+
+The `pgjson` format is modeled after [Postgres JSON] format.
+
+You can use this format to visualize the plan in existing plan visualization
+tools, such as [dalibo]
+
+[postgres json]: https://www.postgresql.org/docs/current/sql-explain.html
+[dalibo]: https://explain.dalibo.com/
+
+```sql
+> EXPLAIN FORMAT PGJSON SELECT SUM(x) FROM t GROUP BY b;
++--------------+----------------------------------------------------+
+| plan_type    | plan                                               |
++--------------+----------------------------------------------------+
+| logical_plan | [                                                  |
+|              |   {                                                |
+|              |     "Plan": {                                      |
+|              |       "Expressions": [                             |
+|              |         "sum(t.x)"                                 |
+|              |       ],                                           |
+|              |       "Node Type": "Projection",                   |
+|              |       "Output": [                                  |
+|              |         "sum(t.x)"                                 |
+|              |       ],                                           |
+|              |       "Plans": [                                   |
+|              |         {                                          |
+|              |           "Aggregates": "sum(CAST(t.x AS Int64))", |
+|              |           "Group By": "t.b",                       |
+|              |           "Node Type": "Aggregate",                |
+|              |           "Output": [                              |
+|              |             "b",                                   |
+|              |             "sum(t.x)"                             |
+|              |           ],                                       |
+|              |           "Plans": [                               |
+|              |             {                                      |
+|              |               "Node Type": "TableScan",            |
+|              |               "Output": [                          |
+|              |                 "x",                               |
+|              |                 "b"                                |
+|              |               ],                                   |
+|              |               "Plans": [],                         |
+|              |               "Relation Name": "t"                 |
+|              |             }                                      |
+|              |           ]                                        |
+|              |         }                                          |
+|              |       ]                                            |
+|              |     }                                              |
+|              |   }                                                |
+|              | ]                                                  |
++--------------+----------------------------------------------------+
+1 row(s) fetched.
+Elapsed 0.008 seconds.
+```
+
+### `graphviz` format
+
+The `graphviz` format uses the [DOT language] that can be used with [Graphviz] 
to
+generate a visual representation of the plan.
+
+[dot language]: https://graphviz.org/doc/info/lang.html
+[graphviz]: https://graphviz.org/
 
 ```sql
-EXPLAIN SELECT SUM(x) FROM table GROUP BY b;
-
-+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| plan_type     | plan                                                         
                                                                                
                  |
-+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| logical_plan  | Projection: #SUM(table.x)                                    
                                                                                
                    |
-|               |   Aggregate: groupBy=[[#table.b]], aggr=[[SUM(#table.x)]]    
                                                                                
                      |
-|               |     TableScan: table projection=[x, b]                       
                                                                                
                    |
-| physical_plan | ProjectionExec: expr=[SUM(table.x)@1 as SUM(table.x)]        
                                                                                
                      |
-|               |   AggregateExec: mode=FinalPartitioned, gby=[b@0 as b], 
aggr=[SUM(table.x)]                                                             
                         |
-|               |     CoalesceBatchesExec: target_batch_size=4096              
                                                                                
                  |
-|               |       RepartitionExec: partitioning=Hash([Column { name: 
"b", index: 0 }], 16)                                                           
                      |
-|               |         AggregateExec: mode=Partial, gby=[b@1 as b], 
aggr=[SUM(table.x)]                                                             
                            |
-|               |           RepartitionExec: partitioning=RoundRobinBatch(16)  
                                                                                
                  |
-|               |             DataSourceExec: file_groups={1 group: 
[[/tmp/table.csv]]}, projection=[x, b], has_header=false                        
                    |
-|               |                                                              
                                                                                
                  |
-+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+> EXPLAIN FORMAT GRAPHVIZ SELECT SUM(x) FROM t GROUP BY b;
++--------------+------------------------------------------------------------------------------------------------------------------------------+
+| plan_type    | plan                                                          
                                                               |
++--------------+------------------------------------------------------------------------------------------------------------------------------+
+| logical_plan |                                                               
                                                               |
+|              | // Begin DataFusion GraphViz Plan,                            
                                                               |
+|              | // display it online here: 
https://dreampuf.github.io/GraphvizOnline                                       
                  |
+|              |                                                               
                                                               |
+|              | digraph {                                                     
                                                               |
+|              |   subgraph cluster_1                                          
                                                               |
+|              |   {                                                           
                                                               |
+|              |     graph[label="LogicalPlan"]                                
                                                               |
+|              |     2[shape=box label="Projection: sum(t.x)"]                 
                                                               |
+|              |     3[shape=box label="Aggregate: groupBy=[[t.b]], 
aggr=[[sum(CAST(t.x AS Int64))]]"]                                        |
+|              |     2 -> 3 [arrowhead=none, arrowtail=normal, dir=back]       
                                                               |
+|              |     4[shape=box label="TableScan: t projection=[x, b]"]       
                                                               |
+|              |     3 -> 4 [arrowhead=none, arrowtail=normal, dir=back]       
                                                               |
+|              |   }                                                           
                                                               |
+|              |   subgraph cluster_5                                          
                                                               |
+|              |   {                                                           
                                                               |
+|              |     graph[label="Detailed LogicalPlan"]                       
                                                               |
+|              |     6[shape=box label="Projection: sum(t.x)\nSchema: 
[sum(t.x):Int64;N]"]                                                    |
+|              |     7[shape=box label="Aggregate: groupBy=[[t.b]], 
aggr=[[sum(CAST(t.x AS Int64))]]\nSchema: [b:Int32;N, sum(t.x):Int64;N]"] |
+|              |     6 -> 7 [arrowhead=none, arrowtail=normal, dir=back]       
                                                               |
+|              |     8[shape=box label="TableScan: t projection=[x, 
b]\nSchema: [x:Int32;N, b:Int32;N]"]                                      |
+|              |     7 -> 8 [arrowhead=none, arrowtail=normal, dir=back]       
                                                               |
+|              |   }                                                           
                                                               |
+|              | }                                                             
                                                               |
+|              | // End DataFusion GraphViz Plan                               
                                                               |
+|              |                                                               
                                                               |
++--------------+------------------------------------------------------------------------------------------------------------------------------+
+1 row(s) fetched.
+Elapsed 0.010 seconds.
 ```
 
-## EXPLAIN ANALYZE
+## `EXPLAIN ANALYZE`
 
-Shows the execution plan and metrics of a statement.
-If you need more information output, use `EXPLAIN ANALYZE VERBOSE`.
+Shows the execution plan and metrics of a statement. If you need more
+information output, use `EXPLAIN ANALYZE VERBOSE`. Note that `EXPLAIN ANALYZE`
+only supports the `indent` format.
 
 ```sql
 EXPLAIN ANALYZE SELECT SUM(x) FROM table GROUP BY b;
diff --git a/searchindex.js b/searchindex.js
index db30d4cd7b..860af7148c 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"!=":[[52,"op-neq"]],"!~":[[52,"op-re-not-match"]],"!~*":[[52,"op-re-not-match-i"]],"!~~":[[52,"id19"]],"!~~*":[[52,"id20"]],"#":[[52,"op-bit-xor"]],"%":[[52,"op-modulo"]],"&":[[52,"op-bit-and"]],"(relation,
 name) tuples in logical fields and logical columns are 
unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[52,"op-multiply"]],"+":[[52,"op-plus"]],"-":[[52,"op-minus"]],"/":[[52,"op-divide"]],"2022
 Q2":[[10,"q2"]] [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"!=":[[52,"op-neq"]],"!~":[[52,"op-re-not-match"]],"!~*":[[52,"op-re-not-match-i"]],"!~~":[[52,"id19"]],"!~~*":[[52,"id20"]],"#":[[52,"op-bit-xor"]],"%":[[52,"op-modulo"]],"&":[[52,"op-bit-and"]],"(relation,
 name) tuples in logical fields and logical columns are 
unique":[[12,"relation-name-tuples-in-logical-fields-and-logical-columns-are-unique"]],"*":[[52,"op-multiply"]],"+":[[52,"op-plus"]],"-":[[52,"op-minus"]],"/":[[52,"op-divide"]],"2022
 Q2":[[10,"q2"]] [...]
\ No newline at end of file
diff --git a/user-guide/sql/explain.html b/user-guide/sql/explain.html
index 2c05137a5e..f69ea77a39 100644
--- a/user-guide/sql/explain.html
+++ b/user-guide/sql/explain.html
@@ -522,14 +522,72 @@
 
 <nav id="bd-toc-nav">
     <ul class="visible nav section-nav flex-column">
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" href="#syntax">
+   Syntax
+  </a>
+ </li>
  <li class="toc-h2 nav-item toc-entry">
   <a class="reference internal nav-link" href="#id1">
-   EXPLAIN
+   <code class="docutils literal notranslate">
+    <span class="pre">
+     EXPLAIN
+    </span>
+   </code>
   </a>
+  <ul class="nav section-nav flex-column">
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#indent-format-default">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       indent
+      </span>
+     </code>
+     format (default)
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#tree-format">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       tree
+      </span>
+     </code>
+     format
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#pgjson-format">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       pgjson
+      </span>
+     </code>
+     format
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" href="#graphviz-format">
+     <code class="docutils literal notranslate">
+      <span class="pre">
+       graphviz
+      </span>
+     </code>
+     format
+    </a>
+   </li>
+  </ul>
  </li>
  <li class="toc-h2 nav-item toc-entry">
   <a class="reference internal nav-link" href="#explain-analyze">
-   EXPLAIN ANALYZE
+   <code class="docutils literal notranslate">
+    <span class="pre">
+     EXPLAIN
+    </span>
+    <span class="pre">
+     ANALYZE
+    </span>
+   </code>
   </a>
  </li>
 </ul>
@@ -581,38 +639,210 @@
 <section id="explain">
 <h1>EXPLAIN<a class="headerlink" href="#explain" title="Link to this 
heading">¶</a></h1>
 <p>The <code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span></code> command shows the logical and physical 
execution plan for the specified SQL statement.</p>
-<p>See the <a class="reference internal" href="../explain-usage.html"><span 
class="std std-doc">Reading Explain Plans</span></a> page for more information 
on how to interpret these plans.</p>
+<section id="syntax">
+<h2>Syntax<a class="headerlink" href="#syntax" title="Link to this 
heading">¶</a></h2>
 <pre>
-EXPLAIN [ANALYZE] [VERBOSE] statement
+EXPLAIN [ANALYZE] [VERBOSE] [FORMAT format] statement
 </pre>
+</section>
 <section id="id1">
-<h2>EXPLAIN<a class="headerlink" href="#id1" title="Link to this 
heading">¶</a></h2>
+<h2><code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span></code><a class="headerlink" href="#id1" title="Link 
to this heading">¶</a></h2>
 <p>Shows the execution plan of a statement.
-If you need more detailed output, use <code class="docutils literal 
notranslate"><span class="pre">EXPLAIN</span> <span 
class="pre">VERBOSE</span></code>.</p>
-<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="k">EXPLAIN</span><span 
class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span 
class="k">SUM</span><span class="p">(</span><span class="n">x</span><span 
class="p">)</span><span class="w"> </span><span class="k">FROM</span><span 
class="w"> </span><span class="k">table</span><span class="w"> </span><span 
class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><sp [...]
+If you need more detailed output, use <code class="docutils literal 
notranslate"><span class="pre">EXPLAIN</span> <span 
class="pre">VERBOSE</span></code>.
+Note that <code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span> <span class="pre">VERBOSE</span></code> only 
supports the <code class="docutils literal notranslate"><span 
class="pre">indent</span></code> format.</p>
+<p>The optional <code class="docutils literal notranslate"><span 
class="pre">[FORMAT</span> <span class="pre">format]</span></code> clause 
controls how the plan is displayed as
+explained below. If this clause is not specified, the plan is displayed using
+the format from the <a class="reference internal" href="../configs.html"><span 
class="std std-doc">configuration value</span></a> <code class="docutils 
literal notranslate"><span 
class="pre">datafusion.explain.format</span></code>.</p>
+<section id="indent-format-default">
+<h3><code class="docutils literal notranslate"><span 
class="pre">indent</span></code> format (default)<a class="headerlink" 
href="#indent-format-default" title="Link to this heading">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">indent</span></code> format shows both the logical and physical 
plan, with one line for
+each operator in the plan. Child plans are indented to show the hierarchy.</p>
+<p>See <a class="reference internal" href="../explain-usage.html"><span 
class="std std-doc">Reading Explain Plans</span></a> for more information on 
how to interpret these plans.</p>
+<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="o">&gt;</span><span class="w"> 
</span><span class="k">CREATE</span><span class="w"> </span><span 
class="k">TABLE</span><span class="w"> </span><span class="n">t</span><span 
class="p">(</span><span class="n">x</span><span class="w"> </span><span 
class="nb">int</span><span class="p">,</span><span class="w"> </span><span 
class="n">b</span><span class="w"> </span><span class="nb">int</span><span clas 
[...]
+<span class="mi">0</span><span class="w"> </span><span 
class="k">row</span><span class="p">(</span><span class="n">s</span><span 
class="p">)</span><span class="w"> </span><span class="n">fetched</span><span 
class="p">.</span>
+<span class="n">Elapsed</span><span class="w"> </span><span 
class="mi">0</span><span class="p">.</span><span class="mi">004</span><span 
class="w"> </span><span class="n">seconds</span><span class="p">.</span>
 
-<span class="o">+</span><span 
class="c1">---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span 
class="n">plan_type</span><span class="w">     </span><span 
class="o">|</span><span class="w"> </span><span class="n">plan</span><span 
class="w">                                                                      
                                                                                
     </span><span class="o">|</span>
-<span class="o">+</span><span 
class="c1">---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
-<span class="o">|</span><span class="w"> </span><span 
class="n">logical_plan</span><span class="w">  </span><span 
class="o">|</span><span class="w"> </span><span 
class="n">Projection</span><span class="p">:</span><span class="w"> 
</span><span class="o">#</span><span class="k">SUM</span><span 
class="p">(</span><span class="k">table</span><span class="p">.</span><span 
class="n">x</span><span class="p">)</span><span class="w">                      
                                            [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">   </span><span 
class="k">Aggregate</span><span class="p">:</span><span class="w"> </span><span 
class="n">groupBy</span><span class="o">=</span><span class="p">[[</span><span 
class="o">#</span><span class="k">table</span><span class="p">.</span><span 
class="n">b</span><span class="p">]],</span><span class="w"> </span><span 
class="n">aggr</span><span class="o">=</span><span class="p">[[</ [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">     </span><span 
class="n">TableScan</span><span class="p">:</span><span class="w"> </span><span 
class="k">table</span><span class="w"> </span><span 
class="n">projection</span><span class="o">=</span><span 
class="p">[</span><span class="n">x</span><span class="p">,</span><span 
class="w"> </span><span class="n">b</span><span class="p">]</span><span 
class="w">                              [...]
-<span class="o">|</span><span class="w"> </span><span 
class="n">physical_plan</span><span class="w"> </span><span 
class="o">|</span><span class="w"> </span><span 
class="n">ProjectionExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">expr</span><span class="o">=</span><span 
class="p">[</span><span class="k">SUM</span><span class="p">(</span><span 
class="k">table</span><span class="p">.</span><span class="n">x</span><span 
class="p">)</span><span class="o">@</span><s [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">   </span><span 
class="n">AggregateExec</span><span class="p">:</span><span class="w"> 
</span><span class="k">mode</span><span class="o">=</span><span 
class="n">FinalPartitioned</span><span class="p">,</span><span class="w"> 
</span><span class="n">gby</span><span class="o">=</span><span 
class="p">[</span><span class="n">b</span><span class="o">@</span><span 
class="mi">0</span><span class [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">     </span><span 
class="n">CoalesceBatchesExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">target_batch_size</span><span class="o">=</span><span 
class="mi">4096</span><span class="w">                                          
                                                                      
</span><span class="o">|</span>
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">       </span><span 
class="n">RepartitionExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">partitioning</span><span class="o">=</span><span 
class="n">Hash</span><span class="p">([</span><span 
class="k">Column</span><span class="w"> </span><span class="err">{</span><span 
class="w"> </span><span class="n">name</span><span class="p">:</span><span 
class="w"> </span>< [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">         </span><span 
class="n">AggregateExec</span><span class="p">:</span><span class="w"> 
</span><span class="k">mode</span><span class="o">=</span><span 
class="k">Partial</span><span class="p">,</span><span class="w"> </span><span 
class="n">gby</span><span class="o">=</span><span class="p">[</span><span 
class="n">b</span><span class="o">@</span><span class="mi">1</span><span 
class="w [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">           </span><span 
class="n">RepartitionExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">partitioning</span><span class="o">=</span><span 
class="n">RoundRobinBatch</span><span class="p">(</span><span 
class="mi">16</span><span class="p">)</span><span class="w">                    
                                                                                
[...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">             </span><span 
class="n">DataSourceExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">file_groups</span><span class="o">=</span><span 
class="err">{</span><span class="mi">1</span><span class="w"> </span><span 
class="k">group</span><span class="p">:</span><span class="w"> </span><span 
class="p">[[</span><span class="o">/</span><span class="n">tmp</span>< [...]
-<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">                                              
                                                                                
                                  </span><span class="o">|</span>
-<span class="o">+</span><span 
class="c1">---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
+<span class="o">&gt;</span><span class="w"> </span><span 
class="k">EXPLAIN</span><span class="w"> </span><span 
class="k">SELECT</span><span class="w"> </span><span class="k">SUM</span><span 
class="p">(</span><span class="n">x</span><span class="p">)</span><span 
class="w"> </span><span class="k">FROM</span><span class="w"> </span><span 
class="n">t</span><span class="w"> </span><span class="k">GROUP</span><span 
class="w"> </span><span class="k">BY</span><span class="w"> </span><span class= 
[...]
+<span class="o">+</span><span 
class="c1">---------------+-------------------------------------------------------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">plan_type</span><span class="w">     </span><span 
class="o">|</span><span class="w"> </span><span class="n">plan</span><span 
class="w">                                                                      
    </span><span class="o">|</span>
+<span class="o">+</span><span 
class="c1">---------------+-------------------------------------------------------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">logical_plan</span><span class="w">  </span><span 
class="o">|</span><span class="w"> </span><span 
class="n">Projection</span><span class="p">:</span><span class="w"> 
</span><span class="k">sum</span><span class="p">(</span><span 
class="n">t</span><span class="p">.</span><span class="n">x</span><span 
class="p">)</span><span class="w">                                              
            </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">   </span><span 
class="k">Aggregate</span><span class="p">:</span><span class="w"> </span><span 
class="n">groupBy</span><span class="o">=</span><span class="p">[[</span><span 
class="n">t</span><span class="p">.</span><span class="n">b</span><span 
class="p">]],</span><span class="w"> </span><span class="n">aggr</span><span 
class="o">=</span><span class="p">[[</span><span class="k">sum</sp [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">     </span><span 
class="n">TableScan</span><span class="p">:</span><span class="w"> </span><span 
class="n">t</span><span class="w"> </span><span 
class="n">projection</span><span class="o">=</span><span 
class="p">[</span><span class="n">x</span><span class="p">,</span><span 
class="w"> </span><span class="n">b</span><span class="p">]</span><span 
class="w">                                  [...]
+<span class="o">|</span><span class="w"> </span><span 
class="n">physical_plan</span><span class="w"> </span><span 
class="o">|</span><span class="w"> </span><span 
class="n">ProjectionExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">expr</span><span class="o">=</span><span 
class="p">[</span><span class="k">sum</span><span class="p">(</span><span 
class="n">t</span><span class="p">.</span><span class="n">x</span><span 
class="p">)</span><span class="o">@</span><span  [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">   </span><span 
class="n">AggregateExec</span><span class="p">:</span><span class="w"> 
</span><span class="k">mode</span><span class="o">=</span><span 
class="n">FinalPartitioned</span><span class="p">,</span><span class="w"> 
</span><span class="n">gby</span><span class="o">=</span><span 
class="p">[</span><span class="n">b</span><span class="o">@</span><span 
class="mi">0</span><span class [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">     </span><span 
class="n">CoalesceBatchesExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">target_batch_size</span><span class="o">=</span><span 
class="mi">8192</span><span class="w">                               
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">       </span><span 
class="n">RepartitionExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">partitioning</span><span class="o">=</span><span 
class="n">Hash</span><span class="p">([</span><span class="n">b</span><span 
class="o">@</span><span class="mi">0</span><span class="p">],</span><span 
class="w"> </span><span class="mi">16</span><span class="p">),</span><span  
[...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">         </span><span 
class="n">RepartitionExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">partitioning</span><span class="o">=</span><span 
class="n">RoundRobinBatch</span><span class="p">(</span><span 
class="mi">16</span><span class="p">),</span><span class="w"> </span><span 
class="n">input_partitions</span><span class="o">=</span><span 
class="mi">1</span><spa [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">           </span><span 
class="n">AggregateExec</span><span class="p">:</span><span class="w"> 
</span><span class="k">mode</span><span class="o">=</span><span 
class="k">Partial</span><span class="p">,</span><span class="w"> </span><span 
class="n">gby</span><span class="o">=</span><span class="p">[</span><span 
class="n">b</span><span class="o">@</span><span class="mi">1</span><span class= 
[...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">             </span><span 
class="n">DataSourceExec</span><span class="p">:</span><span class="w"> 
</span><span class="n">partitions</span><span class="o">=</span><span 
class="mi">1</span><span class="p">,</span><span class="w"> </span><span 
class="n">partition_sizes</span><span class="o">=</span><span 
class="p">[</span><span class="mi">1</span><span class="p">]</span><span 
class="w">     [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">                                              
                                 </span><span class="o">|</span>
+<span class="o">+</span><span 
class="c1">---------------+-------------------------------------------------------------------------------+</span>
+<span class="mi">2</span><span class="w"> </span><span 
class="k">row</span><span class="p">(</span><span class="n">s</span><span 
class="p">)</span><span class="w"> </span><span class="n">fetched</span><span 
class="p">.</span>
+<span class="n">Elapsed</span><span class="w"> </span><span 
class="mi">0</span><span class="p">.</span><span class="mi">004</span><span 
class="w"> </span><span class="n">seconds</span><span class="p">.</span>
 </pre></div>
 </div>
 </section>
+<section id="tree-format">
+<h3><code class="docutils literal notranslate"><span 
class="pre">tree</span></code> format<a class="headerlink" href="#tree-format" 
title="Link to this heading">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">tree</span></code> format is modeled after <a class="reference 
external" href="https://duckdb.org/docs/stable/guides/meta/explain.html";>DuckDB 
plans</a> and is designed to be easier
+to see the high level structure of the plan</p>
+<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="o">&gt;</span><span class="w"> 
</span><span class="k">EXPLAIN</span><span class="w"> </span><span 
class="n">FORMAT</span><span class="w"> </span><span class="n">TREE</span><span 
class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span 
class="k">SUM</span><span class="p">(</span><span class="n">x</span><span 
class="p">)</span><span class="w"> </span><span class="k">FROM</span>< [...]
+<span class="o">+</span><span 
class="c1">---------------+-------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">plan_type</span><span class="w">     </span><span 
class="o">|</span><span class="w"> </span><span class="n">plan</span><span 
class="w">                          </span><span class="o">|</span>
+<span class="o">+</span><span 
class="c1">---------------+-------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">physical_plan</span><span class="w"> </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌───────────────────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">ProjectionExec</span><span class="w">   
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="c1">--------------------   │ |</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="k">sum</span><span class="p">(</span><span 
class="n">t</span><span class="p">.</span><span class="n">x</span><span 
class="p">):</span><span class="w"> </span><span class="k">sum</span><span 
class="p">(</span><span class="n">t</span><span class="p">.</span><span 
class="n">x</span><span class="p">)</span><span class= [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└─────────────┬─────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌─────────────┴─────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">AggregateExec</span><span class="w">    
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="c1">--------------------   │ |</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">aggr</span><span 
class="p">:</span><span class="w"> </span><span class="k">sum</span><span 
class="p">(</span><span class="n">t</span><span class="p">.</span><span 
class="n">x</span><span class="p">)</span><span class="w">      </span><span 
class="err">│</span><span class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">     </span><span class="n">group_by</span><span 
class="p">:</span><span class="w"> </span><span class="n">b</span><span 
class="o">@</span><span class="mi">0</span><span class="w"> </span><span 
class="k">as</span><span class="w"> </span><span class="n">b</span><span 
class="w">    </span><span class="err">│</span><span class="w"> </span><s [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">                           </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">           </span><span class="k">mode</span><span 
class="p">:</span><span class="w">           </span><span 
class="err">│</span><span class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">      </span><span class="n">FinalPartitioned</span><span class="w">  
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└─────────────┬─────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌─────────────┴─────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="n">CoalesceBatchesExec</span><span class="w"> 
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└─────────────┬─────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌─────────────┴─────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">      </span><span class="n">RepartitionExec</span><span class="w">   
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="c1">--------------------   │ |</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">  </span><span class="n">output_partition_count</span><span 
class="p">:</span><span class="w">  </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">             </span><span class="mi">16</span><span class="w">        
    </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">                           </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="n">partitioning_scheme</span><span 
class="p">:</span><span class="w">   </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">      </span><span class="n">Hash</span><span 
class="p">([</span><span class="n">b</span><span class="o">@</span><span 
class="mi">0</span><span class="p">],</span><span class="w"> </span><span 
class="mi">16</span><span class="p">)</span><span class="w">      </span><span 
class="err">│</span><span class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└─────────────┬─────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌─────────────┴─────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">      </span><span class="n">RepartitionExec</span><span class="w">   
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="c1">--------------------   │ |</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">  </span><span class="n">output_partition_count</span><span 
class="p">:</span><span class="w">  </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">             </span><span class="mi">1</span><span class="w">         
    </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">                           </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="n">partitioning_scheme</span><span 
class="p">:</span><span class="w">   </span><span class="err">│</span><span 
class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="n">RoundRobinBatch</span><span 
class="p">(</span><span class="mi">16</span><span class="p">)</span><span 
class="w">    </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└─────────────┬─────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌─────────────┴─────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">AggregateExec</span><span class="w">    
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="c1">--------------------   │ |</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">aggr</span><span 
class="p">:</span><span class="w"> </span><span class="k">sum</span><span 
class="p">(</span><span class="n">t</span><span class="p">.</span><span 
class="n">x</span><span class="p">)</span><span class="w">      </span><span 
class="err">│</span><span class="w"> </span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">     </span><span class="n">group_by</span><span 
class="p">:</span><span class="w"> </span><span class="n">b</span><span 
class="o">@</span><span class="mi">1</span><span class="w"> </span><span 
class="k">as</span><span class="w"> </span><span class="n">b</span><span 
class="w">    </span><span class="err">│</span><span class="w"> </span><s [...]
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="k">mode</span><span 
class="p">:</span><span class="w"> </span><span class="k">Partial</span><span 
class="w">       </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└─────────────┬─────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">┌─────────────┴─────────────┐</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">DataSourceExec</span><span class="w">   
   </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">    </span><span class="c1">--------------------   │ |</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">         </span><span class="n">bytes</span><span 
class="p">:</span><span class="w"> </span><span class="mi">224</span><span 
class="w">        </span><span class="err">│</span><span class="w"> 
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">       </span><span class="n">format</span><span 
class="p">:</span><span class="w"> </span><span class="n">memory</span><span 
class="w">      </span><span class="err">│</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span class="err">│</span><span 
class="w">          </span><span class="k">rows</span><span 
class="p">:</span><span class="w"> </span><span class="mi">1</span><span 
class="w">          </span><span class="err">│</span><span class="w"> 
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w"> </span><span 
class="err">└───────────────────────────┘</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">               </span><span 
class="o">|</span><span class="w">                               </span><span 
class="o">|</span>
+<span class="o">+</span><span 
class="c1">---------------+-------------------------------+</span>
+<span class="mi">1</span><span class="w"> </span><span 
class="k">row</span><span class="p">(</span><span class="n">s</span><span 
class="p">)</span><span class="w"> </span><span class="n">fetched</span><span 
class="p">.</span>
+<span class="n">Elapsed</span><span class="w"> </span><span 
class="mi">0</span><span class="p">.</span><span class="mi">016</span><span 
class="w"> </span><span class="n">seconds</span><span class="p">.</span>
+</pre></div>
+</div>
+</section>
+<section id="pgjson-format">
+<h3><code class="docutils literal notranslate"><span 
class="pre">pgjson</span></code> format<a class="headerlink" 
href="#pgjson-format" title="Link to this heading">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">pgjson</span></code> format is modeled after <a class="reference 
external" 
href="https://www.postgresql.org/docs/current/sql-explain.html";>Postgres 
JSON</a> format.</p>
+<p>You can use this format to visualize the plan in existing plan visualization
+tools, such as <a class="reference external" 
href="https://explain.dalibo.com/";>dalibo</a></p>
+<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="o">&gt;</span><span class="w"> 
</span><span class="k">EXPLAIN</span><span class="w"> </span><span 
class="n">FORMAT</span><span class="w"> </span><span 
class="n">PGJSON</span><span class="w"> </span><span 
class="k">SELECT</span><span class="w"> </span><span class="k">SUM</span><span 
class="p">(</span><span class="n">x</span><span class="p">)</span><span 
class="w"> </span><span class="k">FROM</span [...]
+<span class="o">+</span><span 
class="c1">--------------+----------------------------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">plan_type</span><span class="w">    </span><span 
class="o">|</span><span class="w"> </span><span class="n">plan</span><span 
class="w">                                               </span><span 
class="o">|</span>
+<span class="o">+</span><span 
class="c1">--------------+----------------------------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">logical_plan</span><span class="w"> </span><span 
class="o">|</span><span class="w"> </span><span class="p">[</span><span 
class="w">                                                  </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span class="err">{</span><span 
class="w">                                                </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span 
class="ss">&quot;Plan&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="err">{</span><span class="w">                               
       </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span 
class="ss">&quot;Expressions&quot;</span><span class="p">:</span><span 
class="w"> </span><span class="p">[</span><span class="w">                      
       </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">         </span><span 
class="ss">&quot;sum(t.x)&quot;</span><span class="w">                          
       </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span class="p">],</span><span 
class="w">                                           </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span class="ss">&quot;Node 
Type&quot;</span><span class="p">:</span><span class="w"> </span><span 
class="ss">&quot;Projection&quot;</span><span class="p">,</span><span 
class="w">                   </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span 
class="ss">&quot;Output&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w">                                 
 </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">         </span><span 
class="ss">&quot;sum(t.x)&quot;</span><span class="w">                          
       </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span class="p">],</span><span 
class="w">                                           </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span 
class="ss">&quot;Plans&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w">                                 
  </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">         </span><span 
class="err">{</span><span class="w">                                          
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span 
class="ss">&quot;Aggregates&quot;</span><span class="p">:</span><span 
class="w"> </span><span class="ss">&quot;sum(CAST(t.x AS 
Int64))&quot;</span><span class="p">,</span><span class="w"> </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span 
class="ss">&quot;Group By&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="ss">&quot;t.b&quot;</span><span class="p">,</span><span 
class="w">                       </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span class="ss">&quot;Node 
Type&quot;</span><span class="p">:</span><span class="w"> </span><span 
class="ss">&quot;Aggregate&quot;</span><span class="p">,</span><span class="w"> 
               </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span 
class="ss">&quot;Output&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w">                              
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">             </span><span 
class="ss">&quot;b&quot;</span><span class="p">,</span><span class="w">         
                          </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">             </span><span 
class="ss">&quot;sum(t.x)&quot;</span><span class="w">                          
   </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span 
class="p">],</span><span class="w">                                       
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span 
class="ss">&quot;Plans&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w">                               
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">             </span><span 
class="err">{</span><span class="w">                                      
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">               </span><span 
class="ss">&quot;Node Type&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="ss">&quot;TableScan&quot;</span><span 
class="p">,</span><span class="w">            </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">               </span><span 
class="ss">&quot;Output&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="p">[</span><span class="w">                          
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">                 </span><span 
class="ss">&quot;x&quot;</span><span class="p">,</span><span class="w">         
                      </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">                 </span><span 
class="ss">&quot;b&quot;</span><span class="w">                                
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">               </span><span 
class="p">],</span><span class="w">                                   
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">               </span><span 
class="ss">&quot;Plans&quot;</span><span class="p">:</span><span class="w"> 
</span><span class="p">[],</span><span class="w">                         
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">               </span><span 
class="ss">&quot;Relation Name&quot;</span><span class="p">:</span><span 
class="w"> </span><span class="ss">&quot;t&quot;</span><span class="w">         
        </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">             </span><span 
class="err">}</span><span class="w">                                      
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">           </span><span 
class="p">]</span><span class="w">                                        
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">         </span><span 
class="err">}</span><span class="w">                                          
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">       </span><span class="p">]</span><span 
class="w">                                            </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="err">}</span><span 
class="w">                                              </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span class="err">}</span><span 
class="w">                                                </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w"> </span><span class="p">]</span><span 
class="w">                                                  </span><span 
class="o">|</span>
+<span class="o">+</span><span 
class="c1">--------------+----------------------------------------------------+</span>
+<span class="mi">1</span><span class="w"> </span><span 
class="k">row</span><span class="p">(</span><span class="n">s</span><span 
class="p">)</span><span class="w"> </span><span class="n">fetched</span><span 
class="p">.</span>
+<span class="n">Elapsed</span><span class="w"> </span><span 
class="mi">0</span><span class="p">.</span><span class="mi">008</span><span 
class="w"> </span><span class="n">seconds</span><span class="p">.</span>
+</pre></div>
+</div>
+</section>
+<section id="graphviz-format">
+<h3><code class="docutils literal notranslate"><span 
class="pre">graphviz</span></code> format<a class="headerlink" 
href="#graphviz-format" title="Link to this heading">¶</a></h3>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">graphviz</span></code> format uses the <a class="reference 
external" href="https://graphviz.org/doc/info/lang.html";>DOT language</a> that 
can be used with <a class="reference external" 
href="https://graphviz.org/";>Graphviz</a> to
+generate a visual representation of the plan.</p>
+<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="o">&gt;</span><span class="w"> 
</span><span class="k">EXPLAIN</span><span class="w"> </span><span 
class="n">FORMAT</span><span class="w"> </span><span 
class="n">GRAPHVIZ</span><span class="w"> </span><span 
class="k">SELECT</span><span class="w"> </span><span class="k">SUM</span><span 
class="p">(</span><span class="n">x</span><span class="p">)</span><span 
class="w"> </span><span class="k">FROM</sp [...]
+<span class="o">+</span><span 
class="c1">--------------+------------------------------------------------------------------------------------------------------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">plan_type</span><span class="w">    </span><span 
class="o">|</span><span class="w"> </span><span class="n">plan</span><span 
class="w">                                                                      
                                                   </span><span 
class="o">|</span>
+<span class="o">+</span><span 
class="c1">--------------+------------------------------------------------------------------------------------------------------------------------------+</span>
+<span class="o">|</span><span class="w"> </span><span 
class="n">logical_plan</span><span class="w"> </span><span 
class="o">|</span><span class="w">                                              
                                                                                
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w"> </span><span class="o">//</span><span 
class="w"> </span><span class="k">Begin</span><span class="w"> </span><span 
class="n">DataFusion</span><span class="w"> </span><span 
class="n">GraphViz</span><span class="w"> </span><span 
class="n">Plan</span><span class="p">,</span><span class="w">                   
                                                                        
</span><span [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w"> </span><span class="o">//</span><span 
class="w"> </span><span class="n">display</span><span class="w"> </span><span 
class="n">it</span><span class="w"> </span><span class="n">online</span><span 
class="w"> </span><span class="n">here</span><span class="p">:</span><span 
class="w"> </span><span class="n">https</span><span class="p">:</span><span 
class="o">//</span><span class="n">dreampuf</ [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">                                              
                                                                                
</span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w"> </span><span class="n">digraph</span><span 
class="w"> </span><span class="err">{</span><span class="w">                    
                                                                                
                </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span 
class="n">subgraph</span><span class="w"> </span><span 
class="n">cluster_1</span><span class="w">                                      
                                                                   </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span class="err">{</span><span 
class="w">                                                                      
                                                    </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="n">graph</span><span 
class="p">[</span><span class="n">label</span><span class="o">=</span><span 
class="ss">&quot;LogicalPlan&quot;</span><span class="p">]</span><span 
class="w">                                                                      
                         </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">2</span><span 
class="p">[</span><span class="n">shape</span><span class="o">=</span><span 
class="n">box</span><span class="w"> </span><span class="n">label</span><span 
class="o">=</span><span class="ss">&quot;Projection: sum(t.x)&quot;</span><span 
class="p">]</span><span class="w">                                              
                                   [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">3</span><span 
class="p">[</span><span class="n">shape</span><span class="o">=</span><span 
class="n">box</span><span class="w"> </span><span class="n">label</span><span 
class="o">=</span><span class="ss">&quot;Aggregate: groupBy=[[t.b]], 
aggr=[[sum(CAST(t.x AS Int64))]]&quot;</span><span class="p">]</span><span 
class="w">                                         [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">2</span><span 
class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span 
class="mi">3</span><span class="w"> </span><span class="p">[</span><span 
class="n">arrowhead</span><span class="o">=</span><span 
class="k">none</span><span class="p">,</span><span class="w"> </span><span 
class="n">arrowtail</span><span class="o">=</span><span class="n">no [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">4</span><span 
class="p">[</span><span class="n">shape</span><span class="o">=</span><span 
class="n">box</span><span class="w"> </span><span class="n">label</span><span 
class="o">=</span><span class="ss">&quot;TableScan: t projection=[x, 
b]&quot;</span><span class="p">]</span><span class="w">                         
                                              [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">3</span><span 
class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span 
class="mi">4</span><span class="w"> </span><span class="p">[</span><span 
class="n">arrowhead</span><span class="o">=</span><span 
class="k">none</span><span class="p">,</span><span class="w"> </span><span 
class="n">arrowtail</span><span class="o">=</span><span class="n">no [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span class="err">}</span><span 
class="w">                                                                      
                                                    </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span 
class="n">subgraph</span><span class="w"> </span><span 
class="n">cluster_5</span><span class="w">                                      
                                                                   </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span class="err">{</span><span 
class="w">                                                                      
                                                    </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="n">graph</span><span 
class="p">[</span><span class="n">label</span><span class="o">=</span><span 
class="ss">&quot;Detailed LogicalPlan&quot;</span><span class="p">]</span><span 
class="w">                                                                      
                </span><span class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">6</span><span 
class="p">[</span><span class="n">shape</span><span class="o">=</span><span 
class="n">box</span><span class="w"> </span><span class="n">label</span><span 
class="o">=</span><span class="ss">&quot;Projection: sum(t.x)\nSchema: 
[sum(t.x):Int64;N]&quot;</span><span class="p">]</span><span class="w">         
                                            [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">7</span><span 
class="p">[</span><span class="n">shape</span><span class="o">=</span><span 
class="n">box</span><span class="w"> </span><span class="n">label</span><span 
class="o">=</span><span class="ss">&quot;Aggregate: groupBy=[[t.b]], 
aggr=[[sum(CAST(t.x AS Int64))]]\nSchema: [b:Int32;N, 
sum(t.x):Int64;N]&quot;</span><span class="p">]</span><span class="w">  [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">6</span><span 
class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span 
class="mi">7</span><span class="w"> </span><span class="p">[</span><span 
class="n">arrowhead</span><span class="o">=</span><span 
class="k">none</span><span class="p">,</span><span class="w"> </span><span 
class="n">arrowtail</span><span class="o">=</span><span class="n">no [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">8</span><span 
class="p">[</span><span class="n">shape</span><span class="o">=</span><span 
class="n">box</span><span class="w"> </span><span class="n">label</span><span 
class="o">=</span><span class="ss">&quot;TableScan: t projection=[x, 
b]\nSchema: [x:Int32;N, b:Int32;N]&quot;</span><span class="p">]</span><span 
class="w">                                       [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">     </span><span class="mi">7</span><span 
class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span 
class="mi">8</span><span class="w"> </span><span class="p">[</span><span 
class="n">arrowhead</span><span class="o">=</span><span 
class="k">none</span><span class="p">,</span><span class="w"> </span><span 
class="n">arrowtail</span><span class="o">=</span><span class="n">no [...]
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">   </span><span class="err">}</span><span 
class="w">                                                                      
                                                    </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w"> </span><span class="err">}</span><span 
class="w">                                                                      
                                                      </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w"> </span><span class="o">//</span><span 
class="w"> </span><span class="k">End</span><span class="w"> </span><span 
class="n">DataFusion</span><span class="w"> </span><span 
class="n">GraphViz</span><span class="w"> </span><span 
class="n">Plan</span><span class="w">                                           
                                                   </span><span 
class="o">|</span>
+<span class="o">|</span><span class="w">              </span><span 
class="o">|</span><span class="w">                                              
                                                                                
</span><span class="o">|</span>
+<span class="o">+</span><span 
class="c1">--------------+------------------------------------------------------------------------------------------------------------------------------+</span>
+<span class="mi">1</span><span class="w"> </span><span 
class="k">row</span><span class="p">(</span><span class="n">s</span><span 
class="p">)</span><span class="w"> </span><span class="n">fetched</span><span 
class="p">.</span>
+<span class="n">Elapsed</span><span class="w"> </span><span 
class="mi">0</span><span class="p">.</span><span class="mi">010</span><span 
class="w"> </span><span class="n">seconds</span><span class="p">.</span>
+</pre></div>
+</div>
+</section>
+</section>
 <section id="explain-analyze">
-<h2>EXPLAIN ANALYZE<a class="headerlink" href="#explain-analyze" title="Link 
to this heading">¶</a></h2>
-<p>Shows the execution plan and metrics of a statement.
-If you need more information output, use <code class="docutils literal 
notranslate"><span class="pre">EXPLAIN</span> <span class="pre">ANALYZE</span> 
<span class="pre">VERBOSE</span></code>.</p>
+<h2><code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span> <span class="pre">ANALYZE</span></code><a 
class="headerlink" href="#explain-analyze" title="Link to this 
heading">¶</a></h2>
+<p>Shows the execution plan and metrics of a statement. If you need more
+information output, use <code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span> <span class="pre">ANALYZE</span> <span 
class="pre">VERBOSE</span></code>. Note that <code class="docutils literal 
notranslate"><span class="pre">EXPLAIN</span> <span 
class="pre">ANALYZE</span></code>
+only supports the <code class="docutils literal notranslate"><span 
class="pre">indent</span></code> format.</p>
 <div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="k">EXPLAIN</span><span 
class="w"> </span><span class="k">ANALYZE</span><span class="w"> </span><span 
class="k">SELECT</span><span class="w"> </span><span class="k">SUM</span><span 
class="p">(</span><span class="n">x</span><span class="p">)</span><span 
class="w"> </span><span class="k">FROM</span><span class="w"> </span><span 
class="k">table</span><span class="w"> </span><span class="k">GROUP</spa [...]
 
 <span class="o">+</span><span 
class="c1">-------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+</span>
diff --git a/user-guide/sql/index.html b/user-guide/sql/index.html
index fa245d7290..47f258a033 100644
--- a/user-guide/sql/index.html
+++ b/user-guide/sql/index.html
@@ -598,8 +598,9 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" 
href="explain.html">EXPLAIN</a><ul>
-<li class="toctree-l2"><a class="reference internal" 
href="explain.html#id1">EXPLAIN</a></li>
-<li class="toctree-l2"><a class="reference internal" 
href="explain.html#explain-analyze">EXPLAIN ANALYZE</a></li>
+<li class="toctree-l2"><a class="reference internal" 
href="explain.html#syntax">Syntax</a></li>
+<li class="toctree-l2"><a class="reference internal" 
href="explain.html#id1"><code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" 
href="explain.html#explain-analyze"><code class="docutils literal 
notranslate"><span class="pre">EXPLAIN</span> <span 
class="pre">ANALYZE</span></code></a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" 
href="information_schema.html">Information Schema</a><ul>


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

Reply via email to