You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ol...@apache.org on 2011/11/17 02:50:58 UTC
svn commit: r1203005 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/builtin/STRSPLIT.java test/e2e/pig/tests/nightly.conf
Author: olga
Date: Thu Nov 17 01:50:57 2011
New Revision: 1203005
URL: http://svn.apache.org/viewvc?rev=1203005&view=rev
Log:
PIG-2311: STRSPLIT needs to allow bytearray arguments (xuting via olgan)
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/builtin/STRSPLIT.java
pig/trunk/test/e2e/pig/tests/nightly.conf
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1203005&r1=1203004&r2=1203005&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Nov 17 01:50:57 2011
@@ -24,6 +24,8 @@ INCOMPATIBLE CHANGES
IMPROVEMENTS
+PIG-2311: STRSPLIT needs to allow bytearray arguments (xuting via olgan)
+
PIG-2365: Current TOP implementation needlessly results in a null bag name (jcoveney via dvryaboy)
PIG-2151: Add annotation to specify output schema in Java UDFs (dvryaboy)
Modified: pig/trunk/src/org/apache/pig/builtin/STRSPLIT.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/STRSPLIT.java?rev=1203005&r1=1203004&r2=1203005&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/STRSPLIT.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/STRSPLIT.java Thu Nov 17 01:50:57 2011
@@ -20,12 +20,19 @@ package org.apache.pig.builtin;
import java.io.IOException;
import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.List;
import java.util.regex.PatternSyntaxException;
import org.apache.pig.EvalFunc;
import org.apache.pig.PigWarning;
import org.apache.pig.data.Tuple;
import org.apache.pig.data.TupleFactory;
+import org.apache.pig.impl.logicalLayer.schema.Schema;
+import org.apache.pig.FuncSpec;
+import org.apache.pig.data.DataType;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+
/**
* Wrapper around Java's String.split<br>
@@ -70,4 +77,36 @@ public class STRSPLIT extends EvalFunc<T
// this only happens if the try block did not complete normally
return null;
}
+
+ /*
+ * The outputSchema of STRSPLIT cannot be set as DataType.chararry otherwise in some cases,
+ * it will cause error. For example, when stringsize() is called.
+ */
+ @Override
+ public Schema outputSchema(Schema input) {
+ return new Schema(new Schema.FieldSchema(null, DataType.TUPLE));
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.pig.EvalFunc#getArgToFuncMapping()
+ */
+ @Override
+ public List<FuncSpec> getArgToFuncMapping() throws FrontendException {
+ List<FuncSpec> funcList = new ArrayList<FuncSpec>();
+ Schema s = new Schema(new Schema.FieldSchema(null, DataType.CHARARRAY));
+
+ Schema s1 = new Schema();
+ s1.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ s1.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+
+ Schema s2 = new Schema();
+ s2.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ s2.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ s2.add(new Schema.FieldSchema(null, DataType.INTEGER));
+
+ funcList.add(new FuncSpec(this.getClass().getName(), s));
+ funcList.add(new FuncSpec(this.getClass().getName(), s1));
+ funcList.add(new FuncSpec(this.getClass().getName(), s2));
+ return funcList;
+ }
}
Modified: pig/trunk/test/e2e/pig/tests/nightly.conf
URL: http://svn.apache.org/viewvc/pig/trunk/test/e2e/pig/tests/nightly.conf?rev=1203005&r1=1203004&r2=1203005&view=diff
==============================================================================
--- pig/trunk/test/e2e/pig/tests/nightly.conf (original)
+++ pig/trunk/test/e2e/pig/tests/nightly.conf Thu Nov 17 01:50:57 2011
@@ -4024,6 +4024,23 @@ store E into ':OUTPATH:';\,
store C into ':OUTPATH:';?,
}
],
+ },{
+ 'name' => 'STRSPLIT',
+ 'tests' => [
+ {
+ # See PIG-2311
+ 'num' => 1,
+ 'pig' => q?a = load ':INPATH:/singlefile/studenttab10k' AS (a0);
+ b= filter a by NOT (a0 is null);
+ c= foreach b generate STRSPLIT(a0);
+ store c into ':OUTPATH:';?,
+ 'verify_pig_script' => q?a = load ':INPATH:/singlefile/studenttab10k' AS (a0);
+ b= filter a by NOT (a0 is null);
+ b= foreach b generate (chararray)a0 as a0 ;
+ c= foreach b generate STRSPLIT(a0);
+ store c into ':OUTPATH:';?,
+ }
+ ],
},
],
},