Thread: Re: B7 option
Hi: I was using the last odbc driver (9.1.200) to get a character field with CR and LF. With the following connection string, the last character was getting cut off (When a CR LF was in the fied). Driver={PostgreSQL UNICODE};Server= server.servicer.com;Port=5432;Database=dbname;Uid=user;Pwd=pwd;BI=2;TextAsLongVarchar=1;UnknownSizes=2;UseServerSidePrepare=1; B0=254;B7=0;C5=1; Changing the B7 to B7=0 corrects the issue (no cut off at the end) Driver={PostgreSQL UNICODE};Server= server.servicer.com;Port=5432;Database=dbname;Uid=user;Pwd=pwd;BI=2;TextAsLongVarchar=1;UnknownSizes=2;UseServerSidePrepare=1; B0=254;B7=1;C5=1; Documentation on the B7 is a little scarce but most say the B7 is the same as the TextasLongVarchar, but changing the TextaslongVarcharhas no offection on this option. What happens when the B7 is set 0? (and textaslongvarhar=1)
Hi Barry, (2013/07/31 23:29), Barry Bell wrote: > Hi: > I was using the last odbc driver (9.1.200) to get a character field with CR and LF. > With the following connection string, the last character was getting cut off (When a CR LF was in the fied). > Driver={PostgreSQL UNICODE};Server= server.servicer.com;Port=5432;Database=dbname;Uid=user;Pwd=pwd;BI=2;TextAsLongVarchar=1;UnknownSizes=2;UseServerSidePrepare=1; B0=254;B7=0;C5=1; Contradictory options TextAsLongVarchar=1 and B7=0 are specified. Psqlodbc drivers eat the tokens one by one and overwrite the former option by the latter one after all. > Changing the B7 to B7=0 corrects the issue (no cut off at the end) Changing to B7=1? > Driver={PostgreSQL UNICODE};Server= server.servicer.com;Port=5432;Database=dbname;Uid=user;Pwd=pwd;BI=2;TextAsLongVarchar=1;UnknownSizes=2;UseServerSidePrepare=1; B0=254;B7=1;C5=1; > > Documentation on the B7 is a little scarce but most say the B7 is the same as the TextasLongVarchar, but changing the TextaslongVarcharhas no offection on this option. > > What happens when the B7 is set 0? (and textaslongvarhar=1)
If there a is a LF(char(10) inside a string and the B7=1, the string returned by the driver will cut off 1 character foreach LF(chr(10) inside the string. If the B7=0 the full string si returned. Field='ABC (LF)123' Ex: B7=1 Field='ABC (LF)12' EX B7=0: Field='ABC (LF)123' Any idea why a chr(10) (LF) in a field would cause this? -----Original Message----- From: pgsql-odbc-owner@postgresql.org [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Inoue, Hiroshi Sent: Wednesday, July 31, 2013 11:20 PM To: Barry Bell Cc: Frank A. U.; psql-odbc Subject: Re: [ODBC] B7 option Hi Barry, (2013/07/31 23:29), Barry Bell wrote: > Hi: > I was using the last odbc driver (9.1.200) to get a character field with CR and LF. > With the following connection string, the last character was getting cut off (When a CR LF was in the fied). > Driver={PostgreSQL UNICODE};Server= > server.servicer.com;Port=5432;Database=dbname;Uid=user;Pwd=pwd;BI=2;Te > xtAsLongVarchar=1;UnknownSizes=2;UseServerSidePrepare=1; > B0=254;B7=0;C5=1; Contradictory options TextAsLongVarchar=1 and B7=0 are specified. Psqlodbc drivers eat the tokens one by one and overwrite the former option by the latter one after all. > Changing the B7 to B7=0 corrects the issue (no cut off at the end) Changing to B7=1? > Driver={PostgreSQL UNICODE};Server= > server.servicer.com;Port=5432;Database=dbname;Uid=user;Pwd=pwd;BI=2;Te > xtAsLongVarchar=1;UnknownSizes=2;UseServerSidePrepare=1; > B0=254;B7=1;C5=1; > > Documentation on the B7 is a little scarce but most say the B7 is the same as the TextasLongVarchar, but changing the TextaslongVarcharhas no offection on this option. > > What happens when the B7 is set 0? (and textaslongvarhar=1)
(2013/08/01 21:36), Barry Bell wrote: > If there a is a LF(char(10) inside a string and the B7=1, the string returned by the driver will cut off 1 character foreach LF(chr(10) inside the string. > If the B7=0 the full string si returned. > > Field='ABC (LF)123' > > Ex: B7=1 > Field='ABC (LF)12' > EX B7=0: > Field='ABC (LF)123' > > Any idea why a chr(10) (LF) in a field would cause this? Seems there are some bugs in LF<->CRLF conversions. I would examine it. Anyway please specify *LFconversion=0* or *C5=0* in your connection string to suppress LF<->CRLF conversion. regards, Hiroshi Inoue