Re: Strange problem ?

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

In response to

Responses

Browse pgsql-odbc by date

  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