package edu.uci.ics.hivesterix.optimizer.rulecollections; | |
import java.util.LinkedList; | |
import edu.uci.ics.hivesterix.optimizer.rules.InsertProjectBeforeWriteRule; | |
import edu.uci.ics.hivesterix.optimizer.rules.IntroduceEarlyProjectRule; | |
import edu.uci.ics.hivesterix.optimizer.rules.LocalGroupByRule; | |
import edu.uci.ics.hivesterix.optimizer.rules.RemoveRedundantSelectRule; | |
import edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer; | |
import edu.uci.ics.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.BreakSelectIntoConjunctsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ComplexJoinInferenceRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateAssignsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateSelectsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.EliminateSubplanRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.EnforceStructuralPropertiesRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractCommonOperatorsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ExtractGbyExpressionsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.FactorRedundantGroupAndDecorVarsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.InferTypesRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.InlineVariablesRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.InsertProjectBeforeUnionRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceAggregateCombinerRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.IntroduceGroupByCombinerRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PullSelectOutOfEqJoin; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushLimitDownRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectDownRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectIntoDataSourceScanRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectDownRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.PushSelectIntoJoinRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.ReinferAllTypesRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveRedundantProjectionRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.RemoveUnusedAssignAndAggregateRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetAlgebricksPhysicalOperatorsRule; | |
import edu.uci.ics.hyracks.algebricks.rewriter.rules.SetExecutionModeRule; | |
public final class HiveRuleCollections { | |
public final static LinkedList<IAlgebraicRewriteRule> NORMALIZATION = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
NORMALIZATION.add(new EliminateSubplanRule()); | |
NORMALIZATION.add(new IntroduceAggregateCombinerRule()); | |
NORMALIZATION.add(new BreakSelectIntoConjunctsRule()); | |
NORMALIZATION.add(new IntroduceAggregateCombinerRule()); | |
NORMALIZATION.add(new PushSelectIntoJoinRule()); | |
NORMALIZATION.add(new ExtractGbyExpressionsRule()); | |
NORMALIZATION.add(new RemoveRedundantSelectRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> COND_PUSHDOWN_AND_JOIN_INFERENCE = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new PushSelectDownRule()); | |
COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new InlineVariablesRule()); | |
COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new FactorRedundantGroupAndDecorVarsRule()); | |
COND_PUSHDOWN_AND_JOIN_INFERENCE.add(new EliminateSubplanRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> LOAD_FIELDS = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
// should LoadRecordFieldsRule be applied in only one pass over the | |
// plan? | |
LOAD_FIELDS.add(new InlineVariablesRule()); | |
// LOAD_FIELDS.add(new RemoveUnusedAssignAndAggregateRule()); | |
LOAD_FIELDS.add(new ComplexJoinInferenceRule()); | |
LOAD_FIELDS.add(new InferTypesRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> OP_PUSHDOWN = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
OP_PUSHDOWN.add(new PushProjectDownRule()); | |
OP_PUSHDOWN.add(new PushSelectDownRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> DATA_EXCHANGE = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
DATA_EXCHANGE.add(new SetExecutionModeRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> CONSOLIDATION = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
CONSOLIDATION.add(new RemoveRedundantProjectionRule()); | |
CONSOLIDATION.add(new ConsolidateSelectsRule()); | |
CONSOLIDATION.add(new IntroduceEarlyProjectRule()); | |
CONSOLIDATION.add(new ConsolidateAssignsRule()); | |
CONSOLIDATION.add(new IntroduceGroupByCombinerRule()); | |
CONSOLIDATION.add(new RemoveUnusedAssignAndAggregateRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> PHYSICAL_PLAN_REWRITES = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
PHYSICAL_PLAN_REWRITES.add(new PullSelectOutOfEqJoin()); | |
PHYSICAL_PLAN_REWRITES.add(new SetAlgebricksPhysicalOperatorsRule()); | |
PHYSICAL_PLAN_REWRITES.add(new EnforceStructuralPropertiesRule()); | |
PHYSICAL_PLAN_REWRITES.add(new PushProjectDownRule()); | |
PHYSICAL_PLAN_REWRITES.add(new SetAlgebricksPhysicalOperatorsRule()); | |
PHYSICAL_PLAN_REWRITES.add(new PushLimitDownRule()); | |
PHYSICAL_PLAN_REWRITES.add(new InsertProjectBeforeWriteRule()); | |
PHYSICAL_PLAN_REWRITES.add(new InsertProjectBeforeUnionRule()); | |
} | |
public final static LinkedList<IAlgebraicRewriteRule> prepareJobGenRules = new LinkedList<IAlgebraicRewriteRule>(); | |
static { | |
prepareJobGenRules.add(new ReinferAllTypesRule()); | |
prepareJobGenRules.add(new IsolateHyracksOperatorsRule( | |
HeuristicOptimizer.hyraxOperatorsBelowWhichJobGenIsDisabled)); | |
prepareJobGenRules.add(new ExtractCommonOperatorsRule()); | |
prepareJobGenRules.add(new LocalGroupByRule()); | |
prepareJobGenRules.add(new PushProjectIntoDataSourceScanRule()); | |
prepareJobGenRules.add(new ReinferAllTypesRule()); | |
} | |
} |