public final static List<IAlgebraicRewriteRule> prepareForJobGenRuleCollection() { List<IAlgebraicRewriteRule> prepareForJobGenRewrites = new LinkedList<IAlgebraicRewriteRule>(); prepareForJobGenRewrites.add(new ConvertFromAlgebricksExpressionsRule()); prepareForJobGenRewrites .add(new IsolateHyracksOperatorsRule(HeuristicOptimizer.hyraxOperatorsBelowWhichJobGenIsDisabled)); prepareForJobGenRewrites.add(new ExtractCommonOperatorsRule()); // Re-infer all types, so that, e.g., the effect of not-is-null is // propagated. prepareForJobGenRewrites.add(new PushProjectIntoDataSourceScanRule()); prepareForJobGenRewrites.add(new ReinferAllTypesRule()); prepareForJobGenRewrites.add(new SetExecutionModeRule()); return prepareForJobGenRewrites; } }
private void typePlan(ILogicalPlan p, IOptimizationContext context) throws AlgebricksException { for (Mutable<ILogicalOperator> r : p.getRoots()) { typeOpRec(r, context); } }
private void typeOpRec(Mutable<ILogicalOperator> r, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op = (AbstractLogicalOperator) r.getValue(); for (Mutable<ILogicalOperator> i : op.getInputs()) { typeOpRec(i, context); } if (op.hasNestedPlans()) { for (ILogicalPlan p : ((AbstractOperatorWithNestedPlans) op).getNestedPlans()) { typePlan(p, context); } } context.computeAndSetTypeEnvironmentForOperator(op); context.addToDontApplySet(this, op); }
public static final List<IAlgebraicRewriteRule> prepareForJobGenRuleCollection() { List<IAlgebraicRewriteRule> prepareForJobGenRewrites = new LinkedList<>(); prepareForJobGenRewrites.add(new InsertProjectBeforeUnionRule()); prepareForJobGenRewrites.add(new SetAlgebricksPhysicalOperatorsRule()); prepareForJobGenRewrites .add(new IsolateHyracksOperatorsRule(HeuristicOptimizer.hyraxOperatorsBelowWhichJobGenIsDisabled)); prepareForJobGenRewrites.add(new FixReplicateOperatorOutputsRule()); prepareForJobGenRewrites.add(new ExtractCommonOperatorsRule()); // Re-infer all types, so that, e.g., the effect of not-is-null is // propagated. prepareForJobGenRewrites.add(new ReinferAllTypesRule()); prepareForJobGenRewrites.add(new PushGroupByIntoSortRule()); prepareForJobGenRewrites.add(new SetExecutionModeRule()); prepareForJobGenRewrites.add(new SweepIllegalNonfunctionalFunctions()); prepareForJobGenRewrites.add(new FixReplicateOperatorOutputsRule()); return prepareForJobGenRewrites; } }
@Override public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException { if (context.checkIfInDontApplySet(this, opRef.getValue())) { return false; } typeOpRec(opRef, context); return true; }
public static final List<IAlgebraicRewriteRule> buildLoadFieldsRuleCollection(ICcApplicationContext appCtx) { List<IAlgebraicRewriteRule> fieldLoads = new LinkedList<>(); fieldLoads.add(new LoadRecordFieldsRule()); fieldLoads.add(new PushFieldAccessRule()); // fieldLoads.add(new ByNameToByHandleFieldAccessRule()); -- disabled fieldLoads.add(new ReinferAllTypesRule()); fieldLoads.add(new ByNameToByIndexFieldAccessRule()); fieldLoads.add(new RemoveRedundantVariablesRule()); fieldLoads.add(new AsterixInlineVariablesRule()); fieldLoads.add(new RemoveUnusedAssignAndAggregateRule()); fieldLoads.add(new ConstantFoldingRule(appCtx)); fieldLoads.add(new RemoveRedundantSelectRule()); fieldLoads.add(new FeedScanCollectionToUnnest()); fieldLoads.add(new NestedSubplanToJoinRule()); fieldLoads.add(new InlineSubplanInputForNestedTupleSourceRule()); fieldLoads.add(new RemoveLeftOuterUnnestForLeftOuterJoinRule()); return fieldLoads; }