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

Reply via email to