You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2011/04/14 03:48:32 UTC

svn commit: r1091988 - in /pig/trunk: CHANGES.txt contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/PigStorageSchema.java contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/TestPigStorageSchema.java

Author: daijy
Date: Thu Apr 14 01:48:32 2011
New Revision: 1091988

URL: http://svn.apache.org/viewvc?rev=1091988&view=rev
Log:
PIG-1993: PigStorageSchema throw NPE with ColumnPruning

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/PigStorageSchema.java
    pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/TestPigStorageSchema.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1091988&r1=1091987&r2=1091988&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Apr 14 01:48:32 2011
@@ -429,6 +429,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1993: PigStorageSchema throw NPE with ColumnPruning (daijy)
+
 PIG-1935: New logical plan: Should not push up filter in front of Bincond (daijy)
 
 PIG-1912: non-deterministic output when a file is loaded multiple times (daijy)

Modified: pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/PigStorageSchema.java
URL: http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/PigStorageSchema.java?rev=1091988&r1=1091987&r2=1091988&view=diff
==============================================================================
--- pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/PigStorageSchema.java (original)
+++ pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/PigStorageSchema.java Thu Apr 14 01:48:32 2011
@@ -91,7 +91,7 @@ public class PigStorageSchema extends Pi
             // We walk the requiredColumns array to find required fields,
             // and cast those.
             for (int i = 0; i < fieldSchemas.length; i++) {
-                if (mRequiredColumns == null || mRequiredColumns[i]) {
+                if (mRequiredColumns == null || (mRequiredColumns.length>i && mRequiredColumns[i])) {
                     Object val = null;
                     if(tup.get(tupleIdx) != null){
                         byte[] bytes = ((DataByteArray) tup.get(tupleIdx)).get();

Modified: pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/TestPigStorageSchema.java
URL: http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/TestPigStorageSchema.java?rev=1091988&r1=1091987&r2=1091988&view=diff
==============================================================================
--- pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/TestPigStorageSchema.java (original)
+++ pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/TestPigStorageSchema.java Thu Apr 14 01:48:32 2011
@@ -219,4 +219,32 @@ public class TestPigStorageSchema {
 
 
     }
+    
+    // See PIG-1993
+    @Test
+    public void testColumnPrune() throws IOException {
+        Util.createInputFile(cluster, "originput2",
+                new String[] {"peter\t1", "samir\t2", "michael\t4",
+                "peter\t2", "peter\t4", "samir\t1", "john\t"
+        });
+        Util.createInputFile(cluster, ".pig_schema",
+                new String[] {
+                "{\"fields\":[{\"name\":\"name\",\"type\":55,\"schema\":null," +
+                "\"description\":\"autogenerated from Pig Field Schema\"}," +
+                "{\"name\":\"val\",\"type\":10,\"schema\":null,\"description\":"+
+                "\"autogenerated from Pig Field Schema\"}],\"version\":0," +
+                "\"sortKeys\":[],\"sortKeyOrders\":[]}"
+        });
+        pig.registerQuery("Events = LOAD 'originput2' USING org.apache.pig.piggybank.storage.PigStorageSchema();");
+        pig.registerQuery("EventsName = foreach Events generate name;");
+        Iterator<Tuple> sessions = pig.openIterator("EventsName");
+        sessions.next().toString().equals("(1)");
+        sessions.next().toString().equals("(2)");
+        sessions.next().toString().equals("(4)");
+        sessions.next().toString().equals("(2)");
+        sessions.next().toString().equals("(4)");
+        sessions.next().toString().equals("(1)");
+        sessions.next().toString().equals("()");
+        Assert.assertFalse(sessions.hasNext());
+    }
 }