Thread: I can´t read the data in the second time

I can´t read the data in the second time

From
"Milton"
Date:
There are cases than i can´t read the data one more time.
See the VB example below:
 
================================
dim rdoQuery as rdoResultset
dim strValue as string
 
set rdoQuery = connection.OpenResultset("SELECT '1' || '2' AS test", rdOpenKeyset, rdConcurReadOnly)
 
strValue = rdoQuery(0) ' Value is '12'
strValue = rdoQuery(0) ' ERROR HERE: Invalid user of Null

 

================================

 

The similar example work in the others DB (ORACLE, SQL SERVER, INFORMIX)

 

Is it a bug in the pgsql-odbc?

 

P.S. : I have a program to test it, if someone would like to use this, notify me, ok!!?

Re: I can´

From
Ludek Finstrle
Date:
> The similar example work in the others DB (ORACLE, SQL SERVER, INFORMIX)

Could you try this with another type in these DB (I think one for which
isn't known maximal size). It could be blob, clob or whatever. I don't
know these RDBMS so well.

It could be possible that if GetData return whole data in one call ADO
expect that it could return it in next calling again.
But what about case that there have to be called GetData more times
for retrieving whole data? (it have to be text longer then 2100 +- in
you test program and psqlODBC).

Please could you test select a || b from table (where length(a||b) > 2100)?

Thanks for help in bug hunting,

Luf

Re: I can't read the data in the second time

From
Ludek Finstrle
Date:
> There are cases than i can´t read the data one more time.
> See the VB example below:
>
> ================================
> dim rdoQuery as rdoResultset
> dim strValue as string
>
> set rdoQuery = connection.OpenResultset("SELECT '1' || '2' AS test", rdOpenKeyset, rdConcurReadOnly)
>
> strValue = rdoQuery(0) ' Value is '12'
> strValue = rdoQuery(0) ' ERROR HERE: Invalid user of Null
>
>
> ================================
>
> The similar example work in the others DB (ORACLE, SQL SERVER, INFORMIX)

No. Same situation doesn't work againist MSSQL. When you try
"SELECT column FROM table1" where column is type longvarchar it fails
againist MSSQL:
=========================10.1. 2006 22:55:41=========================
 Access Column 'text' failed
Error: 40002 - S1109: [Microsoft][SQL Native Client]Invalid cursor position
rdoErrors: 0 - S1109: [Microsoft][SQL Native Client]Invalid cursor position
=========================10.1. 2006 22:55:41=========================

=========================10.1. 2006 22:55:40=========================
Query opened
 Command to Open SQL: OpenResultset('select codi as text from table1', rdOpenKeyset, rdConcurReadOnly)
=========================10.1. 2006 22:55:40=========================

PgSQL backend handles varchar as text in functions. I don't know how to
change it. We don't know text type size. We can't get it from
backend (at least I don't know how). So ADO choose SQLGetData method
to get it. There is limitation to not call SQLGetData after whole
data is getting from column.

> Is it a bug in the pgsql-odbc?

I think it's not a bug in psqlodbc.

Workarounds:
1) retype column from text to varchar explicitely
2) turn off Text as LongVarchar in Datasource settings

I hope it helps or someone point that I make mistake somewhere.

Regards,

Luf

Re: I can't read the data in the second time

From
"Milton"
Date:
> 2) turn off Text as LongVarchar in Datasource settings

It´s work only the last version (isn´t 08.01.06) than you were send to me.

This version solve all my problems...

Thanks, Luf!!!


----- Original Message -----
From: "Ludek Finstrle" <luf@pzkagis.cz>
To: "Milton" <milton.siqueira@mapcardoso.com.br>
Cc: "pgsql-odbc" <pgsql-odbc@postgresql.org>
Sent: Tuesday, January 10, 2006 5:05 PM
Subject: Re: [ODBC] I can't read the data in the second time


> There are cases than i can´t read the data one more time.
> See the VB example below:
>
> ================================
> dim rdoQuery as rdoResultset
> dim strValue as string
>
> set rdoQuery = connection.OpenResultset("SELECT '1' || '2' AS test",
rdOpenKeyset, rdConcurReadOnly)
>
> strValue = rdoQuery(0) ' Value is '12'
> strValue = rdoQuery(0) ' ERROR HERE: Invalid user of Null
>
>
> ================================
>
> The similar example work in the others DB (ORACLE, SQL SERVER, INFORMIX)

No. Same situation doesn't work againist MSSQL. When you try
"SELECT column FROM table1" where column is type longvarchar it fails
againist MSSQL:
=========================10.1. 2006 22:55:41=========================
 Access Column 'text' failed
Error: 40002 - S1109: [Microsoft][SQL Native Client]Invalid cursor position
rdoErrors: 0 - S1109: [Microsoft][SQL Native Client]Invalid cursor position
=========================10.1. 2006 22:55:41=========================

=========================10.1. 2006 22:55:40=========================
Query opened
 Command to Open SQL: OpenResultset('select codi as text from table1',
rdOpenKeyset, rdConcurReadOnly)
=========================10.1. 2006 22:55:40=========================

PgSQL backend handles varchar as text in functions. I don't know how to
change it. We don't know text type size. We can't get it from
backend (at least I don't know how). So ADO choose SQLGetData method
to get it. There is limitation to not call SQLGetData after whole
data is getting from column.

> Is it a bug in the pgsql-odbc?

I think it's not a bug in psqlodbc.

Workarounds:
1) retype column from text to varchar explicitely
2) turn off Text as LongVarchar in Datasource settings

I hope it helps or someone point that I make mistake somewhere.

Regards,

Luf

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org



Re: I can't read the data in the second time

From
Ludek Finstrle
Date:
> > 2) turn off Text as LongVarchar in Datasource settings
>
> It´s work only the last version (isn´t 08.01.06) than you were send to me.

I know. There was bug in Text as LongVarchar option. Someone else
report it in the bug tracker ;-) I has solved it yesterday.

> This version solve all my problems...

Nice to hear. I'll close the bug-entry.

Regards,

Luf