You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ch...@apache.org on 2013/07/26 01:55:32 UTC

svn commit: r1507156 - in /pig/trunk: CHANGES.txt src/org/apache/pig/builtin/STARTSWITH.java

Author: cheolsoo
Date: Thu Jul 25 23:55:30 2013
New Revision: 1507156

URL: http://svn.apache.org/r1507156
Log:
PIG-3393: STARTSWITH udf doesn't override outputSchema method (sriramkrishnan via cheolsoo)

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/builtin/STARTSWITH.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1507156&r1=1507155&r2=1507156&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Jul 25 23:55:30 2013
@@ -204,6 +204,8 @@ PIG-3013: BinInterSedes improve chararra
 
 BUG FIXES
 
+PIG-3393: STARTSWITH udf doesn't override outputSchema method (sriramkrishnan via cheolsoo)
+
 PIG-3389: "Set job.name" does not work with dump command (cheolsoo)
 
 PIG-3387: Miss spelling in test code "TestBuiltin.java" (sarutak via cheolsoo)

Modified: pig/trunk/src/org/apache/pig/builtin/STARTSWITH.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/STARTSWITH.java?rev=1507156&r1=1507155&r2=1507156&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/STARTSWITH.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/STARTSWITH.java Thu Jul 25 23:55:30 2013
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.pig.EvalFunc;
 import org.apache.pig.FuncSpec;
+import org.apache.pig.PigWarning;
 import org.apache.pig.data.DataType;
 import org.apache.pig.data.Tuple;
 import org.apache.pig.backend.executionengine.ExecException;
@@ -36,6 +37,7 @@ public class STARTSWITH extends EvalFunc
     @Override
     public Boolean exec(Tuple tuple) {
         if (tuple == null || tuple.size() != 2) {
+            warn("invalid number of arguments to STARTSWITH", PigWarning.UDF_WARNING_1);
             return null;
         }
         String argument = null;
@@ -44,14 +46,24 @@ public class STARTSWITH extends EvalFunc
             argument = (String) tuple.get(0);
             testAgainst = (String) tuple.get(1);
             return argument.startsWith(testAgainst);
-        } catch (ExecException exe) {
-          System.err.println("UDF STARTSWITH threw ExecException while processing '" +
-            argument + "' while attempting to locate prefix '" + testAgainst + "'");
-          return null;
+        } catch (NullPointerException npe) {
+            warn(npe.toString(), PigWarning.UDF_WARNING_2);
+            return null;
+        } catch (ClassCastException cce) {
+            warn(cce.toString(), PigWarning.UDF_WARNING_3);
+            return null;
+        } catch (ExecException ee) {
+            warn(ee.toString(), PigWarning.UDF_WARNING_4);
+            return null;
         }
     }
 
     @Override
+    public Schema outputSchema(Schema input) {
+        return new Schema(new Schema.FieldSchema(null, DataType.BOOLEAN));
+    }
+
+    @Override
     public List<FuncSpec> getArgToFuncMapping() throws FrontendException {
         List<FuncSpec> funcList = new ArrayList<FuncSpec>();
         Schema s = new Schema();