[PATCH] fix for wrong error code returned - Mailing list pgsql-odbc

From Scot Loach
Subject [PATCH] fix for wrong error code returned
Date
Msg-id 71837C040963F748B9B94E123A2896785A1094@mailserver.sandvine.com
Whole thread Raw
List pgsql-odbc
This patch corrects the previous fix for returning 08S01 error code for the server disconnecting.
The previous patch sent this error code for any error on the statement (such as a primary key collision).

--- statement.c.old     2005-09-17 13:03:28.000000000 -0400
+++ statement.c 2005-09-17 12:54:31.000000000 -0400
@@ -1093,7 +1093,7 @@
        CSTR func = "SC_execute";
        ConnectionClass *conn;
        IPDFields       *ipdopts;
-       char            was_ok, was_nonfatal,was_fatal;
+       char            was_ok, was_nonfatal;
        QResultClass    *res = NULL;
        Int2            oldstatus,
                                numcols;
@@ -1221,15 +1221,19 @@
        {
                was_ok = QR_command_successful(res);
                was_nonfatal = QR_command_nonfatal(res);
-               was_fatal = QR_command_fatal(res);

                if (was_ok)
                        SC_set_errornumber(self, STMT_OK);
-               else if (was_fatal)
-                       SC_set_errornumber(self,STMT_BAD_ERROR);
                else
                        SC_set_errornumber(self, was_nonfatal ? STMT_INFO_ONLY : STMT_ERROR_TAKEN_FROM_BACKEND);

+#ifdef USE_LIBPQ
+               if (QR_command_fatal(res) && PQstatus(conn->pgconn) == CONNECTION_BAD)
+               {
+                   SC_set_errornumber(self, STMT_BAD_ERROR);
+               }
+#endif /* USE_LIBPQ */
+
                /* set cursor before the first tuple in the list */
                self->currTuple = -1;
                SC_set_current_col(self, -1);

pgsql-odbc by date:

Previous
From: Andrey Repko
Date:
Subject: client encoding mismatch
Next
From: "Scot Loach"
Date:
Subject: [PATCH] notice handler