[
https://issues.apache.org/jira/browse/CALCITE-5991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
asdfgh19 updated CALCITE-5991:
------------------------------
Description:
When executing the ensureRootConverters method, we add AbstractConverter to the
root Relset.
In the OptimizeGroup task.
When the TraitSet of AbstractConverter does not satisfy group, we try
passThrough. Since AbstractConverter is not a PhysicalNode instance,
passThrough returns null, and then we try Apply ConverterRule for this
AbstractConverter. This process can be simplified.
When the TraitSet of AbstractConverter satisfies group, we perform three tasks:
DeriveTrait, CheckInput, and OptimizeGroup. DeriveTrait can be simplified to
ApplyRules because derive is invalid because AbstractConverter is not an
instance of PhysicalNode.
And I think CheckInput can be removed in this scenario, because when a Relset
merge occurs, when the root Relset merges to the other Relset, the
OptimizeGroup will be re-executed from the root RelSubset. At this time, the
equivalent Relsubset of the original child node of the AbstractConverter caused
by the Relset merge OptimizeGroup will also be executed, so there is no need to
use CheckInput to trigger the OptimizeGroup task of AbstractConverter's new
input Relsubset.
The following is the total number of tasks performed by each test case in
TopDownOptTest before and after optimization.
|TopDownOptTest|before|after|before - after|
|testValuesTraitRequest|103|88|15|
|testValuesTraitRequestNeg|99|84|15|
|testSortAgg|193|187|6|
|testSortAggPartialKey|322|312|10|
|testSortMergeJoin|168|153|15|
|testSortMergeJoinSubsetKey|177|162|15|
|testSortMergeJoinSubsetKey2|177|162|15|
|testSortMergeJoinSupersetKey|168|153|15|
|testSortMergeJoinRight|160|145|15|
|testSortMergeJoinRightSubsetKey|160|145|15|
|testSortMergeJoinRightSubsetKey2|160|145|15|
|testSortMergeJoinRightSupersetKey|160|145|15|
|testMergeJoinDeriveLeft1|213|205|8|
|testMergeJoinDeriveLeft2|235|227|8|
|testMergeJoinDeriveRight1|218|210|8|
|testMergeJoinDeriveRight2|267|259|8|
|testCorrelateInnerJoinDeriveLeft|195|180|15|
|testCorrelateInnerJoinNoDerive|178|163|15|
|testCorrelateLeftJoinDeriveLeft|195|180|15|
|testCorrelateLeftJoinNoDerive|178|163|15|
|testCorrelateSemiJoinDeriveLeft|411|401|10|
|testSortProject|108|98|10|
|testSortProjectOnRexCall|91|81|10|
|testSortProjectWhenCastLeadingToMonotonic|114|108|6|
|testSortProjectWhenCastLeadingToNonMonotonic|97|91|6|
|testSortProjectDeriveWhenCastLeadingToMonotonic|373|370|3|
|testSortProjectDeriveOnRexCall|236|228|8|
|testSortProjectDeriveWhenCastLeadingToNonMonotonic|237|234|3|
|testSortProjectDerive3|202|199|3|
|testSortProjectDerive4|148|145|3|
|testSortProjectDerive5|278|262|16|
|testSortProjectDerive|296|288|8|
|testSortProjectDerive2|233|227|6|
|testSortProjectDerive6|243|227|16|
|testSortFilter|311|296|15|
|testSortFilterDerive|521|508|13|
|testHashJoinFullOuterJoinNotPushDownSort|139|124|15|
|testHashJoinLeftOuterJoinPushDownSort|201|186|15|
|testHashJoinLeftOuterJoinPushDownSort2|195|186|9|
|testHashJoinInnerJoinPushDownSort|201|186|15|
|testHashJoinRightOuterJoinPushDownSort|166|151|15|
|testNestedLoopJoinLeftOuterJoinPushDownSort|195|186|9|
|testNestedLoopJoinLeftOuterJoinPushDownSort2|195|186|9|
|testNestedLoopJoinLeftOuterJoinSortKeyOnRightInput|160|151|9|
|testNestedLoopJoinRightOuterJoinSortPushDown|155|145|10|
|testHashJoinTraitDerivation|264|248|16|
|testHashJoinTraitDerivation2|254|238|16|
|testHashJoinTraitDerivationNegativeCase|294|278|16|
|testNestedLoopJoinTraitDerivation|264|248|16|
|testNestedLoopJoinTraitDerivation2|254|238|16|
|testNestedLoopJoinTraitDerivationNegativeCase|294|278|16|
|testSortCalc|124|114|10|
|testSortCalcOnRexCall|107|97|10|
|testSortCalcWhenCastLeadingToMonotonic|131|125|6|
|testSortCalcWhenCastLeadingToNonMonotonic|114|108|6|
|testSortCalcWithFilter|348|333|15|
|testSortCalcDerive1|323|315|8|
|testSortCalcDerive2|269|263|6|
|testSortCalcDerive3|233|230|3|
|testBatchNestedLoopJoinLeftOuterJoinPushDownSort|206|197|9|
|testBatchNestedLoopJoinTraitDerivation|275|259|16|
was:
When executing the ensureRootConverters method, we add AbstractConverter to the
root Relset.
In the OptimizeGroup task.
When the TraitSet of AbstractConverter does not satisfy group, we try
passThrough. Since AbstractConverter is not a PhysicalNode instance,
passThrough returns null, and then we try Apply ConverterRule for this
AbstractConverter. This process can be simplified.
When the TraitSet of AbstractConverter satisfies group, we perform three tasks:
DeriveTrait, CheckInput, and OptimizeGroup. DeriveTrait can be simplified to
ApplyRules because derive is invalid because AbstractConverter is not an
instance of PhysicalNode.
And I think CheckInput can be removed in this scenario, because when a Relset
merge occurs, when the root Relset merges to the other Relset, the
OptimizeGroup will be re-executed from the root Relset. At this time, the
equivalent Relsubset of the original child node of the AbstractConverter caused
by the Relset merge OptimizeGroup will also be executed, so there is no need to
use CheckInput to trigger the OptimizeGroup task of AbstractConverter's new
input Relsubset.
The following is the total number of tasks performed by each test case in
TopDownOptTest before and after optimization.
|TopDownOptTest|before|after|before - after|
|testValuesTraitRequest|103|88|15|
|testValuesTraitRequestNeg|99|84|15|
|testSortAgg|193|187|6|
|testSortAggPartialKey|322|312|10|
|testSortMergeJoin|168|153|15|
|testSortMergeJoinSubsetKey|177|162|15|
|testSortMergeJoinSubsetKey2|177|162|15|
|testSortMergeJoinSupersetKey|168|153|15|
|testSortMergeJoinRight|160|145|15|
|testSortMergeJoinRightSubsetKey|160|145|15|
|testSortMergeJoinRightSubsetKey2|160|145|15|
|testSortMergeJoinRightSupersetKey|160|145|15|
|testMergeJoinDeriveLeft1|213|205|8|
|testMergeJoinDeriveLeft2|235|227|8|
|testMergeJoinDeriveRight1|218|210|8|
|testMergeJoinDeriveRight2|267|259|8|
|testCorrelateInnerJoinDeriveLeft|195|180|15|
|testCorrelateInnerJoinNoDerive|178|163|15|
|testCorrelateLeftJoinDeriveLeft|195|180|15|
|testCorrelateLeftJoinNoDerive|178|163|15|
|testCorrelateSemiJoinDeriveLeft|411|401|10|
|testSortProject|108|98|10|
|testSortProjectOnRexCall|91|81|10|
|testSortProjectWhenCastLeadingToMonotonic|114|108|6|
|testSortProjectWhenCastLeadingToNonMonotonic|97|91|6|
|testSortProjectDeriveWhenCastLeadingToMonotonic|373|370|3|
|testSortProjectDeriveOnRexCall|236|228|8|
|testSortProjectDeriveWhenCastLeadingToNonMonotonic|237|234|3|
|testSortProjectDerive3|202|199|3|
|testSortProjectDerive4|148|145|3|
|testSortProjectDerive5|278|262|16|
|testSortProjectDerive|296|288|8|
|testSortProjectDerive2|233|227|6|
|testSortProjectDerive6|243|227|16|
|testSortFilter|311|296|15|
|testSortFilterDerive|521|508|13|
|testHashJoinFullOuterJoinNotPushDownSort|139|124|15|
|testHashJoinLeftOuterJoinPushDownSort|201|186|15|
|testHashJoinLeftOuterJoinPushDownSort2|195|186|9|
|testHashJoinInnerJoinPushDownSort|201|186|15|
|testHashJoinRightOuterJoinPushDownSort|166|151|15|
|testNestedLoopJoinLeftOuterJoinPushDownSort|195|186|9|
|testNestedLoopJoinLeftOuterJoinPushDownSort2|195|186|9|
|testNestedLoopJoinLeftOuterJoinSortKeyOnRightInput|160|151|9|
|testNestedLoopJoinRightOuterJoinSortPushDown|155|145|10|
|testHashJoinTraitDerivation|264|248|16|
|testHashJoinTraitDerivation2|254|238|16|
|testHashJoinTraitDerivationNegativeCase|294|278|16|
|testNestedLoopJoinTraitDerivation|264|248|16|
|testNestedLoopJoinTraitDerivation2|254|238|16|
|testNestedLoopJoinTraitDerivationNegativeCase|294|278|16|
|testSortCalc|124|114|10|
|testSortCalcOnRexCall|107|97|10|
|testSortCalcWhenCastLeadingToMonotonic|131|125|6|
|testSortCalcWhenCastLeadingToNonMonotonic|114|108|6|
|testSortCalcWithFilter|348|333|15|
|testSortCalcDerive1|323|315|8|
|testSortCalcDerive2|269|263|6|
|testSortCalcDerive3|233|230|3|
|testBatchNestedLoopJoinLeftOuterJoinPushDownSort|206|197|9|
|testBatchNestedLoopJoinTraitDerivation|275|259|16|
> Reduce the number of tasks related to AbstractConverter in TopDownRuleDriver
> ----------------------------------------------------------------------------
>
> Key: CALCITE-5991
> URL: https://issues.apache.org/jira/browse/CALCITE-5991
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: asdfgh19
> Assignee: asdfgh19
> Priority: Minor
>
> When executing the ensureRootConverters method, we add AbstractConverter to
> the root Relset.
> In the OptimizeGroup task.
> When the TraitSet of AbstractConverter does not satisfy group, we try
> passThrough. Since AbstractConverter is not a PhysicalNode instance,
> passThrough returns null, and then we try Apply ConverterRule for this
> AbstractConverter. This process can be simplified.
> When the TraitSet of AbstractConverter satisfies group, we perform three
> tasks: DeriveTrait, CheckInput, and OptimizeGroup. DeriveTrait can be
> simplified to ApplyRules because derive is invalid because AbstractConverter
> is not an instance of PhysicalNode.
> And I think CheckInput can be removed in this scenario, because when a Relset
> merge occurs, when the root Relset merges to the other Relset, the
> OptimizeGroup will be re-executed from the root RelSubset. At this time, the
> equivalent Relsubset of the original child node of the AbstractConverter
> caused by the Relset merge OptimizeGroup will also be executed, so there is
> no need to use CheckInput to trigger the OptimizeGroup task of
> AbstractConverter's new input Relsubset.
> The following is the total number of tasks performed by each test case in
> TopDownOptTest before and after optimization.
>
> |TopDownOptTest|before|after|before - after|
> |testValuesTraitRequest|103|88|15|
> |testValuesTraitRequestNeg|99|84|15|
> |testSortAgg|193|187|6|
> |testSortAggPartialKey|322|312|10|
> |testSortMergeJoin|168|153|15|
> |testSortMergeJoinSubsetKey|177|162|15|
> |testSortMergeJoinSubsetKey2|177|162|15|
> |testSortMergeJoinSupersetKey|168|153|15|
> |testSortMergeJoinRight|160|145|15|
> |testSortMergeJoinRightSubsetKey|160|145|15|
> |testSortMergeJoinRightSubsetKey2|160|145|15|
> |testSortMergeJoinRightSupersetKey|160|145|15|
> |testMergeJoinDeriveLeft1|213|205|8|
> |testMergeJoinDeriveLeft2|235|227|8|
> |testMergeJoinDeriveRight1|218|210|8|
> |testMergeJoinDeriveRight2|267|259|8|
> |testCorrelateInnerJoinDeriveLeft|195|180|15|
> |testCorrelateInnerJoinNoDerive|178|163|15|
> |testCorrelateLeftJoinDeriveLeft|195|180|15|
> |testCorrelateLeftJoinNoDerive|178|163|15|
> |testCorrelateSemiJoinDeriveLeft|411|401|10|
> |testSortProject|108|98|10|
> |testSortProjectOnRexCall|91|81|10|
> |testSortProjectWhenCastLeadingToMonotonic|114|108|6|
> |testSortProjectWhenCastLeadingToNonMonotonic|97|91|6|
> |testSortProjectDeriveWhenCastLeadingToMonotonic|373|370|3|
> |testSortProjectDeriveOnRexCall|236|228|8|
> |testSortProjectDeriveWhenCastLeadingToNonMonotonic|237|234|3|
> |testSortProjectDerive3|202|199|3|
> |testSortProjectDerive4|148|145|3|
> |testSortProjectDerive5|278|262|16|
> |testSortProjectDerive|296|288|8|
> |testSortProjectDerive2|233|227|6|
> |testSortProjectDerive6|243|227|16|
> |testSortFilter|311|296|15|
> |testSortFilterDerive|521|508|13|
> |testHashJoinFullOuterJoinNotPushDownSort|139|124|15|
> |testHashJoinLeftOuterJoinPushDownSort|201|186|15|
> |testHashJoinLeftOuterJoinPushDownSort2|195|186|9|
> |testHashJoinInnerJoinPushDownSort|201|186|15|
> |testHashJoinRightOuterJoinPushDownSort|166|151|15|
> |testNestedLoopJoinLeftOuterJoinPushDownSort|195|186|9|
> |testNestedLoopJoinLeftOuterJoinPushDownSort2|195|186|9|
> |testNestedLoopJoinLeftOuterJoinSortKeyOnRightInput|160|151|9|
> |testNestedLoopJoinRightOuterJoinSortPushDown|155|145|10|
> |testHashJoinTraitDerivation|264|248|16|
> |testHashJoinTraitDerivation2|254|238|16|
> |testHashJoinTraitDerivationNegativeCase|294|278|16|
> |testNestedLoopJoinTraitDerivation|264|248|16|
> |testNestedLoopJoinTraitDerivation2|254|238|16|
> |testNestedLoopJoinTraitDerivationNegativeCase|294|278|16|
> |testSortCalc|124|114|10|
> |testSortCalcOnRexCall|107|97|10|
> |testSortCalcWhenCastLeadingToMonotonic|131|125|6|
> |testSortCalcWhenCastLeadingToNonMonotonic|114|108|6|
> |testSortCalcWithFilter|348|333|15|
> |testSortCalcDerive1|323|315|8|
> |testSortCalcDerive2|269|263|6|
> |testSortCalcDerive3|233|230|3|
> |testBatchNestedLoopJoinLeftOuterJoinPushDownSort|206|197|9|
> |testBatchNestedLoopJoinTraitDerivation|275|259|16|
--
This message was sent by Atlassian Jira
(v8.20.10#820010)