You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2011/05/14 02:38:03 UTC
svn commit: r1102932 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/newplan/optimizer/Rule.java
test/org/apache/pig/test/TestNewPlanRule.java
Author: daijy
Date: Sat May 14 00:38:03 2011
New Revision: 1102932
URL: http://svn.apache.org/viewvc?rev=1102932&view=rev
Log:
PIG-2044: Patten match bug in org.apache.pig.newplan.optimizer.Rule
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java
pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1102932&r1=1102931&r2=1102932&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sat May 14 00:38:03 2011
@@ -42,6 +42,8 @@ PIG-2011: Speed up TestTypedMap.java (dv
BUG FIXES
+PIG-2044: Patten match bug in org.apache.pig.newplan.optimizer.Rule (knoguchi via daijy)
+
PIG-1938: support project-range as udf argument (thejas)
PIG-2048: Add zookeeper to pig jar (gbowyer via gates)
Modified: pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java?rev=1102932&r1=1102931&r2=1102932&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java Sat May 14 00:38:03 2011
@@ -176,7 +176,6 @@ public abstract class Rule {
if (matched) {
for(int j=1; j<leaves.size(); j++) {
planOps.add(siblings.get(index+j));
- break;
}
}
Modified: pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java?rev=1102932&r1=1102931&r2=1102932&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java Sat May 14 00:38:03 2011
@@ -364,5 +364,55 @@ public class TestNewPlanRule extends Tes
m2 = l.get(0).getSinks().get(1);
assertTrue(m2.getName().equals("f3") || m2.getName().equals("f4"));
}
+ public void testThreeNodeMatch() throws FrontendException {
+ // load --| |- filter - store
+ // load --|-join - filter - filter - split |- filter - store
+ // | filter - store
+ // | filter - store
+ Operator f5 = new OP_Filter("f5", plan);
+ Operator f6 = new OP_Filter("f6", plan);
+ Operator s5 = new OP_Store("s5", plan);
+ Operator s6 = new OP_Store("s6", plan);
+ plan.add(f5);
+ plan.add(f6);
+ plan.add(s5);
+ plan.add(s6);
+ plan.connect(f5, s5);
+ plan.connect(f6, s6);
+ plan.connect(join, f5);
+ plan.connect(join, f6);
+
+ OperatorPlan pattern = new SillyPlan();
+ Operator s1 = new OP_Join("mmm1", pattern);
+ Operator s2 = new OP_Filter("mmm2", pattern);
+ Operator s3 = new OP_Filter("mmm3", pattern);
+ Operator s4 = new OP_Filter("mmm4", pattern);
+ pattern.add(s1);
+ pattern.add(s2);
+ pattern.add(s3);
+ pattern.add(s4);
+ pattern.connect(s1, s2);
+ pattern.connect(s1, s3);
+ pattern.connect(s1, s4);
+
+ Rule r = new SillyRule("basic", pattern);
+ List<OperatorPlan> l = r.match(plan);
+ assertEquals(1, l.size());
+
+ assertEquals(1, l.get(0).getSources().size());
+ assertEquals(3, l.get(0).getSinks().size());
+ assertEquals(4, l.get(0).size());
+
+ Operator m1,m2;
+ m1 = l.get(0).getSources().get(0);
+ assertTrue(m1.getName().equals("j1"));
+ for( int i=0; i < 3; i++ ) {
+ m2 = l.get(0).getSinks().get(i);
+ assertTrue(m2.getName().equals("f1")
+ || m2.getName().equals("f5")
+ || m2.getName().equals("f6")
+ );
+ }
+ }
}