@Override public Void visitWindowOperator(WindowOperator op, ILogicalOperator arg) throws AlgebricksException { mapChildren(op, arg); mapVariablesForWindow(op, arg); mapVariablesInNestedPlans(op, arg); return null; }
@Override public Void visitGroupByOperator(GroupByOperator op, ILogicalOperator arg) throws AlgebricksException { mapChildren(op, arg); mapVariablesForGroupBy(op, arg); mapVariablesInNestedPlans(op, arg); return null; }
@Override public Void visitDataScanOperator(DataSourceScanOperator op, Void arg) throws AlgebricksException { standardLayout(op); return null; }
@Override public Void visitLimitOperator(LimitOperator op, IOptimizationContext ctx) throws AlgebricksException { propagateFDsAndEquivClasses(op, ctx); return null; }
@Override public Void visitWriteOperator(WriteOperator op, ILogicalOperator arg) throws AlgebricksException { mapVariablesStandard(op, arg); return null; }
@Override public Boolean visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr, Void arg) throws AlgebricksException { return visitFunctionExpression(expr, arg); }
@Override public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException { substituteVarsForAbstractUnnestMapOp(op, pair); return null; }
@Override public Long visitInnerJoinOperator(InnerJoinOperator op, Void arg) throws AlgebricksException { // Inner join can have 0 to M * N tuples, where M is the cardinality of the left input branch // and N is the cardinality of the right input branch. // We only provide inference for the case the JOIN condition is TRUE. return visitInnerJoin(op, arg); }
@Override public Void visitTokenizeOperator(TokenizeOperator op, IOptimizationContext ctx) throws AlgebricksException { setEmptyFDsEqClasses(op, ctx); return null; }
@Override public Void visitInnerJoinOperator(InnerJoinOperator op, Void arg) throws AlgebricksException { standardLayout(op); return null; }
@Override public Void visitDelegateOperator(DelegateOperator op, IOptimizationContext ctx) throws AlgebricksException { propagateFDsAndEquivClasses(op, ctx); return null; }
@Override public Void visitSinkOperator(SinkOperator op, ILogicalOperator arg) throws AlgebricksException { mapVariablesStandard(op, arg); return null; }
@Override public Boolean visitUnnestingFunctionCallExpression(UnnestingFunctionCallExpression expr, Void arg) throws AlgebricksException { return visitFunctionExpression(expr, arg); }
@Override public Void visitOrderOperator(OrderOperator op, Void arg) throws AlgebricksException { standardLayout(op); return null; }
@Override public Void visitLeftOuterUnnestOperator(LeftOuterUnnestOperator op, IOptimizationContext ctx) throws AlgebricksException { propagateFDsAndEquivClasses(op, ctx); return null; }
@Override public Void visitSelectOperator(SelectOperator op, Void arg) throws AlgebricksException { standardLayout(op); return null; }
@Override public Void visitMaterializeOperator(MaterializeOperator op, IOptimizationContext ctx) throws AlgebricksException { propagateFDsAndEquivClasses(op, ctx); return null; }
@Override public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg) throws AlgebricksException { standardLayout(op); return null; }
@Override public Void visitWindowOperator(WindowOperator op, IOptimizationContext ctx) throws AlgebricksException { propagateFDsAndEquivClasses(op, ctx); return null; } }
@Override public Void visitWriteResultOperator(WriteResultOperator op, Void arg) throws AlgebricksException { standardLayout(op); return null; }