Andrew Lamb created ARROW-9683:
----------------------------------

             Summary: [Rust][DataFusion] Implement Debug for ExecutionPlan trait
                 Key: ARROW-9683
                 URL: https://issues.apache.org/jira/browse/ARROW-9683
             Project: Apache Arrow
          Issue Type: Improvement
            Reporter: Andrew Lamb
            Assignee: Andrew Lamb


For ARROW-9653, I was trying to debug the execution plan and I would have found 
it easier if there had been a way to display the execution plan to better 
understand and isolate the issue. 

In general, for debugging purposes, we would like to be able to dump out an 
execution plan. To do so in the idiomatic rust way, we should require that 
`ExecutionPlan` also implement `std::fmt::Debug`

Here is an example plan for "SELECT c1, c2, MIN(c3) FROM aggregate_test_100 
GROUP BY c1, c2"

{code}
physical plan is HashAggregateExec {
    group_expr: [
        Column {
            name: "c1",
        },
        Column {
            name: "c2",
        },
    ],
    aggr_expr: [
        Min {
            expr: Column {
                name: "c3",
            },
        },
    ],
    input: DataSourceExec {
        schema: Schema {
            fields: [
                Field {
                    name: "c1",
                    data_type: Utf8,
                    nullable: false,
                    dict_id: 0,
                    dict_is_ordered: false,
                },
                Field {
                    name: "c2",
                    data_type: UInt32,
                    nullable: false,
                    dict_id: 0,
                    dict_is_ordered: false,
                },
                Field {
                    name: "c3",
                    data_type: Int8,
                    nullable: false,
                    dict_id: 0,
                    dict_is_ordered: false,
                },
            ],
            metadata: {},
        },
        partitions.len: 1,
    },
    schema: Schema {
        fields: [
            Field {
                name: "c1",
                data_type: Utf8,
                nullable: true,
                dict_id: 0,
                dict_is_ordered: false,
            },
            Field {
                name: "c2",
                data_type: UInt32,
                nullable: true,
                dict_id: 0,
                dict_is_ordered: false,
            },
            Field {
                name: "MIN(c3)",
                data_type: Int64,
                nullable: true,
                dict_id: 0,
                dict_is_ordered: false,
            },
        ],
        metadata: {},
    },
}
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to