Re: Bug in ODBC driver doing UPDATES and DELETES (fwd)
От | Dave Page |
---|---|
Тема | Re: Bug in ODBC driver doing UPDATES and DELETES (fwd) |
Дата | |
Msg-id | 03AF4E498C591348A42FC93DEA9661B844B0C4@mail.vale-housing.co.uk обсуждение исходный текст |
Список | pgsql-odbc |
Thanks Tim, patch applied. Regards, Dave > -----Original Message----- > From: Tim Woodall [mailto:tim@woodall.me.uk] > Sent: 19 June 2003 16:59 > To: Dave Page > Subject: RE: [ODBC] Bug in ODBC driver doing UPDATES and DELETES (fwd) > > > Hi Dave, > > > > > > > > -----Original Message----- > > > From: Tim Woodall [mailto:tim@woodall.me.uk] > > > Sent: 18 June 2003 14:55 > > > To: Dave Page > > > Subject: Re: [ODBC] Bug in ODBC driver doing UPDATES and > DELETES (fwd) > > > > > > > > > Including supplying a patch that > > > applies cleanly against CVS. > > > > Hi Tim, > > > > If you could please, that would be good. That file's > changed a bit and > > I don't have much time to do it myself right now. > > > > I've included it below. Applies cleanly against 1.78 of statement.c > > Is the comment right at the top of the patch about > was_rows_affected OK or do you want me to remove it? > > I've also corrected the formatting of the two if() statements > from the previous patch that I have added. (I don't usually > put a space between > the "if" and the "(" ) > > Regards, > > Tim. > > > Index: statement.c > =================================================================== > RCS file: /usr/local/cvsroot/psqlodbc/psqlodbc/statement.c,v > retrieving revision 1.78 > diff -u -r1.78 statement.c > --- statement.c 27 May 2003 05:20:09 -0000 1.78 > +++ statement.c 19 Jun 2003 15:52:41 -0000 > @@ -1022,7 +1022,12 @@ > static char *func = "SC_execute"; > ConnectionClass *conn; > APDFields *apdopts; > - char was_ok, was_nonfatal; > + char was_ok, was_nonfatal, was_rows_affected = 1; > + /* was_rows_affected is set to 0 iff an UPDATE or > DELETE affects > + * no rows. In this instance the driver should return > + * SQL_NO_DATA_FOUND instead of SQL_SUCCESS. > + */ > + > QResultClass *res = NULL; > Int2 oldstatus, > numcols; > @@ -1142,6 +1147,13 @@ > { > was_ok = QR_command_successful(res); > was_nonfatal = QR_command_nonfatal(res); > + if (res->command && > + (strncmp(res->command, "UPDATE", 6) == 0 || > + strncmp(res->command, "DELETE", 6) == 0) && > + strtoul(res->command + 7, NULL, 0) == 0) > + { > + was_rows_affected = 0; > + } > > if (was_ok) > SC_set_errornumber(self, STMT_OK); > @@ -1244,7 +1256,10 @@ > } > } > if (SC_get_errornumber(self) == STMT_OK) > - return SQL_SUCCESS; > + if (was_rows_affected) > + return SQL_SUCCESS; > + else > + return SQL_NO_DATA_FOUND; > else if (SC_get_errornumber(self) == STMT_INFO_ONLY) > return SQL_SUCCESS_WITH_INFO; > else > > -- > God said, "div D = rho, div B = 0, curl E = - @B/@t, curl H = > J + @D/@t," > and there was light. > http://tjw.hn.org/ http://www.locofungus.btinternet.co.uk/
В списке pgsql-odbc по дате отправления: