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:';?,
+                    }
+                ],
             },
         ],
     },