From: | Lothar Behrens <lothar(dot)behrens(at)lollisoft(dot)de> |
---|---|
To: | pgsql-odbc(at)postgresql(dot)org |
Subject: | Re: Strange problem ? |
Date: | 2006-01-24 13:25:13 |
Message-ID: | c52b0b85411b4e61e455ee31f787c5e6@lollisoft.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
Am 24.01.2006 um 13:11 schrieb Ludek Finstrle:
>> I have two computers, each with SuSE 9.1 and unixODBC with psqlodbc
>> 07.03.0200.
>
> Are you sure that both psqlODBC are same?
Yes, at most. I copied the driver from my work notebook to the test box
- both are SuSE 9.1.
I have compared the unixODBC version - 2.2.8. Had some trouble with the
psqlpdbcS.so file
not on my test box, I also copied that file (for ODBCConfig) to my
testbox.
As of that I have a test application (mentioned in my other posts
here), which works while doing
the same test, my class wrapper may do some things different. I have
done a strace on the system
calls for both and only find relevant differences in that my
application (wrapper) seems to hang.
Today I will gather some API logs as of activating them in the driver.
But not in the next hour.
I hope, which that I can get more information about the differences -
better than comparing code
or the strace diffs.
Is there a switch to activate the server side logging.
Here are the differences in short:
Dave's plain test:
retcode = SQLSetStmtOption(hstmt_select, SQL_ATTR_CONCURRENCY,
SQL_CONCUR_ROWVER);
if (retcode != SQL_SUCCESS) dbError("SQLSetStmtOption()",
hstmt_select);
retcode = SQLSetStmtOption(hstmt_select, SQL_CURSOR_TYPE,
SQL_CURSOR_KEYSET_DRIVEN);
if (retcode != SQL_SUCCESS) dbError("SQLSetStmtOption()",
hstmt_select);
UCHAR buf6[] = "drop table regressiontest";
retcode = SQLExecDirect(hstmt, buf6, sizeof(buf6));
if (retcode != SQL_SUCCESS) dbError("SQLExecDirect()", hstmt);
My wrappers code (AFTER calling SQLExecDirect(...)):
const int ArraySize = 1;
SQLUSMALLINT RowStatusArray[ArraySize];
// Set the array size to one.
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER) ArraySize,
0);
// Why this construct ??
SQLINTEGER csrType = SQL_CURSOR_KEYSET_DRIVEN;
SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) csrType, 0);
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_BIND_TYPE, SQL_BIND_BY_COLUMN, 0);
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_STATUS_PTR, RowStatusArray, 0);
Is there a problem, when I set the cursor type too last ?
>
>> After a lot of research, I found this message may be a cause:
>>
>> Test system (my program): Set SQL_CURSOR_TYPE as drivers.lie. (Program
>> hang)
>
> Don't you try dynamic cursor? I don't know the code very well but you
> could find it in the code.
Dave's sample works with KEYSET_DRIVEN cursors.
>
>> Any hints ?
>
> You could try 07_03_ENHANCED which Dave announced few days ago.
>
Will try that later. I wonder about that I get such problems. This is
because I think, I have
the same drivers and so on.
> Regards,
>
> Luf
Regards, Lothar
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>
>
--
Lothar Behrens | Rapid Prototyping ...
Rosmarinstr 3 |
40235 Düsseldorf | www.lollisoft.de
From | Date | Subject | |
---|---|---|---|
Next Message | Ludek Finstrle | 2006-01-24 13:30:02 | Re: Problem with Blobs on XP Professional |
Previous Message | Ludek Finstrle | 2006-01-24 13:23:40 | Re: Better version of ODBC to use with each version of Postgres |