Thread: 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)
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!!?
> 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
> 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
> 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
> > 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