Author: gates
Date: Wed Aug 27 14:42:11 2008
New Revision: 689631

URL: http://svn.apache.org/viewvc?rev=689631&view=rev
Log:
PIG-359.  Shravan's patch to fix * semantics in generate and when passed as an 
argument to a UDF.


Modified:
    
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
    
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POForEach.java
    incubator/pig/branches/types/test/org/apache/pig/test/TestPOUserFunc.java
    
incubator/pig/branches/types/test/org/apache/pig/test/data/GoldenFiles/ComplexForeach.gld

Modified: 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java?rev=689631&r1=689630&r2=689631&view=diff
==============================================================================
--- 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
 (original)
+++ 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POUserFunc.java
 Wed Aug 27 14:42:11 2008
@@ -152,13 +152,19 @@
                 }
                 if(temp.returnStatus!=POStatus.STATUS_OK)
                     return temp;
-
+                
+                if(op instanceof POProject){
+                    POProject projOp = (POProject)op;
+                    if(projOp.isStar()){
+                        Tuple trslt = (Tuple) temp.result;
+                        Tuple rslt = (Tuple) res.result;
+                        for(int i=0;i<trslt.size();i++)
+                            rslt.append(trslt.get(i));
+                        continue;
+                    }
+                }
                 ((Tuple)res.result).append(temp.result);
                        }
-            Tuple rslt = ((Tuple)res.result);
-            if(rslt.size()==1 && rslt.get(0) instanceof Tuple){
-                res.result = rslt.get(0);
-            }
                        res.returnStatus = temp.returnStatus;
                        return res;
                }

Modified: 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POForEach.java
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POForEach.java?rev=689631&r1=689630&r2=689631&view=diff
==============================================================================
--- 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POForEach.java
 (original)
+++ 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POForEach.java
 Wed Aug 27 14:42:11 2008
@@ -17,6 +17,7 @@
 import org.apache.pig.backend.hadoop.executionengine.physicalLayer.POStatus;
 import 
org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator;
 import org.apache.pig.backend.hadoop.executionengine.physicalLayer.Result;
+import 
org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject;
 import 
org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhyPlanVisitor;
 import 
org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhysicalPlan;
 import org.apache.pig.impl.plan.OperatorKey;
@@ -331,8 +332,13 @@
     
     private void getLeaves() {
         if (inputPlans != null) {
+            int i=-1;
             for(PhysicalPlan p : inputPlans) {
-                planLeaves.add((PhysicalOperator)p.getLeaves().get(0));
+                ++i;
+                PhysicalOperator leaf = 
(PhysicalOperator)p.getLeaves().get(0); 
+                planLeaves.add(leaf);
+                if(leaf instanceof POProject && ((POProject)leaf).isStar())
+                    isToBeFlattened.set(i, true);
             }
         }
     }

Modified: 
incubator/pig/branches/types/test/org/apache/pig/test/TestPOUserFunc.java
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestPOUserFunc.java?rev=689631&r1=689630&r2=689631&view=diff
==============================================================================
--- incubator/pig/branches/types/test/org/apache/pig/test/TestPOUserFunc.java 
(original)
+++ incubator/pig/branches/types/test/org/apache/pig/test/TestPOUserFunc.java 
Wed Aug 27 14:42:11 2008
@@ -55,7 +55,13 @@
 
                @Override
                public Integer exec(Tuple input) throws IOException {
-                       return new Integer(input.size());
+                       try {
+                return new Integer(((Tuple)input.get(0)).size());
+            } catch (ExecException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            return 0;
                }
 
                @Override

Modified: 
incubator/pig/branches/types/test/org/apache/pig/test/data/GoldenFiles/ComplexForeach.gld
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/data/GoldenFiles/ComplexForeach.gld?rev=689631&r1=689630&r2=689631&view=diff
==============================================================================
--- 
incubator/pig/branches/types/test/org/apache/pig/test/data/GoldenFiles/ComplexForeach.gld
 (original)
+++ 
incubator/pig/branches/types/test/org/apache/pig/test/data/GoldenFiles/ComplexForeach.gld
 Wed Aug 27 14:42:11 2008
@@ -1,4 +1,4 @@
-New For Each(false)[bag] - Test-Plan-Builder-16
+New For Each(true)[bag] - Test-Plan-Builder-16
 |   |
 |   Project[tuple][*] - Test-Plan-Builder-15
 |   |


Reply via email to