You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pig.apache.org by "Ken Goodhope (JIRA)" <ji...@apache.org> on 2011/07/05 19:47:16 UTC

[jira] [Commented] (PIG-2153) POProject throws an error with tuples containing a single non-tuple field

    [ https://issues.apache.org/jira/browse/PIG-2153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13060034#comment-13060034 ] 

Ken Goodhope commented on PIG-2153:
-----------------------------------

I ran unit tests with the change I recommend in the description.  Good news is several tests that failed before now work and are listed below.
org.apache.pig.test.TestBestFitCast 
org.apache.pig.test.TestDataBagAccess 
org.apache.pig.test.TestGrunt 
org.apache.pig.test.TestImplicitSplit 
org.apache.pig.test.TestMapSideCogroup 
org.apache.pig.test.TestPigRunner 
org.apache.pig.test.TestPigSplit 
org.apache.pig.test.TestScriptUDF 

The bad news is several tests that were working now fail.
org.apache.pig.test.TestBuiltin 
org.apache.pig.test.TestCollectedGroup 
org.apache.pig.test.TestCombiner 
org.apache.pig.test.TestCommit 
org.apache.pig.test.TestEvalPipeline2 
org.apache.pig.test.TestEvalPipelineLocal 
org.apache.pig.test.TestFRJoin2 
org.apache.pig.test.TestFilter 
org.apache.pig.test.TestForEach 
org.apache.pig.test.TestForEachNestedPlanLocal 
org.apache.pig.test.TestJoin 
org.apache.pig.test.TestJoinSmoke 
org.apache.pig.test.TestLimitAdjuster 
org.apache.pig.test.TestLocalRearrange 
org.apache.pig.test.TestNativeMapReduce 
org.apache.pig.test.TestNewPlanImplicitSplit 
org.apache.pig.test.TestProject 
org.apache.pig.test.TestStore 
org.apache.pig.test.TestStoreInstances 
org.apache.pig.test.TestUnionOnSchema 

Obviously, there are more tests that break than get fixed.  

> POProject throws an error with tuples containing a single non-tuple field
> -------------------------------------------------------------------------
>
>                 Key: PIG-2153
>                 URL: https://issues.apache.org/jira/browse/PIG-2153
>             Project: Pig
>          Issue Type: Bug
>    Affects Versions: 0.8.1
>            Reporter: Ken Goodhope
>
> When POProject.getNext(tuple) processes a tuple with one field, the field is pulled out.  If that field is not a tuple, a cast exception is thrown.  This is happening in the folliwing block of code at line 401.
>            if(columns.size() == 1) {
>                 try{
>                     ret = inpValue.get(columns.get(0));
>                 ...
>            res.result = (Tuple)ret;
> I am seeing this error in a unit test that is loading an array of floats.  The LoadFunc is converting the array to bag, and wrapping the bag in a tuple.  
> ({(3.3),(1.2),(5.6)})
> This results on POProject attempting to cast the bag to a tuple.  Looking at the code, it appears that if I wrapped the previous tuple in another tuple, then it would work.
> (({(3.3),(1.2),(5.6)}))
> In this case it would work because POProject would extract the first inner tuple and return it.  But this would require the LoadFunc to check for tuples with a single non-tuple field and only wrap those.
> This could be fixed by first checking that the tuple does actually wrap another tuple.
>            if(columns.size() == 1 && inpValue.getType(0) == DataType.TUPLE) {...
> I don't know the original intent of this code well enough to say this is the appropriate fix or not.  Hoping someone with more Pig experience can help here.  Right now this is preventing the unit tests in AvroStorage from working.  I can change the unit test, but I think in this case the unit test is catching a real bug.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira