[freetds] Are LOBs supported? Two additional bytes are fetched for text column.

Frediano Ziglio freddy77 at gmail.com
Thu Jan 10 01:46:47 EST 2008


Il giorno mer, 09/01/2008 alle 11.11 +0100, Sebastien FLAESCH ha
scritto:
> Hello,
> 
> Here is a new version of the odbctest17.c sample...
> 
> Now the program uses SQL_LEN_DATA_AT_EXEC() macro for SQLBindParameter().
> 
> But still uses SQL_DATA_AT_EXEC for SQLBindCol() (I suppose this is supported).
> 
> I think there is a problem when fetching text data:
> 
> By inserting 10000 bytes, then fetching, I get 2 additional bytes for the text column.
> 
> I checked the values inserted in the database with:
> 
>    select datalength(t), datalength(b) from tt
> 
> returns:
> 
> 0       10000         10000
> 1       10000         10000
> 
> So to me the insert is ok.
> 
> Try the following:
> 
> ./odbctest17.bin dsn user pswd 2
> 
> where 2 is the number of rows to be inserted.
> 
> Output gives:
> 
>  >> insert... 0
>  >> SQLParamData: ptr = 0xbff4b990  rcode = 99
>  >> param 0xbff4b990: total bytes written = 10000
>  >> SQLParamData: ptr = 0xbff4b990  rcode = 99
>  >> param 0xbff4b990: total bytes written = 10000
>  >> SQLParamData: ptr = 0xbff4b990  rcode = 0
>  >> insert... 1
>  >> SQLParamData: ptr = 0xbff4b990  rcode = 99
>  >> param 0xbff4b990: total bytes written = 10000
>  >> SQLParamData: ptr = 0xbff4b990  rcode = 99
>  >> param 0xbff4b990: total bytes written = 10000
>  >> SQLParamData: ptr = 0xbff4b990  rcode = 0
>  >> fetch... 0  rcode = 0
>  >> readBlob field 1
>  >>     step 1: 4096 bytes read...
>  >>     step 2: 4096 bytes read...
>  >>     step 3: 1810 bytes read...
>  >>   total bytes read = 10002               <--- should be 10000
>  >> readBlob field 2

I'll fix this problem is that it consider numm-termination cause source
is longvarchar while it should consider destination (witch is
SQL_C_BINARY)

freddy77




More information about the FreeTDS mailing list