Wenhai created ASTERIXDB-1686:
---------------------------------
Summary: 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 more 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)