Thread: bug with TextAsLongVarchar=0: output scrambled

bug with TextAsLongVarchar=0: output scrambled

From
Date:
hi list
 
a while ago i posted about a bug with unicode TEXT fields and pgODBC (see below). i now was able to get down to the problem.
 
if you use TextAsLongVarchar=0 with the latest drivers, then the output from TEXT fields is scrambled. i was able to reproduce this by having a text-field with as low as ~500 chars of data. the output contained invalid charcters at random positions - and as early as after the 240 character. the invalid characters seem to be 0x00 or the like, which of course messes with the application.
 
here's my full connection string:
Driver={PostgreSQL UNICODE};Server=localhost;Port=5432;Database=mydb;UID=myuser;pwd=mypass;TrueIsMinus1=1;BoolsAsChar=0;TextAsLongVarchar=0;UseDeclareFetch=0
when using TextAsLongVarchar=1, data is returned fine. unfortunately, some of our textfields are longer than longvarchars 8190 limit...
when going back to driver 8.01.0102, TextAsLongVarchar=0 works perfectly. the problem also exists in the latest driver release from august.
 
- thomas
 
 
 
----- Original Message -----
Sent: Friday, March 31, 2006 1:47 PM
Subject: problem with latest stable driver

hi list
 
probably an old problem, but i wasn't able to follow the list for a while. after we upgraded the odbc version to the latest driver (pgsql: 8.1.3 with odbc: 8.1.2), all unicode TEXT-output was totaly messed up. i wasn't able to find any changelogs descripting changes from the 8.1.1 (where everything works just fine) to 8.1.2 (where ADODB output of TEXT is totaly messed up on our win2k3 system).
 
this is probably a known problem by now, but as i wasn't able to find any link to a newer dev-version on pgfoundry, i wanted to ask here what the best steps are to avoid this (aside from downgrading to driver v. 8.1.1)
 
thanks,
thomas

Re: bug with TextAsLongVarchar=0: output scrambled

From
Hiroshi Inoue
Date:
me@alternize.com wrote:
> hi list
>
> a while ago i posted about a bug with unicode TEXT fields and pgODBC (see below). i now was able to get down to the
problem.
>
> if you use TextAsLongVarchar=0 with the latest drivers, then the output from TEXT fields is scrambled.
 > i was able to reproduce this by having a text-field with as low as ~500 chars of data. the output
contained
 > invalid charcters at random positions - and as early as after the 240 character. the invalid
characters seem
 > to be 0x00 or the like, which of course messes with the application.

There's no strangeness about it because you are telling the driver and the application that
your text fields have < 255 characters though your text fields have > 254 characters.
Anyway could you send me the Mylog output ?

> here's my full connection string:
> Driver={PostgreSQL
UNICODE};Server=localhost;Port=5432;Database=mydb;UID=myuser;pwd=mypass;TrueIsMinus1=1;BoolsAsChar=0;TextAsLongVarchar=0;UseDeclareFetch=0
>
> when using TextAsLongVarchar=1, data is returned fine.
 > unfortunately, some of our textfields are longer than longvarchars 8190 limit...

8190 is the limitation for ancient PG severs and isn't a driver's limitation at all.
You can increase the limit by changing the Max LongVarchar value.
However the tool or middleware you are using may have a limitation.

> when going back to driver 8.01.0102, TextAsLongVarchar=0 works perfectly.

I'm suspicious if the setting was ignored by the driver.

regards,
Hiroshi Inoue

Re: bug with TextAsLongVarchar=0: output scrambled

From
Date:
> There's no strangeness about it because you are telling the driver and the
> application that
> your text fields have < 255 characters though your text fields have > 254
> characters.

i don't think so. because on some fields i only get 218 chars, on other
fields up to 480 chars until an invalid character shows up...

> Anyway could you send me the Mylog output ?

sent to you offlist.


> 8190 is the limitation for ancient PG severs and isn't a driver's
> limitation at all.
> You can increase the limit by changing the Max LongVarchar value.
> However the tool or middleware you are using may have a limitation.

i need unlimited size as i currently don't know how much data there will be
stored in a text field...

> I'm suspicious if the setting was ignored by the driver.

with the 8.01.0102 driver i succesfully write and read 32kb of text data
with the mentioned connection string...

best regards,
thomas



----- Original Message -----
From: "Hiroshi Inoue" <inoue@tpf.co.jp>
To: <me@alternize.com>
Cc: <pgsql-odbc@postgresql.org>
Sent: Monday, September 11, 2006 1:56 AM
Subject: Re: [ODBC] bug with TextAsLongVarchar=0: output scrambled


> me@alternize.com wrote:
>> hi list
>>
>> a while ago i posted about a bug with unicode TEXT fields and pgODBC (see
>> below). i now was able to get down to the problem.
>>
>> if you use TextAsLongVarchar=0 with the latest drivers, then the output
>> from TEXT fields is scrambled.
> > i was able to reproduce this by having a text-field with as low as ~500
> > chars of data. the output
> contained
> > invalid charcters at random positions - and as early as after the 240
> > character. the invalid
> characters seem
> > to be 0x00 or the like, which of course messes with the application.
>
> There's no strangeness about it because you are telling the driver and the
> application that
> your text fields have < 255 characters though your text fields have > 254
> characters.
> Anyway could you send me the Mylog output ?
>
>> here's my full connection string:
>> Driver={PostgreSQL
>>
UNICODE};Server=localhost;Port=5432;Database=mydb;UID=myuser;pwd=mypass;TrueIsMinus1=1;BoolsAsChar=0;TextAsLongVarchar=0;UseDeclareFetch=0
>>
>> when using TextAsLongVarchar=1, data is returned fine.
> > unfortunately, some of our textfields are longer than longvarchars 8190
> > limit...
>
> 8190 is the limitation for ancient PG severs and isn't a driver's
> limitation at all.
> You can increase the limit by changing the Max LongVarchar value.
> However the tool or middleware you are using may have a limitation.
>
>> when going back to driver 8.01.0102, TextAsLongVarchar=0 works perfectly.
>
> I'm suspicious if the setting was ignored by the driver.
>
> regards,
> Hiroshi Inoue
>