Author: olga
Date: Tue Oct 14 18:13:11 2008
New Revision: 704756

URL: http://svn.apache.org/viewvc?rev=704756&view=rev
Log:
PIG-495: bag projection

Modified:
    
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POProject.java
    incubator/pig/branches/types/test/org/apache/pig/test/TestEvalPipeline.java
    incubator/pig/branches/types/test/org/apache/pig/test/Util.java

Modified: 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POProject.java
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POProject.java?rev=704756&r1=704755&r2=704756&view=diff
==============================================================================
--- 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POProject.java
 (original)
+++ 
incubator/pig/branches/types/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POProject.java
 Tue Oct 14 18:13:11 2008
@@ -181,9 +181,9 @@
         }
         DataBag outBag = BagFactory.getInstance().newDefaultBag();
         for (Tuple tuple : inpBag) {
-            Tuple tmpTuple = tupleFactory.newTuple();
+            Tuple tmpTuple = tupleFactory.newTuple(columns.size());
             for (int i = 0; i < columns.size(); i++)
-                tmpTuple.append(tuple.get(columns.get(i)));
+                tmpTuple.set(i, tuple.get(columns.get(i)));
             outBag.add(tmpTuple);
         }
         res.result = outBag;

Modified: 
incubator/pig/branches/types/test/org/apache/pig/test/TestEvalPipeline.java
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestEvalPipeline.java?rev=704756&r1=704755&r2=704756&view=diff
==============================================================================
--- incubator/pig/branches/types/test/org/apache/pig/test/TestEvalPipeline.java 
(original)
+++ incubator/pig/branches/types/test/org/apache/pig/test/TestEvalPipeline.java 
Tue Oct 14 18:13:11 2008
@@ -583,6 +583,22 @@
     }
 
     @Test
+    public void testProjectBag() throws IOException, ExecException {
+        // This tests make sure that when a bag with multiple columns is
+        // projected all columns apear in the output
+        File input = Util.createInputFile("tmp", "", 
+                new String[] {"f1\tf2\tf3"});
+        pigServer.registerQuery("a = load 'file:" + 
Util.encodeEscape(input.toString()) + "' as (x, y, z);");
+        pigServer.registerQuery("b = group a by x;");
+        pigServer.registerQuery("c = foreach b generate flatten(a.(y, z));");
+        Iterator<Tuple> it = pigServer.openIterator("c");
+        Tuple t = it.next();
+        assertEquals(2, t.size());
+        assertEquals("f2", t.get(0).toString());
+        assertEquals("f3", t.get(1).toString());
+    }
+
+    @Test
     public void testBinStorageDetermineSchema2() throws IOException, 
ExecException {
         // Create input file with ascii data
         File input = Util.createInputFile("tmp", "", 
@@ -643,6 +659,4 @@
         assertEquals(1, t.get(2));
         assertEquals(Integer.class, t.get(2).getClass());
     }
-
-    
 }

Modified: incubator/pig/branches/types/test/org/apache/pig/test/Util.java
URL: 
http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/Util.java?rev=704756&r1=704755&r2=704756&view=diff
==============================================================================
--- incubator/pig/branches/types/test/org/apache/pig/test/Util.java (original)
+++ incubator/pig/branches/types/test/org/apache/pig/test/Util.java Tue Oct 14 
18:13:11 2008
@@ -165,6 +165,7 @@
                                                   String[] inputData) 
        throws IOException {
                File f = File.createTempFile(tmpFilenamePrefix, 
tmpFilenameSuffix);
+        f.deleteOnExit();
                PrintWriter pw = new PrintWriter(f);
                for (int i=0; i<inputData.length; i++){
                        pw.println(inputData[i]);


Reply via email to