Unix Technical Forum

Strange problem ?

This is a discussion on Strange problem ? within the pgsql Interfaces odbc forums, part of the PostgreSQL category; --> Hi, I have two computers, each with SuSE 9.1 and unixODBC with psqlodbc 07.03.0200. On my work system all ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Interfaces odbc

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-16-2008, 01:47 AM
lothar.behrens@lollisoft.de
 
Posts: n/a
Default Strange problem ?

Hi,

I have two computers, each with SuSE 9.1 and unixODBC with psqlodbc
07.03.0200.
On my work system all goes well, but on my test system I get problems -
or a hang.

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)
Test sytem (test app from Dave): Set SQL_CURSOR_TYPE to
SQL_CURSOR_KEYSET_DRIVEN.

In short, this is what I found today.

What is this meaning ?

Any hints ?

Thanks, Lothar

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-16-2008, 01:47 AM
Ludek Finstrle
 
Posts: n/a
Default Re: Strange problem ?

> I have two computers, each with SuSE 9.1 and unixODBC with psqlodbc
> 07.03.0200.


Are you sure that both psqlODBC are same?

> 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.

> Any hints ?


You could try 07_03_ENHANCED which Dave announced few days ago.

Regards,

Luf

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-16-2008, 01:47 AM
Lothar Behrens
 
Posts: n/a
Default Re: Strange problem ?


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



Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-16-2008, 01:47 AM
Ludek Finstrle
 
Posts: n/a
Default Re: Strange problem ?

> My wrappers code (AFTER calling SQLExecDirect(...)):
^^^^^^^^^^^^^^^^^^^^^^^^^^^
This could be the problem. You open cursor and then
you want change the type ...

I'm not expert in this question. I don't use ODBC frequently.

> // Why this construct ??
> SQLINTEGER csrType = SQL_CURSOR_KEYSET_DRIVEN;
>
> SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)
> csrType, 0);
>
> Dave's sample works with KEYSET_DRIVEN cursors.


Keyset driven cursor isn't full dynamic cursor (ODBC spec).
Keyset driven cursor doesn't detect added or deleted rows from
other transactions.

I'm sorry I can't help you more

Luf

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 04-16-2008, 01:47 AM
Lothar Behrens
 
Posts: n/a
Default Re: Strange problem ?


Am 24.01.2006 um 14:37 schrieb Ludek Finstrle:

>> My wrappers code (AFTER calling SQLExecDirect(...)):

> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> This could be the problem. You open cursor and then
> you want change the type ...
>
> I'm not expert in this question. I don't use ODBC frequently.


That didn't solved the problem, but I found it !

My last test was to get the current unixODBC source code. (2.2.11)
Building and installing that beast and reinstalling the original driver
07.03.0200 solved it.

There IS a problem in the 2.2.8 driver !

And my last update via SuSE YOU didn't pull that version.

That was the problem I really knew. But I didn't remember.

>
>> // Why this construct ??
>> SQLINTEGER csrType = SQL_CURSOR_KEYSET_DRIVEN;
>>
>> SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)
>> csrType, 0);
>>
>> Dave's sample works with KEYSET_DRIVEN cursors.

>
> Keyset driven cursor isn't full dynamic cursor (ODBC spec).
> Keyset driven cursor doesn't detect added or deleted rows from
> other transactions.


I know.

>
> I'm sorry I can't help you more
>
> Luf
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>
>

--
Lothar Behrens | Rapid Prototyping ...
Rosmarinstr 3 |
40235 Düsseldorf | www.lollisoft.de



---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:30 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com