Sorry for the late reoly.
(2012/09/02 2:13), Boszormenyi Zoltan wrote:
> 2012-09-01 17:22 keltezéssel, Boszormenyi Zoltan írta:
>> 2012-09-01 11:19 keltezéssel, Hiroshi Inoue írta:
>>> (2012/08/31 20:21), Boszormenyi Zoltan wrote:
>>>> we had to recently test psqlODBC with an older application
>>>> which doesn't expect ODBC 3.x.
>>>> The problem is that the client locks up as soon as it encounters
>>>> an error of any kind, like restarting the server from under the client
>>>> or simply executing a bad query.
>>>> After debugging the problem and reading the code of both
>>>> unixODBC 2.3.1 and psqlODBC (version 09.00.0310 and 09.01.0200),
>>>> I discovered that the DriverManager calls the driver's SQLError()
>>>> and SQLGetDiagRec() in a loop
>>> Does the DriverManager call both SQLError() and SQLGetDiagRec()?
>> Yes, it detects which is supported and calls that in the error handler
>> of SQLExecute(). In case psqlODBC is compiled using
>> SQLGetDiagRec() is naturally not supported.
>>> Could you send me (loop part of) the Mylog output?
>> I attached the unixODBC tracefile (/tmp/Trace.txt), there is no "mylog"
>> lines in it. I execute a single "select * from test;" and this table
>> doesn't exist.
>> The trace file shows that the error code is repeated ad infinitum.
>> But for my debugging, I didn't use the ODBC tracing, I added my extra
>> so I can see on the client terminal what is going on.
> Attached is the mylog output for the vanilla psqlODBC 09.01.0200
> which also shows the infinite loop.
Clearing error info seems to cause the infinite loop.
Simply removing the follwoing code would solve the bug.
COuld you try it?
if (error->errorpos >= msglen)
*pgerror = NULL;
In response to
pgsql-odbc by date
|Next:||From: Boszormenyi Zoltan||Date: 2012-09-09 07:55:11|
|Subject: Re: Error reporting goes into an infinite loop when compiled
|Previous:||From: Hiroshi Saito||Date: 2012-09-07 15:23:57|
|Subject: Re: psqlODBC 09.01.0200 Released|