Re: FreeTDS problems with converting SQL BigInt

Feroze Daud <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
hi! Guys,

Some more information.

1) I changed my program to read the value as a double, then cast it to bigint. In this case it works.
2) I ran tcpdump and captured a network trace. I looked at it in wireshark, and noticed that the server is sending the correct value...

0040  c8 31 04 00 10 00 00 49  01 00 81 01 00 00 00 21   .1.....I .......!
0050  00 6c 11 13 00 0d 4d 00  61 00 78 00 49 00 50 00   .l....M. a.x.I.P.
0060  50 00 51 00 75 00 65 00  75 00 65 00 49 00 44 00   P.Q.u.e. u.e.I.D.
0070  d1 05 01 4c 47 07 00 ff  01 00 c1 00 01 00 00 00   ...LG... ........

At offset 76, you can see the value 0x000747c which is exactly the value the sproc is sending for MaxIPPQueueID ( decimal 477004 ).

I just started reading the MS-TDS spec, and am not an expert in it, so I dont know what datatype the server is advertizing. But I am wondering why the library is corrupting this value.

feroze.




________________________________
 From: Igor Korot <[email protected]>
To: Feroze Daud <[email protected]>; FreeTDS Development Group <[email protected]> 
Sent: Thursday, September 19, 2013 12:13 PM
Subject: Re: [freetds] FreeTDS problems with converting SQL BigInt
 


Hi, Feroze,
What is you Server version?

Thank you.




On Thu, Sep 19, 2013 at 11:29 AM, Feroze Daud <[email protected]> wrote:

we are using TDS protocol version 8. Should we be using something else?
>
>
>here is our connection string...
>
>--
>
>Initializing processing with connection string:DRIVER=FreeTDS;Server=<snip>;UID=<snip>;PWD=<snip>;Database=<snip>;TDS_Version=8.0;Port=1433
>
>--
>
>feroze.
>
>
>
>________________________________
> From: Frediano Ziglio <[email protected]>
>To: Feroze Daud <[email protected]>; FreeTDS Development Group <[email protected]>
>Sent: Thursday, September 19, 2013 11:09 AM
>
>Subject: Re: [freetds] FreeTDS problems with converting SQL BigInt
>
>
>2013/9/19 Feroze Daud <[email protected]>:
>> So, I enabled logging for my application. This is what it shows me for the column that is being corrupted.
>>
>> --
>> token.c:526:processing result tokens.  marker is  81(TDS7_RESULT)
>> mem.c:519:tds_free_all_results()
>> token.c:1472:processing TDS7 result. set current_results to tds->res_info
>> read.c:179:tds_get_string: reading 20 from wire to give 10 to client.
>> token.c:1414:tds7_get_data_info:
>>         colname = MaxQueueID (10 bytes)
>>         type = 108 (numeric)
>>         server's type = 108 (numeric)
>>         column_varint_size = 1
>>         column_size = 17 (17 on server)
>>
>> --
>>
>> Does this mean that the TDS stream that is being read by freetds is advertizing the column as numeric?
>>
>
>No, it means the server is returning the number as numeric. Are you
>sure you are using proper protocol version?
>
>> Is there any way to have tdslog print out the value of the column that it is reading from the socket?
>>
>
>If you can read binary yes, just turn network data dump on.
>
>> feroze.
>>
>>
>>
>
>Frediano
>
>>
>> ----- Original Message -----
>> From: James K. Lowden <[email protected]>
>> To: [email protected]
>> Cc: Feroze Daud <[email protected]>; FreeTDS Development Group <[email protected]>
>> Sent: Wednesday, September 18, 2013 6:32 PM
>> Subject: Re: [freetds] FreeTDS problems with converting SQL BigInt
>>
>> On Wed, 18 Sep 2013 13:03:50 -0700 (PDT)
>> Feroze Daud <[email protected]> wrote:
>>
>>> Thanks. Unfortunately, I need to get the output parameter first, so I
>>> changed the sproc to return the value as a resultset, instead of an
>>> output parameter.
>>
>> As Frediano mentioned, the server sends the output parameter after any
>> ROW packets.  FreeTDS makes the data available to the application as
>> they arrive from the server.
>>
>>> This brings me to the original problem. I am getting garbage values
>>> out of call to getBigInteger.
>>
>> What does src/odbc/unittests/genparams show on your machine regarding
>> the BIGINT type?
>>
>>> Is there any way to enable Freetds logging for applications that dont
>>> go through the odbc driver manager?
>>
>> Cf. TDSDUMP in the user guide.
>>
>> HTH.
>>
>> --jkl
>>
>> P.S.  Top-posting reduces the value of the email archive by making it
>> harder to follow the thread.
>> _______________________________________________
>> FreeTDS mailing list
>> [email protected]
>> http://lists.ibiblio.org/mailman/listinfo/freetds
>_______________________________________________
>FreeTDS mailing list
>[email protected]
>http://lists.ibiblio.org/mailman/listinfo/freetds
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.