You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ch...@apache.org on 2013/06/26 17:27:03 UTC
svn commit: r1496966 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/parser/LogicalPlanGenerator.g
test/org/apache/pig/test/TestCase.java
Author: cheolsoo
Date: Wed Jun 26 15:27:03 2013
New Revision: 1496966
URL: http://svn.apache.org/r1496966
Log:
PIG-3364: Case expression fails with an even number of when branches (cheolsoo)
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g
pig/trunk/test/org/apache/pig/test/TestCase.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1496966&r1=1496965&r2=1496966&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Wed Jun 26 15:27:03 2013
@@ -198,6 +198,8 @@ PIG-3013: BinInterSedes improve chararra
BUG FIXES
+PIG-3364: Case expression fails with an even number of when branches (cheolsoo)
+
PIG-3354: UDF example does not handle nulls (patc888 via daijy)
PIG-3355: ColumnMapKeyPrune bug with distinct operator (jeremykarn via aniket486)
Modified: pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g?rev=1496966&r1=1496965&r2=1496966&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g (original)
+++ pig/trunk/src/org/apache/pig/parser/LogicalPlanGenerator.g Wed Jun 26 15:27:03 2013
@@ -1102,7 +1102,7 @@ case_cond[LogicalExpressionPlan plan] re
{
// Convert CASE tree to nested bincond expressions. Please also see
// QueryParser.g for how CASE tree is constructed from case statement.
- boolean hasElse = exprs.size() \% 2 == 1;
+ boolean hasElse = exprs.size() != conds.size();
LogicalExpression elseExpr = hasElse ? exprs.get(exprs.size() - 1)
: new ConstantExpression($plan, null);
int numWhenBranches = conds.size();
Modified: pig/trunk/test/org/apache/pig/test/TestCase.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestCase.java?rev=1496966&r1=1496965&r2=1496966&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestCase.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestCase.java Wed Jun 26 15:27:03 2013
@@ -95,25 +95,24 @@ public class TestCase {
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage() AS (i:int);");
pigServer.registerQuery("B = FOREACH A GENERATE i, (" +
- " CASE i % 5" +
- " WHEN 0 THEN '5n'" +
- " WHEN 1 THEN '5n+1'" +
- " WHEN 2 THEN '5n+2'" +
- " WHEN 3 THEN '5n+3'" +
- " ELSE '5n+4'" +
+ " CASE i % 4" +
+ " WHEN 0 THEN '4n'" +
+ " WHEN 1 THEN '4n+1'" +
+ " WHEN 2 THEN '4n+2'" +
+ " ELSE '4n+3'" +
" END" +
");");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
List<Tuple> out = data.get("bar");
assertEquals(7, out.size());
- assertEquals(tuple(1,"5n+1"), out.get(0));
- assertEquals(tuple(2,"5n+2"), out.get(1));
- assertEquals(tuple(3,"5n+3"), out.get(2));
- assertEquals(tuple(4,"5n+4"), out.get(3));
- assertEquals(tuple(5,"5n"), out.get(4));
- assertEquals(tuple(6,"5n+1"), out.get(5));
- assertEquals(tuple(7,"5n+2"), out.get(6));
+ assertEquals(tuple(1,"4n+1"), out.get(0));
+ assertEquals(tuple(2,"4n+2"), out.get(1));
+ assertEquals(tuple(3,"4n+3"), out.get(2));
+ assertEquals(tuple(4,"4n"), out.get(3));
+ assertEquals(tuple(5,"4n+1"), out.get(4));
+ assertEquals(tuple(6,"4n+2"), out.get(5));
+ assertEquals(tuple(7,"4n+3"), out.get(6));
}
/**
@@ -179,24 +178,23 @@ public class TestCase {
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage() AS (i:int);");
pigServer.registerQuery("B = FOREACH A GENERATE i, (" +
" CASE " +
- " WHEN i % 5 == 0 THEN '5n'" + // Conditional expression in when branch
- " WHEN i % 5 == 1 THEN '5n+1'" +
- " WHEN i % 5 == 2 THEN '5n+2'" +
- " WHEN i % 5 == 3 THEN '5n+3'" +
- " ELSE '5n+4'" +
+ " WHEN i % 4 == 0 THEN '4n'" + // Conditional expression in when branch
+ " WHEN i % 4 == 1 THEN '4n+1'" +
+ " WHEN i % 4 == 2 THEN '4n+2'" +
+ " ELSE '4n+3'" +
" END" +
");");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
List<Tuple> out = data.get("bar");
assertEquals(7, out.size());
- assertEquals(tuple(1,"5n+1"), out.get(0));
- assertEquals(tuple(2,"5n+2"), out.get(1));
- assertEquals(tuple(3,"5n+3"), out.get(2));
- assertEquals(tuple(4,"5n+4"), out.get(3));
- assertEquals(tuple(5,"5n"), out.get(4));
- assertEquals(tuple(6,"5n+1"), out.get(5));
- assertEquals(tuple(7,"5n+2"), out.get(6));
+ assertEquals(tuple(1,"4n+1"), out.get(0));
+ assertEquals(tuple(2,"4n+2"), out.get(1));
+ assertEquals(tuple(3,"4n+3"), out.get(2));
+ assertEquals(tuple(4,"4n"), out.get(3));
+ assertEquals(tuple(5,"4n+1"), out.get(4));
+ assertEquals(tuple(6,"4n+2"), out.get(5));
+ assertEquals(tuple(7,"4n+3"), out.get(6));
}
/**