You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by jc...@apache.org on 2012/10/19 01:19:01 UTC
svn commit: r1399916 - in /pig/trunk: ./ src/org/apache/pig/
src/org/apache/pig/builtin/ src/org/apache/pig/newplan/
test/org/apache/pig/test/
Author: jcoveney
Date: Thu Oct 18 23:19:01 2012
New Revision: 1399916
URL: http://svn.apache.org/viewvc?rev=1399916&view=rev
Log:
PIG-1283: COUNT on null bag causes failure (anand via jcoveney)
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/Expression.java
pig/trunk/src/org/apache/pig/builtin/COUNT.java
pig/trunk/src/org/apache/pig/newplan/PColFilterExtractor.java
pig/trunk/test/org/apache/pig/test/TestBuiltin.java
pig/trunk/test/org/apache/pig/test/TestPartitionFilterPushDown.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1399916&r1=1399915&r2=1399916&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Oct 18 23:19:01 2012
@@ -40,6 +40,8 @@ Release 0.11.0 (unreleased)
INCOMPATIBLE CHANGES
+PIG-1283: COUNT on null bag causes failure (anand via jcoveney)
+
PIG-1891 Enable StoreFunc to make intelligent decision based on job success or failure (initialcontext via gates)
IMPROVEMENTS
Modified: pig/trunk/src/org/apache/pig/Expression.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/Expression.java?rev=1399916&r1=1399915&r2=1399916&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/Expression.java (original)
+++ pig/trunk/src/org/apache/pig/Expression.java Thu Oct 18 23:19:01 2012
@@ -45,6 +45,7 @@ public abstract class Expression {
OP_GE(" >= "),
OP_LT(" < "),
OP_LE(" <= "),
+ OP_MATCH(" matches "),
//binary logical
OP_AND(" and "),
Modified: pig/trunk/src/org/apache/pig/builtin/COUNT.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/COUNT.java?rev=1399916&r1=1399915&r2=1399916&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/COUNT.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/COUNT.java Thu Oct 18 23:19:01 2012
@@ -58,6 +58,9 @@ public class COUNT extends EvalFunc<Long
public Long exec(Tuple input) throws IOException {
try {
DataBag bag = (DataBag)input.get(0);
+ if(bag==null)
+ return null;
+
Iterator it = bag.iterator();
long cnt = 0;
while (it.hasNext()){
Modified: pig/trunk/src/org/apache/pig/newplan/PColFilterExtractor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/PColFilterExtractor.java?rev=1399916&r1=1399915&r2=1399916&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/PColFilterExtractor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/PColFilterExtractor.java Thu Oct 18 23:19:01 2012
@@ -461,6 +461,8 @@ public class PColFilterExtractor extends
return getExpression(binOp, OpType.OP_LT);
} else if(binOp instanceof LessThanEqualExpression) {
return getExpression(binOp, OpType.OP_LE);
+ } else if(binOp instanceof RegexExpression) {
+ return getExpression(binOp, OpType.OP_MATCH);
} else {
logInternalErrorAndSetFlag();
}
Modified: pig/trunk/test/org/apache/pig/test/TestBuiltin.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestBuiltin.java?rev=1399916&r1=1399915&r2=1399916&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestBuiltin.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestBuiltin.java Thu Oct 18 23:19:01 2012
@@ -18,6 +18,7 @@
package org.apache.pig.test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
@@ -1001,6 +1002,17 @@ public class TestBuiltin {
}
@Test
+ public void testCOUNTBagNullCheck() throws Exception{
+
+ DataBag b = null;
+ Tuple t = tupleFactory.getInstance().newTuple(b);
+
+ EvalFunc<Long> count = new COUNT();
+ assertNull(count.exec(t));
+ }
+
+
+ @Test
public void testCount_ValidNumberOfArguments_WithoutInputSchema_One() throws Exception {
File inputFile = createCountInputFile();
try {
Modified: pig/trunk/test/org/apache/pig/test/TestPartitionFilterPushDown.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestPartitionFilterPushDown.java?rev=1399916&r1=1399915&r2=1399916&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestPartitionFilterPushDown.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestPartitionFilterPushDown.java Thu Oct 18 23:19:01 2012
@@ -571,6 +571,21 @@ public class TestPartitionFilterPushDown
Assert.assertEquals(counter, 5);
}
+ /**
+ * Test PIG-2778 Add matches operator to predicate pushdown
+ * @throws Exception
+ */
+ @Test
+ public void testMatchOpPushDown() throws Exception {
+ // regexp condition on a partition col
+ String q = query + "b = filter a by name matches 'foo*';" + "store b into 'out';";
+ test(q, Arrays.asList("name"), "(name matches 'foo*')", null);
+
+ // regexp condition on a non-partition col
+ q = query + "b = filter a by name matches 'foo*';" + "store b into 'out';";
+ test(q, Arrays.asList("srcid"), null, "(name matches 'foo*')");
+ }
+
//// helper methods ///////
private PColFilterExtractor test(String query, List<String> partitionCols,