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 2014/03/21 04:57:56 UTC
svn commit: r1579872 - in /pig/branches/branch-0.12: CHANGES.txt
src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java
test/org/apache/pig/test/TestNewPlanPushDownForeachFlatten.java
Author: daijy
Date: Fri Mar 21 03:57:56 2014
New Revision: 1579872
URL: http://svn.apache.org/r1579872
Log:
PIG-3826: Outer join with PushDownForEachFlatten generates wrong result
Modified:
pig/branches/branch-0.12/CHANGES.txt
pig/branches/branch-0.12/src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java
pig/branches/branch-0.12/test/org/apache/pig/test/TestNewPlanPushDownForeachFlatten.java
Modified: pig/branches/branch-0.12/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.12/CHANGES.txt?rev=1579872&r1=1579871&r2=1579872&view=diff
==============================================================================
--- pig/branches/branch-0.12/CHANGES.txt (original)
+++ pig/branches/branch-0.12/CHANGES.txt Fri Mar 21 03:57:56 2014
@@ -34,6 +34,8 @@ PIG-3480: TFile-based tmpfile compressio
BUG FIXES
+PIG-3826: Outer join with PushDownForEachFlatten generates wrong result (daijy)
+
PIG-3820: TestAvroStorage fail on some OS (daijy)
PIG-3818: PIG-2499 is accidently reverted (daijy)
Modified: pig/branches/branch-0.12/src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.12/src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java?rev=1579872&r1=1579871&r2=1579872&view=diff
==============================================================================
--- pig/branches/branch-0.12/src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java (original)
+++ pig/branches/branch-0.12/src/org/apache/pig/newplan/logical/rules/PushDownForEachFlatten.java Fri Mar 21 03:57:56 2014
@@ -159,6 +159,11 @@ public class PushDownForEachFlatten exte
for( int i = 0; i < preds.size(); i++ ) {
Operator op = preds.get( i );
if( op == foreach ) {
+ // Don't optimize if the flattened side is outer side of an outer join
+ // See PIG-3826
+ if (join.getInnerFlags()[i]==false) {
+ return false;
+ }
Collection<LogicalExpressionPlan> exprs = join.getJoinPlan( i );
for( LogicalExpressionPlan expr : exprs ) {
List<ProjectExpression> projs = getProjectExpressions( expr );
Modified: pig/branches/branch-0.12/test/org/apache/pig/test/TestNewPlanPushDownForeachFlatten.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.12/test/org/apache/pig/test/TestNewPlanPushDownForeachFlatten.java?rev=1579872&r1=1579871&r2=1579872&view=diff
==============================================================================
--- pig/branches/branch-0.12/test/org/apache/pig/test/TestNewPlanPushDownForeachFlatten.java (original)
+++ pig/branches/branch-0.12/test/org/apache/pig/test/TestNewPlanPushDownForeachFlatten.java Fri Mar 21 03:57:56 2014
@@ -1215,5 +1215,21 @@ public class TestNewPlanPushDownForeachF
Assert.assertTrue( sort instanceof LOSort );
}
+
+ @Test
+ // See PIG-3826
+ public void testOuterJoin() throws Exception {
+ String query = "A = load 'A.txt' as (id:chararray, value:double);" +
+ "B = load 'B.txt' as (id:chararray, name:chararray);" +
+ "t1 = group A by id;" +
+ "t2 = foreach t1 { r1 = filter $1 by (value>1); r2 = limit r1 1; generate group as id, FLATTEN(r2.value) as value; }" +
+ "t3 = join B by id LEFT OUTER, t2 by id;" +
+ "store t3 into 'output';";
+ LogicalPlan newLogicalPlan = migrateAndOptimizePlan( query );
+
+ Operator store = newLogicalPlan.getSinks().get( 0 );
+ Operator join = newLogicalPlan.getPredecessors(store).get(0);
+ Assert.assertTrue( join instanceof LOJoin );
+ }
}