Propsed pgagent patch: pgAgent reports failure upon success - For Review

Поиск
Список
Период
Сортировка
От Martin French
Тема Propsed pgagent patch: pgAgent reports failure upon success - For Review
Дата
Msg-id OF1A71C687.E0A5A19F-ON80257A3D.004B2F8F-80257A3D.004BB29F@LocalDomain
обсуждение исходный текст
Ответы Re: Propsed pgagent patch: pgAgent reports failure upon success - For Review  (Dave Page <dpage@pgadmin.org>)
Список pgadmin-hackers
<p><tt><font size="2">Hi, </font></tt><br /><br /><tt><font size="2">I have attempted a patch for an issue where
pgAgentincorrectly reports failure on a plain SQL job. Please see below.</font></tt><br /><br /><tt><font
size="2">Feedback/commentswelcome.</font></tt><br /><br /><tt><font size="2">Thanks</font></tt><br /><br /><tt><font
size="2">MartinFrench.</font></tt><br /><br /><br /><tt><font size="2">diff --git a/connection.cpp b/connection.cpp<br
/>index5e10078..6103c00 100644<br />--- a/connection.cpp<br />+++ b/connection.cpp<br />@@ -336,6 +336,7 @@
DBresult::DBresult(DBconn*conn, const wxString &query)<br /> if (result)<br /> {<br /> int rc =
PQresultStatus(result);<br/>+ conn->SetLastResult(rc);<br /> if (rc == PGRES_TUPLES_OK)<br /> maxRows =
PQntuples(result);<br/> else if (rc != PGRES_COMMAND_OK)<br />diff --git a/include/connection.h
b/include/connection.h<br/>index 04087db..3cd1c0d 100644<br />--- a/include/connection.h<br />+++
b/include/connection.h<br/>@@ -51,7 +51,33 @@ public:<br /> {<br /> return conn != 0;<br /> }<br />-<br />+        bool
LastCommandOk()<br/>+        {<br />+                return IsCommandOk((ExecStatusType)lastResult);<br />+        }<br
/>+       bool IsCommandOk(ExecStatusType ret)<br />+        {<br />+                switch (ret)<br />+              
 {<br/>+                        case PGRES_COMMAND_OK:<br />+                        case PGRES_TUPLES_OK:<br />+      
                case PGRES_COPY_OUT:<br />+                        case PGRES_COPY_IN:<br />+                      
 casePGRES_COPY_BOTH:<br />+                                return true;<br />+                        default:<br />+
                              return false;<br />+                };<br />+        }<br />+        void
SetLastResult(intres)<br />+        {<br />+                lastResult = res;<br />+        }<br />+        int
GetLastResult()<br/>+        {<br />+                return lastResult;<br />+        }<br />+ <br /> DBresult
*Execute(constwxString &query);<br /> wxString ExecuteScalar(const wxString &query);<br /> int
ExecuteVoid(constwxString &query);<br />@@ -70,7 +96,7 @@ protected:<br /> PGconn *conn;<br /> DBconn *next,
*prev;<br/> bool inUse;<br />-<br />+ int lastResult;<br /> friend class DBresult;<br /><br /> };<br />diff --git
a/job.cppb/job.cpp<br />index 9a5bb08..ba270be 100644<br />--- a/job.cpp<br />+++ b/job.cpp<br />@@ -80,6 +80,7 @@
Job::~Job()<br/> int Job::Execute()<br /> {<br /> int rc = 0;<br />+ bool succeeded = false;<br /> DBresult *steps =
threadConn->Execute(<br/>                       wxT("SELECT * ")<br />                       wxT("  FROM
pgagent.pga_jobstep")<br />@@ -138,13 +139,14 @@ int Job::Execute()<br /> {<br />
LogMessage(wxString::Format(_("ExecutingSQL step %s (part of job %s)"), stepid.c_str(), jobid.c_str()), LOG_DEBUG);<br
/>rc = stepConn->ExecuteVoid(steps->GetString(wxT("jstcode")));<br />+ succeeded =
stepConn->LastCommandOk();<br/> output = stepConn->GetLastError();<br /> stepConn->Return();<br /> }<br />
else<br/> {<br /> output = _("Couldn't get a connection to the database!");<br />- rc = -1;<br />+ succeeded =
false;<br/> }<br /><br /><br />@@ -292,6 +294,9 @@ int Job::Execute()<br /> rc = WEXITSTATUS(rc);<br /> else<br /> rc =
-1;<br/>+ // set success status for batch runs, be pessimistic bt default<br />+ if (rc == 0)<br />+ succeeded =
true;<br/> #endif<br /><br /> // Delete the file/directory. If we fail, don't overwrite the script output in the log,
justthrow warnings.<br />@@ -319,7 +324,7 @@ int Job::Execute()<br /> }<br /><br /> wxString stepstatus;<br />- if (rc
==0)<br />+ if (succeeded)<br /> stepstatus = wxT("s");<br /> else<br /> stepstatus =
steps->GetString(wxT("jstonerror"));<br/></font></tt><font
face="sans-serif">=============================================Romax Technology Limited Rutherford House Nottingham
Science& Technology Park Nottingham, NG7 2PZ England Telephone numbers: +44 (0)115 951 88 00 (main) For other
officelocations see: http://www.romaxtech.com/Contact ================================= =============== E-mail:
info@romaxtech.comWebsite: www.romaxtech.com ================================= ================ Confidentiality
StatementThis transmission is for the addressee only and contains information that is confidential and privileged.
Unlessyou are the named addressee, or authorised to receive it on behalf of the addressee you may not copy or use it,
ordisclose it to anyone else. If you have received this transmission in error please delete from your system and
contactthe sender. Thank you for your cooperation. =================================================</font> 

В списке pgadmin-hackers по дате отправления:

Предыдущее
От: Akshay Joshi
Дата:
Сообщение: Fixed pgAdmin3 folder hierarchy
Следующее
От: Dave Page
Дата:
Сообщение: Re: Propsed pgagent patch: pgAgent reports failure upon success - For Review