Skip to content

Implement tree explain for FilterExec #15000

Closed

Description

@alamb

Is your feature request related to a problem or challenge?

@irenjj added a new tree explain mode in #14677. Now we need to add support for different types of operators.

set datafusion.explain.format = 'tree';
create table foo(x int, y int) as values (1,2), (3,4);
explain select * from foo where x = 4;
+---------------+------------------------------------+
| plan_type     | plan                               |
+---------------+------------------------------------+
| logical_plan  | Filter: foo.x = Int32(4)           |
|               |   TableScan: foo projection=[x, y] |
| physical_plan | ┌───────────────────────────┐      |
|               | │    CoalesceBatchesExec    │      |
|               | └─────────────┬─────────────┘      |
|               | ┌─────────────┴─────────────┐      |
|               | │         FilterExec        │      |
|               | └─────────────┬─────────────┘      |
|               | ┌─────────────┴─────────────┐      |
|               | │       DataSourceExec      │      |
|               | │    --------------------   │      |
|               | │    partition_sizes: [1]   │      |
|               | │       partitions: 1       │      |
|               | └───────────────────────────┘      |
|               |                                    |
+---------------+------------------------------------+

Describe the solution you'd like

Add tree format to the named ExecutionPlan

Roughly speaking the process goes like:

  1. Add the relevant code to the operator
  2. Add / update explain_tree.slt test to show the new code in action

You can run the tests like

cargo test --test sqllogictests -- explain_tree

You can update the test like this:

cargo test --test sqllogictests -- explain_tree --complete

Describe alternatives you've considered

Here is an example PR: TODO

Additional context

No response

Activity

  1. self-assigned this
    on Mar 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions