You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by sm...@apache.org on 2009/07/14 01:36:40 UTC
svn commit: r793750 - in /hadoop/pig/trunk: CHANGES.txt
src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
test/org/apache/pig/test/TestPushUpFilter.java
Author: sms
Date: Mon Jul 13 23:36:40 2009
New Revision: 793750
URL: http://svn.apache.org/viewvc?rev=793750&view=rev
Log:
PIG-877: Push up filter does not account for added columns in foreach
Modified:
hadoop/pig/trunk/CHANGES.txt
hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java
Modified: hadoop/pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=793750&r1=793749&r2=793750&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Mon Jul 13 23:36:40 2009
@@ -40,6 +40,9 @@
BUG FIXES
+ PIG-877: Push up filter does not account for added columns in foreach
+ (sms)
+
PIG-883: udf import list does not send to the backend (daijy)
PIG-881: Pig should ship load udfs to the backend (daijy)
Modified: hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java?rev=793750&r1=793749&r2=793750&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/PushUpFilter.java Mon Jul 13 23:36:40 2009
@@ -402,6 +402,10 @@
for (Integer input : predInputs) {
List<ProjectionMap.Column> inputList = (List<ProjectionMap.Column>) mappedFields
.get(input);
+ // inputList is null -> the required field is added
+ if(inputList == null) {
+ return new Pair<Boolean, Set<Integer>>(false, null);
+ }
for (ProjectionMap.Column column : inputList) {
// TODO
// Check if the column has a cast
Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java?rev=793750&r1=793749&r2=793750&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestPushUpFilter.java Mon Jul 13 23:36:40 2009
@@ -276,6 +276,24 @@
assertEquals(filter, lp.getPredecessors(foreach).get(0));
}
+
+ @Test
+ public void testFilterForeachAddedField() throws Exception {
+ planTester.buildPlan("A = load 'myfile' as (name, age, gpa);");
+ planTester.buildPlan("B = foreach A generate $1, $2, COUNT({(1)});");
+ LogicalPlan lp = planTester.buildPlan("C = filter B by $2 < 18;");
+
+ planTester.setPlan(lp);
+ planTester.setProjectionMap(lp);
+
+ PushUpFilter pushUpFilter = new PushUpFilter(lp);
+
+ assertTrue(!pushUpFilter.check(lp.getLeaves()));
+ assertTrue(pushUpFilter.getSwap() == false);
+ assertTrue(pushUpFilter.getPushBefore() == false);
+ assertTrue(pushUpFilter.getPushBeforeInput() == -1);
+
+ }
@Test
public void testFilterForeachCast() throws Exception {