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);
}
{