You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ya...@apache.org on 2010/11/17 17:28:34 UTC

svn commit: r1036102 - in /pig/trunk: CHANGES.txt src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java test/org/apache/pig/test/TestFilterUDF.java

Author: yanz
Date: Wed Nov 17 16:28:34 2010
New Revision: 1036102

URL: http://svn.apache.org/viewvc?rev=1036102&view=rev
Log:
PIG-1731: Stack Overflows where there are composite logical expressions on UDFs using the new logical plan (yanz)

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java
    pig/trunk/test/org/apache/pig/test/TestFilterUDF.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1036102&r1=1036101&r2=1036102&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Wed Nov 17 16:28:34 2010
@@ -220,6 +220,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1731: Stack Overflows where there are composite logical expressions on UDFs using the new logical plan (yanz)
+
 PIG-1723: Need to limit the length of Pig counter names (rding)
 
 PIG-1714: Option mapred.output.compress doesn't work in Pig 0.8 but worked in

Modified: pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java?rev=1036102&r1=1036101&r2=1036102&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java Wed Nov 17 16:28:34 2010
@@ -65,7 +65,7 @@ public class UserFuncExpression extends 
     public boolean isEqual(Operator other) throws FrontendException {
         if( other instanceof UserFuncExpression ) {
             UserFuncExpression exp = (UserFuncExpression)other;
-            return plan.isEqual(exp.plan) && mFuncSpec.equals(exp.mFuncSpec );
+            return mFuncSpec.equals(exp.mFuncSpec );
         } else {
             return false;
         }

Modified: pig/trunk/test/org/apache/pig/test/TestFilterUDF.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestFilterUDF.java?rev=1036102&r1=1036101&r2=1036102&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestFilterUDF.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestFilterUDF.java Wed Nov 17 16:28:34 2010
@@ -166,4 +166,43 @@ public class TestFilterUDF {
             assertTrue(t.equals(expectedTuple));
         }
     }
+
+    @Test
+    public void testFilterUDFusingDefine2() throws Exception{
+        File inputFile= createFile(
+                    new String[]{ 
+                        "www.paulisageek.com\t4",
+                        "www.yahoo.com\t12344",
+                        "google.com\t1",
+                        "us2.amazon.com\t4141"
+                    }
+                );
+
+        File filterFile = createFile(
+                    new String[]{ 
+                        "12344"
+                    }
+                );
+
+        pigServer.registerQuery("define FILTER_CRITERION "
+                + FILTERFROMFILE.class.getName()
+                + "('"
+                + Util.generateURI(filterFile.toString(), pigServer
+                        .getPigContext()) + "');");
+        pigServer.registerQuery("a = LOAD '"
+                + Util.generateURI(inputFile.toString(), pigServer
+                        .getPigContext())
+                + "' as (url:chararray, numvisits:int);");
+        pigServer.registerQuery("b = filter a by FILTER_CRITERION(numvisits) AND FILTER_CRITERION(numvisits);");
+
+        Tuple expectedTuple = tf.newTuple();
+        expectedTuple.append(new String("www.yahoo.com"));
+        expectedTuple.append(new Integer("12344"));
+
+        Iterator<Tuple> iter = pigServer.openIterator("b");
+        while(iter.hasNext()){
+            Tuple t = iter.next();
+            assertTrue(t.equals(expectedTuple));
+        }
+    }
 }