Skip to content

Indentation is incorrect for joins in formatted physical plans #345

@andygrove

Description

@andygrove

Describe the bug
The new physical plan formatting code does not handle joins correctly. Both children of a join should be shown at the same indent level.

Here is an example of an incorrectly formatted plan:

ballista-executor_1   |     HashAggregateExec: mode=Partial, gby=[l_shipmode], aggr=[SUM(CASE WHEN #o_orderpriority Eq Utf8("1-URGENT") Or #o_orderpriority Eq Utf8("2-HIGH") THEN Int64(1) ELSE Int64(0) END), SUM(CASE WHEN #o_orderpriority NotEq Utf8("1-URGENT") And #o_orderpriority NotEq Utf8("2-HIGH") THEN Int64(1) ELSE Int64(0) END)]
ballista-executor_1   |       CoalesceBatchesExec: target_batch_size=4096
ballista-executor_1   |         HashJoinExec: mode=CollectLeft, join_type=Inner, on=[("l_orderkey", "o_orderkey")]
ballista-executor_1   |           CoalesceBatchesExec: target_batch_size=4096
ballista-executor_1   |             FilterExec: l_shipmode IN ([Literal { value: Utf8("MAIL") }, Literal { value: Utf8("SHIP") }]) AND l_commitdate < l_receiptdate AND l_shipdate < l_commitdate AND l_receiptdate >= CAST(1994-01-01 AS Date32) AND l_receiptdate < CAST(1995-01-01 AS Date32)
ballista-executor_1   |               CsvExec: source=Path(/data/lineitem.tbl: [/data/lineitem.tbl]), has_header=false
ballista-executor_1   |                 CsvExec: source=Path(/data/orders.tbl: [/data/orders.tbl]), has_header=false

To Reproduce
Run the integration tests and look at the logs (once #344 is merged).

Expected behavior
Both children of a join should be shown at the same indent level.

Additional context
Feature was added in #337

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinggood first issueGood for newcomers

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions