UNION/CROSS/JOIN operations should not allow 1 operand
------------------------------------------------------

                 Key: PIG-118
                 URL: https://issues.apache.org/jira/browse/PIG-118
             Project: Pig
          Issue Type: Bug
          Components: impl
    Affects Versions: 0.0.0
            Reporter: Pi Song


At the moment UNION/CROSS/JOIN allow 1 operand.

You can write:-
{noformat}
b = UNION a ;
c = CROSS b ;
d = JOIN c BY $0 ;
{noformat}
Possibly UNION with 1 operand might be needed for implementing Sigma-styled 
union (Ui=1..n An)  but for CROSS/JOIN I think nobody would do such operation.

By simply replacing "*" with "+" in the parser tree should fix this problem. 
Should this be fixed?

{noformat}
LogicalOperator CrossClause() : {LogicalOperator op; ArrayList<OperatorKey> 
inputs = new ArrayList<OperatorKey>();}
{
        (
        op = NestedExpr() { inputs.add(op.getOperatorKey()); }
        ("," op = NestedExpr() { inputs.add(op.getOperatorKey()); })*
        )
        {return rewriteCross(inputs);}
}

LogicalOperator JoinClause() : {CogroupInput gi; ArrayList<CogroupInput> gis = 
new ArrayList<CogroupInput>();}
{
        (gi = GroupItem() { gis.add(gi); }
        ("," gi = GroupItem() { gis.add(gi); })*)
        {return rewriteJoin(gis);}
}

LogicalOperator UnionClause() : {LogicalOperator op; ArrayList<OperatorKey> 
inputs = new ArrayList<OperatorKey>();}
{
        (op = NestedExpr() { inputs.add(op.getOperatorKey()); }
        ("," op = NestedExpr() { inputs.add(op.getOperatorKey()); })*)
        {return new LOUnion(opTable, scope, getNextId(), inputs);}
}
{noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to