Example usage for org.apache.commons.lang3.mutable Mutable getValue

List of usage examples for org.apache.commons.lang3.mutable Mutable getValue

Introduction

In this page you can find the example usage for org.apache.commons.lang3.mutable Mutable getValue.

Prototype

T getValue();

Source Link

Document

Gets the value of this mutable.

Usage

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;
}