Re: Error messages not always reported through the ODBC driver -STATEMENT ERROR missing - Mailing list pgsql-odbc

From Kristis Makris
Subject Re: Error messages not always reported through the ODBC driver -STATEMENT ERROR missing
Date
Msg-id 200108241551.f7OFpUf14728@postgresql.org
Whole thread Raw
In response to Re: Error messages not always reported through the ODBC driver -STATEMENT ERROR missing  (Hiroshi Inoue <Inoue@tpf.co.jp>)
Responses Re: Error messages not always reported through the ODBC
List pgsql-odbc
Hi Hiroshi,

Thanks for looking into this.

> > conn=33461048, query='BEGIN'
> > conn=33461048, query='SELECT Vendor_Remove(1)'
> >     [ fetched 1 rows ]
> > conn=33461048, query='COMMIT'
> > ERROR from backend during send_query: 'ERROR:  <unnamed> referential
> > integrity violation - key in vendor still referenced from
> > vendorforwellagreement'
> > CONN ERROR: func=SQLTransact, desc='', errnum=110, errmsg='ERROR:
>
> The error seems to have occured at SQLTransact().
> Probbably you should catch the error at CommitTrans() not at
> ExecuteSQL().

Good observation, that makes perfect sense. I now modified my source so
that the CommitTrans() is called within the try block. Here's the exact
source:



******************************************************************************************
    try
    {
     if (db.CanTransact())
         db.BeginTrans();

     strStmt = "SELECT Vendor_Remove(";
     strStmt += LongToString(lID);
     strStmt += ")";

     db.ExecuteSQL(strStmt);

     if (db.CanTransact())
         db.CommitTrans();

    }
    catch (CDBException* pEx)
    {
     if (db.CanTransact())
         db.Rollback();

     pEx->ReportError();
     pEx->Delete();

    AfxMessageBox(_T("Record (Vendor) Delete Failed!"));
    return FALSE;
    }

 return TRUE;

******************************************************************************************

However, I'm still  unable to capture an exception. Program execution
goes past the ExecuteSQL(), past the CommitTrans(), and skips over the
catch block. Isn't that bizzare?

Here's the error message I'm now getting in the logs (still no STATEMENT ERROR):

******************************************************************************************
conn=33460928, query='BEGIN'
conn=33460928, query='SELECT Vendor_Remove(1)'
    [ fetched 1 rows ]
conn=33460928, query='COMMIT'
ERROR from backend during send_query: 'ERROR:  <unnamed> referential
integrity violation - key in vendor still referenced from
vendorforwellagreement'
CONN ERROR: func=SQLTransact, desc='', errnum=110, errmsg='ERROR:
<unnamed> referential integrity violation - key in vendor still
referenced from vendorforwellagreement'
            ------------------------------------------------------------
            henv=33479888, conn=33460928, status=1, num_stmts=16
            sock=33479928, stmts=33475656, lobj_type=-999
            ---------------- Socket Info -------------------------------
            socket=512, reverse=0, errornumber=0, errormsg='(NULL)'
            buffer_in=33467416, buffer_out=33471536
            buffer_filled_in=162, buffer_filled_out=0,
buffer_read_in=162
conn=33460928, SQLDisconnect


******************************************************************************************



> >
> > Incidentally, I have a couple more questions about the driver in
> > general:
> >
> > 1) I've noticed that the 7.01.00.06 driver reports in the logs that it
> > is a 7.01.0005 driver. Is this nomral? Is this a known bug?
> >
> >    "Global Options: Version='07.01.0005'"
>
> Hmm strange, what does Control Panel show ?


The Control Panel reports that I'm using the 7.01.00.06 version of the
driver. I'm sure that I'm not using the 7.01.00.05 version, since the
.05 had a problem with reporting correctly the NOTICEs reported by the
backend. I do not have that problem with the current driver I'm using
(.06?). I had installed the .06 version using the installation utility
provided.

What version do you guys get reported in your log files?


Thanks,
-Kristis


pgsql-odbc by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: ODBC include files
Next
From: Kristis Makris
Date:
Subject: Re: Error messages not always reported through the ODBC driver -STATEMENT ERROR missing