[ https://issues.apache.org/jira/browse/ASTERIXDB-1686?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Wenhai updated ASTERIXDB-1686: ------------------------------ Description: The query plan seems not converge in the current rule collections. Operation We changed the APIFramework as following: {noformat} private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> buildDefaultLogicalRewrites(CompilerExtensionManager ccExtensionManager) { List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> defaultLogicalRewrites = new ArrayList<>(); SequentialFixpointRuleController seqCtrlNoDfs = new SequentialFixpointRuleController(false); SequentialFixpointRuleController seqCtrlFullDfs = new SequentialFixpointRuleController(true); SequentialOnceRuleController seqOnceCtrl = new SequentialOnceRuleController(true); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildInitialTranslationRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildTypeInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildAutogenerateIDRuleCollection())); defaultLogicalRewrites .add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); defaultLogicalRewrites .add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection())); // fj defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildFuzzyJoinRuleCollection())); defaultLogicalRewrites .add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); defaultLogicalRewrites .add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection())); // defaultLogicalRewrites .add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); defaultLogicalRewrites .add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildDataExchangeRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildConsolidationRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildAccessMethodRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildPlanCleanupRuleCollection())); //put TXnRuleCollection! return defaultLogicalRewrites; } {noformat} which means we conducted the three two-round collections NormalizationRuleCollection, PushDownAndJoinInferenceRuleCollection and LoadFieldsRuleCollection to run three time. Results: {noformat} ExecutionTests executed successfully. OptimizerTests has 59 errors and most of them are reasonable in terms of the rules. {noformat} Our current master has some plans that are not optimized completely? was: The query plan seems not converge in the current rule collections. Operation We changed the APIFramework as following: {noformat} private static List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> buildDefaultLogicalRewrites(CompilerExtensionManager ccExtensionManager) { List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> defaultLogicalRewrites = new ArrayList<>(); SequentialFixpointRuleController seqCtrlNoDfs = new SequentialFixpointRuleController(false); SequentialFixpointRuleController seqCtrlFullDfs = new SequentialFixpointRuleController(true); SequentialOnceRuleController seqOnceCtrl = new SequentialOnceRuleController(true); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildInitialTranslationRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildTypeInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildAutogenerateIDRuleCollection())); defaultLogicalRewrites .add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); defaultLogicalRewrites .add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection())); // fj defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildFuzzyJoinRuleCollection())); defaultLogicalRewrites .add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); defaultLogicalRewrites .add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection())); // defaultLogicalRewrites .add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); defaultLogicalRewrites .add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, RuleCollections.buildLoadFieldsRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, RuleCollections.buildDataExchangeRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildConsolidationRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildAccessMethodRuleCollection())); defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, RuleCollections.buildPlanCleanupRuleCollection())); //put TXnRuleCollection! return defaultLogicalRewrites; } {noformat} which means we conducted the three two-round collections NormalizationRuleCollection, PushDownAndJoinInferenceRuleCollection and LoadFieldsRuleCollection to run three time. Results: {noformat} ExecutionTests executed successfully. OptimizerTests has 59 errors and more of them are reasonable in terms of the rules. {noformat} Our current master has some plans that are not optimized completely? > Optimized plan doesn't converge > ------------------------------- > > Key: ASTERIXDB-1686 > URL: https://issues.apache.org/jira/browse/ASTERIXDB-1686 > Project: Apache AsterixDB > Issue Type: Bug > Components: AsterixDB > Environment: MAC/LINUX > Reporter: Wenhai > Assignee: Wenhai > > The query plan seems not converge in the current rule collections. > Operation > We changed the APIFramework as following: > {noformat} > private static List<Pair<AbstractRuleController, > List<IAlgebraicRewriteRule>>> > buildDefaultLogicalRewrites(CompilerExtensionManager > ccExtensionManager) { > List<Pair<AbstractRuleController, List<IAlgebraicRewriteRule>>> > defaultLogicalRewrites = new ArrayList<>(); > SequentialFixpointRuleController seqCtrlNoDfs = new > SequentialFixpointRuleController(false); > SequentialFixpointRuleController seqCtrlFullDfs = new > SequentialFixpointRuleController(true); > SequentialOnceRuleController seqOnceCtrl = new > SequentialOnceRuleController(true); > defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, > RuleCollections.buildInitialTranslationRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, > RuleCollections.buildTypeInferenceRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, > RuleCollections.buildAutogenerateIDRuleCollection())); > defaultLogicalRewrites > .add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); > defaultLogicalRewrites > .add(new Pair<>(seqCtrlNoDfs, > RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildLoadFieldsRuleCollection())); > // fj > defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildFuzzyJoinRuleCollection())); > defaultLogicalRewrites > .add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); > defaultLogicalRewrites > .add(new Pair<>(seqCtrlNoDfs, > RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildLoadFieldsRuleCollection())); > // > defaultLogicalRewrites > .add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildNormalizationRuleCollection(ccExtensionManager))); > defaultLogicalRewrites > .add(new Pair<>(seqCtrlNoDfs, > RuleCollections.buildCondPushDownAndJoinInferenceRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqCtrlFullDfs, > RuleCollections.buildLoadFieldsRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqOnceCtrl, > RuleCollections.buildDataExchangeRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, > RuleCollections.buildConsolidationRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, > RuleCollections.buildAccessMethodRuleCollection())); > defaultLogicalRewrites.add(new Pair<>(seqCtrlNoDfs, > RuleCollections.buildPlanCleanupRuleCollection())); > //put TXnRuleCollection! > return defaultLogicalRewrites; > } > {noformat} > which means we conducted the three two-round collections > NormalizationRuleCollection, PushDownAndJoinInferenceRuleCollection and > LoadFieldsRuleCollection to run three time. > Results: > {noformat} > ExecutionTests executed successfully. > OptimizerTests has 59 errors and most of them are reasonable in terms of the > rules. > {noformat} > Our current master has some plans that are not optimized completely? -- This message was sent by Atlassian JIRA (v6.3.4#6332)