Re: BUG #9894: SQLError() is not returns SQL_NO_DATA_FOUND - Mailing list pgsql-bugs

From Gayathri Manoj
Subject Re: BUG #9894: SQLError() is not returns SQL_NO_DATA_FOUND
Date
Msg-id CAKqy4TPgp8pVxTHoF61UrpTE3U4GoBcRnPAc4VS0pw1yZaVNeg@mail.gmail.com
Whole thread Raw
In response to Re: BUG #9894: SQLError() is not returns SQL_NO_DATA_FOUND  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-bugs
Hi Michel,

Thanks for your  response.

I changed SQLRETURN instead of RETCODE.
My postgress driver version is  psqlodbc-09.01.0100.

my code is mentioned below and its worked fine for old version.  For
missing table first i will get rc as HY000 and then next iteration i will
get 00000.
But in later version I am getting 42P01 and its looping. If i add  an if
condition to  to break the  loop for the error case 42P01 then its working.

So please let me know do we have to handle each case separately or any
behavior change happens to the SQLError() API in later versions.

bool ODBCConn: errors(()
{
  SQLRETURN rc = SQL_SUCCESS;
  while (rc !=SQL_NO_DATA_FOUND) {
        rc = SQLError(henv, hdbc, hstmt, sqlstate, &nativeerr, errmsg,
SQL_MAX_MESSAGE_LENGTH
- 1, &actualmsglen);
         if (rc != SQL_NO_DATA_FOUND)  {
               if(strcmp(state,"01004")==0)
                         return true;
               else {
                      code to compare some general error (
"08S01", "08001""08004",.."S1T00")
                      discoonect db;
              }
          }
    }
   return true;
   }

Please let me know  how can post this same mail thread to
pgsql-odbc<http://www.postgresql.org/mailpref/pgsql-odbc>
 .

Thanks,
Gayathri


On Tue, Apr 8, 2014 at 7:05 AM, Michael Paquier
<michael.paquier@gmail.com>wrote:

> On Mon, Apr 7, 2014 at 8:36 PM,  <gayathri.annur@gmail.com> wrote:
> > The following bug has been logged on the website:
> > PostgreSQL version: 9.1.1
> You are missing years of bug fixing, some of them being critical from
> security viewpoint. you should try to update to 9.1.13, the latest
> minor release of Postgres 9.1 asap.
>
> > SQLError() is not returning SQL_NO_DATA_FOUND after driver upgrade from
> 7 to
> > 9.
> >
> > my code looks like
> >
> > RETCODE rc = SQL_SUCCESS;
> > while ( rc != SQL_NO_DATA_FOUND)
> > {
> >     rc = SQLError(henv, hdbc, hstmt, sqlstate, &nativeerr, errmsg,
> >                  SQL_MAX_MESSAGE_LENGTH - 1, &actualmsglen);
> >
> >  }
> > And whenever I try to access an missing table, I am getting sqlstate as
> > 42P01 and rc as SQL_SUCCESS and it is not coming out of the loop. The
> same
> > code worked fine for earlier version.
> A couple of things:
> - SQLError is an API of the ODBC driver, this has directly nothing to
> do with Postgres itself, so this bug report should be sent to
> pgsql-odbc
> - You should avoid RETCODE here, SQLRETURN should be used with
> SQLError, even if intrinsically both are signed short integers...
>
> > Please let me know how can I proceed further. Shall I need to handle each
> > state separately?
> It is hard to guess what you are doing wrong here without knowing the
> version of the Postgres ODBC driver you are using. The settings of
> your driver would also help. The code you cite here is incomplete as
> well. It is not possible to guess what you are doing wrong with this
> statement handle.
> Regards,
> --
> Michael
>

pgsql-bugs by date:

Previous
From: Niels Kristian Schjødt
Date:
Subject: Re: BUG #9895: Duplicate pkey
Next
From: Jeff Frost
Date:
Subject: Re: Configuring Standby Server in PostgreSQL 9.3.3