[
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)