You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Alessandro Solimando (Jira)" <ji...@apache.org> on 2022/01/21 10:45:00 UTC

[jira] [Created] (CALCITE-4991) Improve RuleLogger to also print input rels in FULL_PLAN mode

Alessandro Solimando created CALCITE-4991:
---------------------------------------------

             Summary: Improve RuleLogger to also print input rels in FULL_PLAN mode
                 Key: CALCITE-4991
                 URL: https://issues.apache.org/jira/browse/CALCITE-4991
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.29.0
            Reporter: Alessandro Solimando
            Assignee: Alessandro Solimando


After using for some time now the new plan logging capabilities introduced via _RuleEventLogger_ in CALCITE-4704, only printing the new rel produced by a rule is not enough for complex cases, because the input rel(s) used by the rule are not printed, and sometimes they are nowhere in the logs, making it hard to understand what situation caused the appearance of a given plan of interest.

The present ticket aims at additionally printing, for _FULL_PLAN_ marker, the input rels used by a given rule, before printing the output rel produced by the rule application.

The output logs would evolve from:

{noformat}
022-01-21T02:41:27,466 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Apply rule [HiveProjectFilterPullUpConstantsRule] to [rel#45:HiveProject,rel#56:HiveFilter]

2022-01-21T02:41:27,468 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Rule [HiveProjectFilterPullUpConstantsRule] produced [rel#58:HiveProject]
2022-01-21T02:41:27,468 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Full plan for [rel#58:HiveProject]:
HiveProject(month=[CAST(202110):INTEGER])
  HiveFilter(condition=[=($0, 202110)])
    HiveTableScan(table=[[default, test2]], table:alias=[test2])
{noformat}

to:

{noformat}
022-01-21T02:41:27,466 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Apply rule [HiveProjectFilterPullUpConstantsRule] to [rel#45:HiveProject,rel#56:HiveFilter]
2022-01-21T02:41:27,468 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Full plan for rule input [rel#45:HiveProject]:
HiveProject(month=[$0])
  HiveFilter(condition=[=($0, 202110)])
    HiveTableScan(table=[[default, test2]], table:alias=[test2])

2022-01-21T02:41:27,468 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Full plan for rule input [rel#56:HiveFilter]:
HiveFilter(condition=[=($0, 202110)])
  HiveTableScan(table=[[default, test2]], table:alias=[test2])

2022-01-21T02:41:27,468 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Rule [HiveProjectFilterPullUpConstantsRule] produced [rel#58:HiveProject]
2022-01-21T02:41:27,468 DEBUG [02c3a9eb-0565-404f-9c56-a2bbb556c827 main] calcite.RuleEventLogger: call#5: Full plan for [rel#58:HiveProject]:
HiveProject(month=[CAST(202110):INTEGER])
  HiveFilter(condition=[=($0, 202110)])
    HiveTableScan(table=[[default, test2]], table:alias=[test2])
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)