Package org.apache.pig.newplan.logical.expression

Examples of org.apache.pig.newplan.logical.expression.LogicalExpression


   }
   
    public void visit(LOProject project) throws VisitorException {
        int col = project.getCol();
       
        LogicalExpression pe;
        if (project.getPlan().getPredecessors(project)!=null && project.getPlan().getPredecessors(project).get(0)
                instanceof LOProject) {
            List<Integer> columnNums = new ArrayList<Integer>();
            columnNums.add(col);
            pe = new DereferenceExpression(exprPlan, columnNums);
View Full Code Here


        UserFuncExpression exp = new UserFuncExpression(exprPlan, op.getFuncSpec());
       
        List<ExpressionOperator> args = op.getArguments();
       
        for( ExpressionOperator arg : args ) {
            LogicalExpression expArg = exprOpsMap.get(arg);
            exprPlan.connect(exp, expArg);
        }
       
        exprOpsMap.put(op, exp);
        // We need to track all the scalars
View Full Code Here

       
        LogicalSchema.LogicalFieldSchema logfieldSchema =
            new LogicalSchema.LogicalFieldSchema( fieldSchema.alias,
                    Util.translateSchema(fieldSchema.schema), fieldSchema.type);
       
        LogicalExpression map = exprOpsMap.get( colOp.getMap() );
       
        MapLookupExpression op = new MapLookupExpression(exprPlan,
                colOp.getLookUpKey(),  logfieldSchema);
       
        exprPlan.connect(op, map);
View Full Code Here

        // This case occurs when there are two projects one after another
        // These projects in combination project a column (bag) out of a tuple
        // and then project a column out of this projected bag
        // Here we merge these two projects into one BagDereferenceExpression
        else if( op instanceof LOProject ) {
            LogicalExpression expOper = exprOpsMap.get(op);
           
            if (expOper!=null) {
                // Add the dereference in the plan
                DereferenceExpression dereferenceExp = new DereferenceExpression(
                        exprPlan, project.getProjection());
                exprOpsMap.put(project, dereferenceExp);
                exprPlan.add(dereferenceExp);
                exprPlan.connect(dereferenceExp, expOper);
            }
        } else {
            if (op instanceof RelationalOperator && project.isSendEmptyBagOnEOP()) {
                LogicalOperator currentOp = op;
                while (currentOp instanceof RelationalOperator) {
                    List<LogicalOperator> preds = mPlan.getPredecessors(currentOp);
                    if (preds!=null)
                        currentOp = preds.get(0);
                    else break;
                }
                if (currentOp instanceof ExpressionOperator) {
                    LogicalExpression exp = exprOpsMap.get(currentOp);
                    if (exp!=null)
                        exprOpsMap.put(project, exp);
                }
            }
        }
View Full Code Here

       
        EqualExpression eq = (EqualExpression)exp.getSources().get(0);
        assertEquals(eq.getLhs().getClass(), CastExpression.class);
               
        assertEquals(eq.getLhs().getClass(), CastExpression.class);
        LogicalExpression ep = (LogicalExpression)exp.getSuccessors(eq.getLhs()).get(0);
        assertEquals(ep.getClass(), ProjectExpression.class);
        assertEquals(((ProjectExpression)ep).getColNum(), 0);
        assertEquals(((ProjectExpression)ep).getInputNum(), 0);
       
        assertEquals(eq.getRhs().getClass(), ConstantExpression.class);
       
View Full Code Here

            List<Long> uidSeen = new ArrayList<Long>();
           
            for (int i=0;i<expPlans.size();i++) {
                LogicalExpressionPlan expPlan = expPlans.get(i);
                boolean flatten = flattens[i];
                LogicalExpression exp = (LogicalExpression)expPlan.getSources().get(0);
                if (exp.getFieldSchema()!=null) {
                    if (flatten && (exp.getFieldSchema().type == DataType.BAG || exp.getFieldSchema().type == DataType.TUPLE)) {
                        List<LogicalFieldSchema> innerFieldSchemas = null;
                        if (exp.getFieldSchema().type == DataType.BAG) {
                            if (exp.getFieldSchema().schema!=null) {
                                if (exp.getFieldSchema().schema.isTwoLevelAccessRequired()) {
                                    //  assert(fieldSchema.schema.size() == 1 && fieldSchema.schema.getField(0).type == DataType.TUPLE)
                                    innerFieldSchemas = exp.getFieldSchema().schema.getField(0).schema.getFields();
                                } else {
                                    innerFieldSchemas = exp.getFieldSchema().schema.getFields();
                                }
                            }
                        }
                        else { // DataType.TUPLE
                            if (exp.getFieldSchema().schema!=null)
                                innerFieldSchemas = exp.getFieldSchema().schema.getFields();
                        }
                        if (innerFieldSchemas != null) {
                            for (LogicalFieldSchema innerFieldSchema : innerFieldSchemas) {
                                long uid = innerFieldSchema.uid;
                                if (checkAndAdd(uid, uidSeen)) {
                                    // Seen before
                                    expPlansToInsertIdentity.add(expPlan);
                                    break;
                                }
                            }
                        }
                    }
                    else {
                        long uid = exp.getFieldSchema().uid;
                        if (checkAndAdd(uid, uidSeen)) {
                            // Seen before
                            expPlansToInsertIdentity.add(expPlan);
                        }
                    }
View Full Code Here

        }

        @Override
        public void transform(OperatorPlan matched) throws FrontendException {
            for (LogicalExpressionPlan expPlan : expPlansToInsertIdentity) {
                LogicalExpression oldRoot = (LogicalExpression)expPlan.getSources().get(0);
                UserFuncExpression userFuncExpression = new UserFuncExpression(expPlan, new FuncSpec(IdentityColumn.class.getName()));
                expPlan.connect(userFuncExpression, oldRoot);
            }
            expPlansToInsertIdentity.clear();
View Full Code Here

                if( predecessor instanceof LOCogroup ) {
                    for( ProjectExpression projExpr : projExprs ) {
                        // Need to merge filter condition and cogroup by expression;
                        LogicalExpressionPlan plan = ((LOCogroup) predecessor).getExpressionPlans().get( inputIndex ).iterator().next();
                        LogicalExpressionPlan copy = plan.deepCopy();
                        LogicalExpression root = (LogicalExpression)copy.getSinks().get( 0 );
                        List<Operator> predecessors = fPlan.getPredecessors( projExpr );
                        if( predecessors == null || predecessors.size() == 0 ) {
                            fPlan.remove( projExpr );
                            fPlan.add( root );
                        } else {
View Full Code Here

        // One particular case is when there are two projects one after another
        // These projects in combination project a column (bag) out of a tuple
        // and then project a column out of this projected bag
        // Here we merge these two projects into one BagDereferenceExpression
        else if( op instanceof ExpressionOperator ) {
            LogicalExpression expOper = exprOpsMap.get(op);
           
            if (expOper!=null) {
                // Add the dereference in the plan
                DereferenceExpression dereferenceExp = new DereferenceExpression(
                        exprPlan, project.getProjection());
                exprOpsMap.put(project, dereferenceExp);
                exprPlan.add(dereferenceExp);
                exprPlan.connect(dereferenceExp, expOper);
            }
        } else {
            // If project is after a relational operator
            if (op instanceof RelationalOperator && project.isSendEmptyBagOnEOP()) {
                LogicalOperator currentOp = op;
                while (currentOp instanceof RelationalOperator) {
                    List<LogicalOperator> preds = mPlan.getPredecessors(currentOp);
                    if (preds!=null)
                        currentOp = preds.get(0);
                    else break;
                }
                if (currentOp instanceof ExpressionOperator) {
                    LogicalExpression exp = exprOpsMap.get(currentOp);
                    if (exp!=null)
                        exprOpsMap.put(project, exp);
                }
            }
        }
View Full Code Here

       
        schema = new LogicalSchema();
        outputPlanSchemas = new ArrayList<LogicalSchema>();
       
        for(int i=0; i<outputPlans.size(); i++) {
            LogicalExpression exp = (LogicalExpression)outputPlans.get(i).getSources().get(0);
           
            LogicalSchema mUserDefinedSchemaCopy = null;
            if (mUserDefinedSchema!=null && mUserDefinedSchema.get(i)!=null) {
                mUserDefinedSchemaCopy = new LogicalSchema();
                for (LogicalSchema.LogicalFieldSchema fs : mUserDefinedSchema.get(i).getFields()) {
                    mUserDefinedSchemaCopy.addField(fs.deepCopy());
                }
            }
           
            LogicalFieldSchema fieldSchema = null;
           
            // schema of expression, or inner schema if expression is flattenned
            LogicalSchema expSchema = null;
           
            if (exp.getFieldSchema()!=null) {
           
                fieldSchema = exp.getFieldSchema().deepCopy();
               
                expSchema = new LogicalSchema();
                if (!flattenFlags[i] || (fieldSchema.type != DataType.TUPLE && fieldSchema.type != DataType.BAG)) {
                    // if type is primitive, just add to schema
                    if (fieldSchema!=null)
View Full Code Here

TOP

Related Classes of org.apache.pig.newplan.logical.expression.LogicalExpression

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.