[ 
https://issues.apache.org/jira/browse/HIVE-30165?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denys Kuzmenko updated HIVE-30165:
----------------------------------
    Affects Version/s: 4.2.1
                       4.2.0
                       4.1.0

> HS2: TINYINT columns fail with ClassCastException when 
> hive.server2.thrift.resultset.serialize.in.tasks=true
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-30165
>                 URL: https://issues.apache.org/jira/browse/HIVE-30165
>             Project: Hive
>          Issue Type: Bug
>    Affects Versions: 4.1.0, 4.2.0, 4.2.1
>            Reporter: Denys Kuzmenko
>            Priority: Major
>
> {code:sql}                                                                    
>                                                                               
>                                     
>   create table t (b tinyint);                                                 
>                                                                               
>                                       
>   insert into t values (7);                                                   
>                                                                               
>                                       
>   set hive.fetch.task.conversion=none;                                        
>                                                                               
>                                       
>   set hive.server2.thrift.resultset.serialize.in.tasks=true;                  
>                                                                               
>                                       
>   select b from t;                                                            
>                                                                               
>                                       
>   {code}         
>  The Tez task fails:                                                          
>                                                                               
>                                      
>   {noformat}                                                                  
>                                                                               
>                                       
>   Vertex failed, vertexName=Map 1 ...                                         
>                                                                               
>                                       
>   Caused by: org.apache.hadoop.hive.serde2.SerDeException: 
> java.lang.ClassCastException: class java.lang.Byte cannot be cast to class [B 
>                                                          
>   {noformat}                                                                  
>                                                                               
>                                       
>   With {{serialize.in.tasks=false}} the query returns 7.                      
>                                                                               
>                                       
>                                                                               
>                                                                               
>                                       
>   *Cause:* {{org.apache.hadoop.hive.serde2.thrift.Type.getType(TypeInfo)}} 
> maps {{PrimitiveCategory.BYTE}} to {{BINARY_TYPE}}, marked "Double check if 
> this is the right mapping" since HIVE-2935.
>   {{ThriftJDBCBinarySerDe}} creates its column buffers with {{new 
> ColumnBuffer(Type.getType(columnTypes.get(i)))}}. A tinyint column therefore 
> gets a binary buffer, and  {{ColumnBuffer.addValue}} casts the {{Byte}} to 
> {{byte[]}}.                                                                   
>                                                                   
>   The default path is not affected, because it resolves the type by name 
> ({{"tinyint"}} -> {{TINYINT_TYPE}}).                                          
>                                            
>                                                                               
>                                                                               
>                                       
>   *Fix:* map {{BYTE}} to {{TINYINT_TYPE}}. A serde-level test of 
> ThriftJDBCBinarySerDe over a tinyint column fails today and passes with the 
> fix.                                                 
>   



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to