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

Jens Geyer edited comment on THRIFT-3304 at 8/30/15 3:10 PM:
-------------------------------------------------------------

I can't see any issue. Make the field optional and check the isset flags.

>  I expect $behaviour

Why?


was (Author: jensg):
I can't see any issue. Make the field optional and check the isset flags.

> C# thrift.dll generates default values of fields instead of 'null'
> ------------------------------------------------------------------
>
>                 Key: THRIFT-3304
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3304
>             Project: Thrift
>          Issue Type: Bug
>          Components: C# - Compiler, C# - Library
>    Affects Versions: 0.9.2
>         Environment: Windows 8, Hive1.1.0, HiveServer2
>            Reporter: Kaveen Raajan
>              Labels: build
>
> I'm currently using HiveServer2 with thrift.dll library. If I try to make a 
> tuple from a thrift object, I expect that fields that were not set in the 
> object, are marked null in tuple. However instead default values are put into 
> the tuple. E.g.
> {code}
> HqlConnection con = new HqlConnection("localhost", 10001, 
> HiveServer.HiveServer2);
> con.Open();
> HqlCommand createCommand1 = new HqlCommand("select id,name,age,DOB,marks from 
> engineer_list", con);
> createCommand1.ExecuteNonQuery();
> HqlDataReader reader = createCommand1.ExecuteReader();
> {code}
> expected output should be
> {(1,'John',24,2010-01-01 10:22:47,45.6),
> (2,null,null,null,null)}
> but actual result was:
> {(1,'John',24,2010-01-01 10:22:47,45.6),
> (2,,,0,0)}
> When we send request to call numeric column which contain NULL value for a 
> type (int, double, long, float..) means ‘thrift.dll’ itself return as zero 
> instead of 'null' or 'DBNull.value'.
> For string, timestamp type mean 'thrift.dll' itself return as empty string 
> instead of 'null' or 'DBNull.value'.
> By analyzing the source of thrift.dll, we trigger out the method for reading 
> the column by following 
> *Class*: Thrift.Protocol.TBinaryProtocol
> *Method*: ReadAll(buffer, offset, length) by default it return as zero.
> *Description*: This will get stream of data from thriftServer port
> For Int value following method are call this will return as '0' if data 
> contain 'null'
> {code}
> private byte[] i32in = new byte[4];
> public override int ReadI32()
> {
>   ReadAll(i32in, 0, 4);
>   return (int)(((i32in[0] & 0xff) << 24) | ((i32in[1] & 0xff) << 16) | 
> ((i32in[2] & 0xff) << 8) | ((i32in[3] & 0xff)));
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to