List of usage examples for org.apache.commons.lang3.mutable Mutable getValue
T getValue();
From source file:edu.uci.ics.hyracks.algebricks.rewriter.rules.PushProjectIntoDataSourceScanRule.java
@Override public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue(); if (op.getInputs().size() <= 0) return false; AbstractLogicalOperator project = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); if (project.getOperatorTag() != LogicalOperatorTag.PROJECT) return false; AbstractLogicalOperator exchange = (AbstractLogicalOperator) project.getInputs().get(0).getValue(); if (exchange.getOperatorTag() != LogicalOperatorTag.EXCHANGE) return false; AbstractLogicalOperator inputOp = (AbstractLogicalOperator) exchange.getInputs().get(0).getValue(); if (inputOp.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN) return false; DataSourceScanOperator scanOp = (DataSourceScanOperator) inputOp; ProjectOperator projectOp = (ProjectOperator) project; scanOp.addProjectVariables(projectOp.getVariables()); if (op.getOperatorTag() != LogicalOperatorTag.EXCHANGE) { op.getInputs().set(0, project.getInputs().get(0)); } else {// w w w . j a va 2 s. c o m op.getInputs().set(0, exchange.getInputs().get(0)); } return true; }
From source file:edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.DistributeResultPOperator.java
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override/*ww w . j av a 2 s. c om*/ public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { DistributeResultOperator resultOp = (DistributeResultOperator) op; IMetadataProvider mp = context.getMetadataProvider(); JobSpecification spec = builder.getJobSpec(); int[] columns = new int[resultOp.getExpressions().size()]; int i = 0; for (Mutable<ILogicalExpression> exprRef : resultOp.getExpressions()) { ILogicalExpression expr = exprRef.getValue(); if (expr.getExpressionTag() != LogicalExpressionTag.VARIABLE) { throw new NotImplementedException("Only writing variable expressions is supported."); } VariableReferenceExpression varRef = (VariableReferenceExpression) expr; LogicalVariable v = varRef.getVariableReference(); columns[i++] = inputSchemas[0].findVariable(v); } RecordDescriptor inputDesc = JobGenHelper.mkRecordDescriptor( context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context); IPrinterFactory[] pf = JobGenHelper.mkPrinterFactories(inputSchemas[0], context.getTypeEnvironment(op), context, columns); Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = mp .getResultHandleRuntime(resultOp.getDataSink(), columns, pf, inputDesc, true, spec); builder.contributeHyracksOperator(resultOp, runtimeAndConstraints.first); ILogicalOperator src = resultOp.getInputs().get(0).getValue(); builder.contributeGraphEdge(src, 0, resultOp, 0); }
From source file:edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.SubplanPOperator.java
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); IPhysicalPropertiesVector childsProperties = op2.getPhysicalOperator().getDeliveredProperties(); List<ILocalStructuralProperty> propsLocal = new ArrayList<ILocalStructuralProperty>(); if (childsProperties.getLocalProperties() != null) { propsLocal.addAll(childsProperties.getLocalProperties()); }/* w ww . ja va2 s . c o m*/ // ... get local properties for newly created variables... SubplanOperator subplan = (SubplanOperator) op; for (ILogicalPlan plan : subplan.getNestedPlans()) { for (Mutable<ILogicalOperator> r : plan.getRoots()) { AbstractLogicalOperator rOp = (AbstractLogicalOperator) r.getValue(); propsLocal.addAll(rOp.getPhysicalOperator().getDeliveredProperties().getLocalProperties()); } } deliveredProperties = new StructuralPropertiesVector(childsProperties.getPartitioningProperty(), propsLocal); }
From source file:edu.uci.ics.hyracks.algebricks.rewriter.rules.AbstractDecorrelationRule.java
protected void buildVarExprList(Collection<LogicalVariable> vars, IOptimizationContext context, GroupByOperator g, List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> outVeList) throws AlgebricksException { for (LogicalVariable ov : vars) { LogicalVariable newVar = context.newVar(); ILogicalExpression varExpr = new VariableReferenceExpression(newVar); outVeList.add(new Pair<LogicalVariable, Mutable<ILogicalExpression>>(ov, new MutableObject<ILogicalExpression>(varExpr))); for (ILogicalPlan p : g.getNestedPlans()) { for (Mutable<ILogicalOperator> r : p.getRoots()) { OperatorManipulationUtil.substituteVarRec((AbstractLogicalOperator) r.getValue(), ov, newVar, true, context);/* w w w. j a va2 s .co m*/ } } } }
From source file:edu.uci.ics.asterix.optimizer.rules.ByNameToByHandleFieldAccessRule.java
@Override public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) { AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue(); if (op.getOperatorTag() != LogicalOperatorTag.ASSIGN) { return false; }//from w w w . j a va2 s .c o m AssignOperator assign = (AssignOperator) op; if (assign.getAnnotations().get(AsterixOperatorAnnotations.PUSHED_FIELD_ACCESS) == null) { return false; } byNameToByHandle(assign, context); return true; }
From source file:edu.uci.ics.asterix.optimizer.rules.RemoveRedundantSelectRule.java
@Override public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue(); if (op.getOperatorTag() != LogicalOperatorTag.SELECT) { return false; }//from w w w . ja va 2 s .co m SelectOperator select = (SelectOperator) op; ILogicalExpression cond = select.getCondition().getValue(); if (alwaysHold(cond)) { opRef.setValue(select.getInputs().get(0).getValue()); return true; } return false; }
From source file:edu.uci.ics.hyracks.algebricks.rewriter.rules.NestedSubplanToJoinRule.java
/** * rewrite NestedTupleSource operators to EmptyTupleSource operators * /* w ww. j ava2 s . c o m*/ * @param nestedRootRef */ private void rewriteNestedTupleSource(Mutable<ILogicalOperator> nestedRootRef) { AbstractLogicalOperator nestedRoot = (AbstractLogicalOperator) nestedRootRef.getValue(); if (nestedRoot.getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) { nestedRootRef.setValue(new EmptyTupleSourceOperator()); } List<Mutable<ILogicalOperator>> inputs = nestedRoot.getInputs(); for (Mutable<ILogicalOperator> input : inputs) { rewriteNestedTupleSource(input); } }
From source file:edu.uci.ics.asterix.optimizer.rules.CheckFilterExpressionTypeRule.java
@Override public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue(); if (op.getOperatorTag() != LogicalOperatorTag.SELECT) { return false; }//from www. j a va 2s. c o m SelectOperator select = (SelectOperator) op; ILogicalExpression condition = select.getCondition().getValue(); IVariableTypeEnvironment env = select.computeOutputTypeEnvironment(context); IAType condType = (IAType) env.getType(condition); if (condType.getTypeTag() != ATypeTag.BOOLEAN && condType.getTypeTag() != ATypeTag.ANY && !isPossibleBoolean(condType)) { throw new AlgebricksException( "The select condition " + condition.toString() + " should be of the boolean type."); } return false; }
From source file:edu.uci.ics.asterix.optimizer.rules.PullPositionalVariableFromUnnestRule.java
@Override public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue(); if (op.getOperatorTag() != LogicalOperatorTag.UNNEST) { return false; }/*from w w w .j a v a 2s .c o m*/ UnnestOperator unnest = (UnnestOperator) op; LogicalVariable p = unnest.getPositionalVariable(); if (p == null) { return false; } ArrayList<LogicalVariable> rOpVars = new ArrayList<LogicalVariable>(); rOpVars.add(p); ArrayList<Mutable<ILogicalExpression>> rOpExprList = new ArrayList<Mutable<ILogicalExpression>>(); StatefulFunctionCallExpression fce = new StatefulFunctionCallExpression( FunctionUtils.getFunctionInfo(AsterixBuiltinFunctions.TID), UnpartitionedPropertyComputer.INSTANCE); rOpExprList.add(new MutableObject<ILogicalExpression>(fce)); RunningAggregateOperator rOp = new RunningAggregateOperator(rOpVars, rOpExprList); rOp.setExecutionMode(unnest.getExecutionMode()); RunningAggregatePOperator rPop = new RunningAggregatePOperator(); rOp.setPhysicalOperator(rPop); rOp.getInputs().add(new MutableObject<ILogicalOperator>(unnest)); opRef.setValue(rOp); unnest.setPositionalVariable(null); context.computeAndSetTypeEnvironmentForOperator(rOp); context.computeAndSetTypeEnvironmentForOperator(unnest); return true; }
From source file:edu.uci.ics.hyracks.algebricks.rewriter.rules.ConsolidateAssignsRule.java
@Override public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue(); if (op.getOperatorTag() != LogicalOperatorTag.ASSIGN) { return false; }/*from w w w . ja v a 2 s . c om*/ AssignOperator assign1 = (AssignOperator) op; AbstractLogicalOperator op2 = (AbstractLogicalOperator) assign1.getInputs().get(0).getValue(); if (op2.getOperatorTag() != LogicalOperatorTag.ASSIGN) { return false; } AssignOperator assign2 = (AssignOperator) op2; HashSet<LogicalVariable> used1 = new HashSet<LogicalVariable>(); VariableUtilities.getUsedVariables(assign1, used1); for (LogicalVariable v2 : assign2.getVariables()) { if (used1.contains(v2)) { return false; } } assign1.getVariables().addAll(assign2.getVariables()); assign1.getExpressions().addAll(assign2.getExpressions()); Mutable<ILogicalOperator> botOpRef = assign2.getInputs().get(0); List<Mutable<ILogicalOperator>> asgnInpList = assign1.getInputs(); asgnInpList.clear(); asgnInpList.add(botOpRef); context.computeAndSetTypeEnvironmentForOperator(assign1); return true; }