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 2015/08/04 01:16:44 UTC

svn commit: r1693980 - in /pig/trunk: ./ src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/ src/org/apache/pig/newplan/logical/visitor/ test/org/apache/pig/test/

Author: daijy
Date: Mon Aug  3 23:16:43 2015
New Revision: 1693980

URL: http://svn.apache.org/r1693980
Log:
PIG-3622: Allow casting bytearray fields to bytearray type

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
    pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java
    pig/trunk/test/org/apache/pig/test/TestPOCast.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1693980&r1=1693979&r2=1693980&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon Aug  3 23:16:43 2015
@@ -32,6 +32,8 @@ PIG-4570: Allow AvroStorage to use a cla
 
 BUG FIXES
 
+PIG-3622: Allow casting bytearray fields to bytearray type (redisliu via daijy)
+
 PIG-4618: When use tez as the engine , set pig.user.cache.enabled=true do not take effect (wisgood via rohini)
 
 PIG-4533: Document error: Pig does support concatenated gz file (xhudik via daijy)

Modified: pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java?rev=1693980&r1=1693979&r2=1693980&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java (original)
+++ pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/POCast.java Mon Aug  3 23:16:43 2015
@@ -1984,7 +1984,22 @@ public class POCast extends ExpressionOp
 
     @Override
     public Result getNextDataByteArray() throws ExecException {
+      PhysicalOperator in = inputs.get(0);
+      Byte resultType = in.getResultType();
+      if  (resultType != DataType.BYTEARRAY) 
         return error();
+      
+      DataByteArray dba = null;
+      Result res = in.getNextDataByteArray();
+      if (res.returnStatus == POStatus.STATUS_OK && res.result != null) {
+          try {
+              dba = (DataByteArray) res.result;
+          } catch (ClassCastException e) {
+              return error();
+          }
+          if (dba != null) return res;
+      }
+      return res;
     }
 
     private void readObject(ObjectInputStream is) throws IOException,

Modified: pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java?rev=1693980&r1=1693979&r2=1693980&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/visitor/TypeCheckingExpVisitor.java Mon Aug  3 23:16:43 2015
@@ -488,7 +488,7 @@ public class TypeCheckingExpVisitor exte
     public void visit(CastExpression cast) throws FrontendException {
         byte inType = cast.getExpression().getType();
         byte outType = cast.getType();
-        if(outType == DataType.BYTEARRAY){
+        if(outType == DataType.BYTEARRAY && inType != outType) {
             int errCode = 1051;
             String msg = "Cannot cast to bytearray";
             msgCollector.collect(msg, MessageType.Error) ;

Modified: pig/trunk/test/org/apache/pig/test/TestPOCast.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestPOCast.java?rev=1693980&r1=1693979&r2=1693980&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestPOCast.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestPOCast.java Mon Aug  3 23:16:43 2015
@@ -1777,12 +1777,11 @@ public class TestPOCast {
 			plan.attachInput(t);
 			DataByteArray dba = (DataByteArray) t.get(0);
 			Result res = op.getNextDataByteArray();
-			assertEquals(POStatus.STATUS_ERR, res.returnStatus);
+			assertEquals(POStatus.STATUS_OK, res.returnStatus);
 
 			planToTestBACasts.attachInput(t);
 			res = opWithInputTypeAsBA.getNextDataByteArray();
-			if(res.returnStatus == POStatus.STATUS_OK)
-				assertEquals(POStatus.STATUS_ERR, res.returnStatus);
+			assertEquals(POStatus.STATUS_OK, res.returnStatus);
 		}
 
 		{