From: | "Scot Loach" <sloach(at)sandvine(dot)com> |
---|---|
To: | <pgsql-odbc(at)postgresql(dot)org>, <dpage(at)vale-housing(dot)co(dot)uk> |
Subject: | [PATCH] fix for wrong error code returned |
Date: | 2005-09-17 17:05:03 |
Message-ID: | 71837C040963F748B9B94E123A2896785A1094@mailserver.sandvine.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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);
From | Date | Subject | |
---|---|---|---|
Next Message | Scot Loach | 2005-09-17 17:51:45 | [PATCH] notice handler |
Previous Message | Andrey Repko | 2005-09-17 11:09:48 | client encoding mismatch |