Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-9683

[Rust][DataFusion] Implement Debug for ExecutionPlan trait

    XMLWordPrintableJSON

Details

    Description

      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. This would also be nice to have as part of EXPLAIN plan functionality in ARROW-9654

      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"

      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: {},
          },
      }
      

      Attachments

        Issue Links

          Activity

            People

              alamb Andrew Lamb
              alamb Andrew Lamb
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 50m
                  50m