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/02/18 02:42:04 UTC
svn commit: r1071855 - in /pig/branches/branch-0.8: CHANGES.txt
src/org/apache/pig/EvalFunc.java
test/org/apache/pig/test/TestEvalPipeline2.java
Author: daijy
Date: Fri Feb 18 01:42:04 2011
New Revision: 1071855
URL: http://svn.apache.org/viewvc?rev=1071855&view=rev
Log:
PIG-1843: NPE in schema generation
Modified:
pig/branches/branch-0.8/CHANGES.txt
pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java
pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java
Modified: pig/branches/branch-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/CHANGES.txt?rev=1071855&r1=1071854&r2=1071855&view=diff
==============================================================================
--- pig/branches/branch-0.8/CHANGES.txt (original)
+++ pig/branches/branch-0.8/CHANGES.txt Fri Feb 18 01:42:04 2011
@@ -213,6 +213,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
BUG FIXES
+PIG-1843: NPE in schema generation (daijy)
+
PIG-1820: New logical plan: FilterLogicExpressionSimplifier fail to deal with UDF (daijy)
PIG-1854: Pig returns exit code 0 for the failed Pig script (rding)
Modified: pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java?rev=1071855&r1=1071854&r2=1071855&view=diff
==============================================================================
--- pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java (original)
+++ pig/branches/branch-0.8/src/org/apache/pig/EvalFunc.java Fri Feb 18 01:42:04 2011
@@ -73,7 +73,7 @@ public abstract class EvalFunc<T> {
private static int nextSchemaId; // for assigning unique ids to UDF columns
protected String getSchemaName(String name, Schema input) {
String alias = name + "_";
- if (input.getAliases().size() > 0){
+ if (input!=null && input.getAliases().size() > 0){
alias += input.getAliases().iterator().next() + "_";
}
Modified: pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java?rev=1071855&r1=1071854&r2=1071855&view=diff
==============================================================================
--- pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java (original)
+++ pig/branches/branch-0.8/test/org/apache/pig/test/TestEvalPipeline2.java Fri Feb 18 01:42:04 2011
@@ -953,13 +953,13 @@ public class TestEvalPipeline2 extends T
// See PIG-1761
@Test
- public void testBagDereferenceInMiddle() throws Exception{
+ public void testBagDereferenceInMiddle1() throws Exception{
String[] input1 = {
"foo@apache#44",
};
- Util.createInputFile(cluster, "table_testBagDereferenceInMiddle", input1);
- pigServer.registerQuery("a = load 'table_testBagDereferenceInMiddle' as (a0:chararray);");
+ Util.createInputFile(cluster, "table_testBagDereferenceInMiddle1", input1);
+ pigServer.registerQuery("a = load 'table_testBagDereferenceInMiddle1' as (a0:chararray);");
pigServer.registerQuery("b = foreach a generate UPPER(REGEX_EXTRACT_ALL(a0, '.*@(.*)#.*').$0);");
Iterator<Tuple> iter = pigServer.openIterator("b");
@@ -968,6 +968,37 @@ public class TestEvalPipeline2 extends T
assertTrue(t.get(0).equals("APACHE"));
}
+ static public class MapGenerate extends EvalFunc<Map> {
+ @Override
+ public Map exec(Tuple input) throws IOException {
+ Map m = new HashMap();
+ m.put("key", new Integer(input.size()));
+ return m;
+ }
+
+ @Override
+ public Schema outputSchema(Schema input) {
+ return new Schema(new Schema.FieldSchema(getSchemaName("parselong", input), DataType.MAP));
+ }
+ }
+
+ // See PIG-1843
+ @Test
+ public void testBagDereferenceInMiddle2() throws Exception{
+ String[] input1 = {
+ "foo apache",
+ };
+
+ Util.createInputFile(cluster, "table_testBagDereferenceInMiddle2", input1);
+ pigServer.registerQuery("a = load 'table_testBagDereferenceInMiddle2' as (a0:chararray);");
+ pigServer.registerQuery("b = foreach a generate " + MapGenerate.class.getName() + " (STRSPLIT(a0).$0);");
+
+ Iterator<Tuple> iter = pigServer.openIterator("b");
+ Tuple t = iter.next();
+ assertTrue(t.size()==1);
+ assertTrue(t.toString().equals("([key#1])"));
+ }
+
// See PIG-1766
@Test
public void testForEachSameOriginColumn1() throws Exception{