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/12/01 03:07:39 UTC

svn commit: r1208931 - in /pig/branches/branch-0.10: CHANGES.txt src/org/apache/pig/builtin/STRSPLIT.java test/e2e/pig/tests/nightly.conf

Author: olga
Date: Thu Dec  1 02:07:38 2011
New Revision: 1208931

URL: http://svn.apache.org/viewvc?rev=1208931&view=rev
Log:
PIG-2311: STRSPLIT needs to allow bytearray arguments (xuting via olgan)

Modified:
    pig/branches/branch-0.10/CHANGES.txt
    pig/branches/branch-0.10/src/org/apache/pig/builtin/STRSPLIT.java
    pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf

Modified: pig/branches/branch-0.10/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/CHANGES.txt?rev=1208931&r1=1208930&r2=1208931&view=diff
==============================================================================
--- pig/branches/branch-0.10/CHANGES.txt (original)
+++ pig/branches/branch-0.10/CHANGES.txt Thu Dec  1 02:07:38 2011
@@ -24,6 +24,8 @@ INCOMPATIBLE CHANGES
 
 IMPROVEMENTS
 
+PIG-2311: STRSPLIT needs to allow bytearray arguments (xuting via olgan)
+
 PIG-2300: Pig Docs - release 0.10.0 (and 0.9.1) (chandec via daijy)
 
 PIG-2230: Improved error message for invalid parameter format (xuitingz via olgan)

Modified: pig/branches/branch-0.10/src/org/apache/pig/builtin/STRSPLIT.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/builtin/STRSPLIT.java?rev=1208931&r1=1208930&r2=1208931&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/builtin/STRSPLIT.java (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/builtin/STRSPLIT.java Thu Dec  1 02:07:38 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/branches/branch-0.10/test/e2e/pig/tests/nightly.conf
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf?rev=1208931&r1=1208930&r2=1208931&view=diff
==============================================================================
--- pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf (original)
+++ pig/branches/branch-0.10/test/e2e/pig/tests/nightly.conf Thu Dec  1 02:07:38 2011
@@ -3981,7 +3981,24 @@ 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:';?,
+                 }
+             ],
+          },//
         ],
     },
 ;