Skip site navigation (1) Skip section navigation (2)

can't set client_encoding in 7.3.2.9 - crlf bug?

From: Szűcs Gábor <surrano(at)gmail(dot)com>
To: "pgsql-odbc(at)postgresql(dot)org" <pgsql-odbc(at)postgresql(dot)org>
Subject: can't set client_encoding in 7.3.2.9 - crlf bug?
Date: 2005-03-22 10:13:36
Message-ID: 423FEFD0.5010509@gmail.com (view raw or flat)
Thread:
Lists: pgsql-odbc
Dear Gurus,

Driver: 7.3.2.9 snapshot
Server: Linux 7.4.6
OS: Win2k SP4
Other: Borland C++Builder 5, ODBCExpress 6.0

I try to use the 7.3.2.9 snapshot in hope of a bugfix (may or may not be a 
psqlodbc issue, described below)

I use a "DSNless connection", and set ConnSettings according to what found 
on the net. Indeed it seems to do something, but too early.

Below is the start of the psqlodbc.log.
Notice two things:

a) connect in and connect out differs in connsettings (latter uses something
    that reminds me of url notation (%5f etc). This may be normal, just
    noticed.

b) conn_settings kicks in and sets cl_e to ascii, but _LATER_ someone still
    sets it to utf8.

I tried setting HKLM\SOFTWARE\ODBC\ODBCINST.INI\PostgreSQL\ConnSettings 
despite that I set it in C++ like this:

    hdbc->Attributes->Add(
	"ConnSettings=set client_encoding to 'SQL_ASCII';");

for no success.


The bug that caused me to try newer versions (assuming that it's related to 
the driver) is something between OE and the driver, and related to 
MaxVarCharSize. Using the default, 254, tried reading a varchar field, 
containing a string of 51x3 characters + 51 line breaks. This adds up to 
51x4 = 204 characters in Linux (LF), thus fits in VarChar. However, it's 
51x5 = 255 characters in Windows (CRLF). It seems to me that OE reserves 
sufficient buffer to receive a varchar (254 bytes), but gets 255 bytes instead.

QUESTIONS:
a) is it a known problem with drivers up to, and including, 7.3.2.4?
b) is it a problem of the driver, or a problem of OE?
c) if it's a problem of the driver, is there a fix in the upcoming drivers?
d) We are not ready to upgrade to 8.x yet; provided that there is a fix, how
    do I make a newer driver work with my client encoding?

TIA,
--
G.

-- Below is the head of postgresql.log
conn=36125152, PGAPI_DriverConnect(in)='DRIVER={PostgreSQL};UID=sd;
PWD=xxxxx;SERVER=tir;PORT=5432;DATABASE=tir;BI=4;UniqueIndex=1;ReadOnly=0;
Protocol=6.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0;
ConnSettings=set client_encoding to 'SQL_ASCII';Fetch=100;Socket=4096;
UnknownSizes=0;MaxVarcharSize=254;MaxLongVarcharSize=8190;Debug=0;CommLog=1;
Optimizer=1;Ksqo=1;UseDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVarchar=0;
BoolsAsChar=0;Parse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;
LFConversion=1;UpdatableCursors=1;DisallowPremature=0;TrueIsMinus1=0;', 
fDriverCompletion=0
Global Options: Version='07.03.0209', fetch=100, socket=4096, 
unknown_sizes=0, max_varchar_size=254, max_longvarchar_size=8190
                 disable_optimizer=1, ksqo=1, unique_index=1, use_declarefetch=0
                 text_as_longvarchar=1, unknowns_as_longvarchar=0, 
bools_as_char=0 NAMEDATALEN=64
                 extra_systable_prefixes='dd_', conn_settings='' 
conn_encoding='SQL_ASCII'
conn=36125152, query=' '
conn=36125152, query='select version()'
     [ fetched 1 rows ]
     [ PostgreSQL version string = 'PostgreSQL 7.4.6 on i686-pc-linux-gnu, 
compiled by GCC 2.95.4' ]
     [ PostgreSQL version number = '7.4' ]
conn=36125152, query='set DateStyle to 'ISO''
conn=36125152, query='set geqo to 'OFF''
conn=36125152, query='set extra_float_digits to 2'
conn=36125152, query='set client_encoding to 'SQL_ASCII''
conn=36125152, query='select oid from pg_type where typname='lo''
     [ fetched 0 rows ]
conn=36125152, query='select pg_client_encoding()'
     [ fetched 1 rows ]
     [ Client encoding = 'SQL_ASCII' (code = 0) ]
conn=36125152, query='set client_encoding to 'UTF8''
conn=36125152, 
PGAPI_DriverConnect(out)='DRIVER={PostgreSQL};DATABASE=tir;SERVER=tir;PORT=5432;
UID=sd;PWD=xxxxx;A6=set+client%5fencoding+to+%27SQL%5fASCII%27;A7=100;A8=4096;
B0=254;B1=8190;BI=4;C2=dd_;CX=1b107ab'
--

pgsql-odbc by date

Next:From: BETTON NicolasDate: 2005-03-22 11:31:09
Subject: Installing PsqlODBC 8.00.0.1001 with libiodbc3-52.2 on Linux Fedora Core 1
Previous:From: Tom LaneDate: 2005-03-21 19:46:29
Subject: Re: 32-bit ints on 64-bit linux

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group