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());
+ }
}