Index: pgagent.sql =================================================================== RCS file: /projects/pgagent/pgagent.sql,v retrieving revision 1.3 retrieving revision 1.4 diff -Lpgagent.sql -Lpgagent.sql -u -w -r1.3 -r1.4 --- pgagent.sql +++ pgagent.sql @@ -8,45 +8,45 @@ // */ -CREATE SCHEMA pgadmin; -COMMENT ON SCHEMA pgadmin IS 'pgAdmin/pgAgent system tables'; +CREATE SCHEMA pgagent; +COMMENT ON SCHEMA pgagent IS 'pgAgent system tables'; -CREATE TABLE pgadmin.pga_jobagent ( +CREATE TABLE pgagent.pga_jobagent ( jagpid int4 NOT NULL PRIMARY KEY, logintime timestamptz NOT NULL DEFAULT current_timestamp, station text NOT NULL ) WITHOUT OIDS; -COMMENT ON TABLE pgadmin.pga_jobagent IS 'active job agents'; +COMMENT ON TABLE pgagent.pga_jobagent IS 'active job agents'; -CREATE TABLE pgadmin.pga_jobclass ( +CREATE TABLE pgagent.pga_jobclass ( jclid serial NOT NULL PRIMARY KEY, jclname text NOT NULL ) WITHOUT OIDS; -CREATE UNIQUE INDEX pga_jobclass_name ON pgadmin.pga_jobclass(jclname); -COMMENT ON TABLE pgadmin.pga_jobclass IS 'Job classification'; +CREATE UNIQUE INDEX pga_jobclass_name ON pgagent.pga_jobclass(jclname); +COMMENT ON TABLE pgagent.pga_jobclass IS 'Job classification'; -CREATE TABLE pgadmin.pga_job ( +CREATE TABLE pgagent.pga_job ( jobid serial NOT NULL PRIMARY KEY, -jobjclid int4 NOT NULL REFERENCES pgadmin.pga_jobclass (jclid) ON DELETE RESTRICT ON UPDATE RESTRICT, +jobjclid int4 NOT NULL REFERENCES pgagent.pga_jobclass (jclid) ON DELETE RESTRICT ON UPDATE RESTRICT, jobname text NOT NULL, jobdesc text NOT NULL DEFAULT '', jobenabled bool NOT NULL DEFAULT true, jobcreated timestamptz NOT NULL DEFAULT current_timestamp, jobchanged timestamptz NOT NULL DEFAULT current_timestamp, -jobagentid int4 NULL REFERENCES pgadmin.pga_jobagent(jagpid) ON DELETE SET NULL ON UPDATE RESTRICT, +jobagentid int4 NULL REFERENCES pgagent.pga_jobagent(jagpid) ON DELETE SET NULL ON UPDATE RESTRICT, jobnextrun timestamptz NULL, joblastrun timestamptz NULL ) WITHOUT OIDS; -COMMENT ON TABLE pgadmin.pga_job IS 'Job main entry'; -COMMENT ON COLUMN pgadmin.pga_job.jobagentid IS 'Agent that currently executes this job.'; +COMMENT ON TABLE pgagent.pga_job IS 'Job main entry'; +COMMENT ON COLUMN pgagent.pga_job.jobagentid IS 'Agent that currently executes this job.'; -CREATE TABLE pgadmin.pga_jobstep ( +CREATE TABLE pgagent.pga_jobstep ( jstid serial NOT NULL PRIMARY KEY, -jstjobid int4 NOT NULL REFERENCES pgadmin.pga_job (jobid) ON DELETE CASCADE ON UPDATE RESTRICT, +jstjobid int4 NOT NULL REFERENCES pgagent.pga_job (jobid) ON DELETE CASCADE ON UPDATE RESTRICT, jstname text NOT NULL, jstdesc text NOT NULL DEFAULT '', jstenabled bool NOT NULL DEFAULT true, @@ -56,16 +56,16 @@ jstonerror char NOT NULL CHECK (jstonerror IN ('f', 's', 'i')) DEFAULT 'f', -- fail, success, ignore jscnextrun timestamptz NULL ) WITHOUT OIDS; -CREATE INDEX pga_jobstep_jobid ON pgadmin.pga_jobstep(jstjobid); -COMMENT ON TABLE pgadmin.pga_jobstep IS 'Job step to be executed'; -COMMENT ON COLUMN pgadmin.pga_jobstep.jstkind IS 'Kind of jobstep: s=sql, b=batch'; -COMMENT ON COLUMN pgadmin.pga_jobstep.jstonerror IS 'What to do if step returns an error: f=fail the job, s=mark step as succeeded and continue, i=mark as fail but ignore it and proceed'; +CREATE INDEX pga_jobstep_jobid ON pgagent.pga_jobstep(jstjobid); +COMMENT ON TABLE pgagent.pga_jobstep IS 'Job step to be executed'; +COMMENT ON COLUMN pgagent.pga_jobstep.jstkind IS 'Kind of jobstep: s=sql, b=batch'; +COMMENT ON COLUMN pgagent.pga_jobstep.jstonerror IS 'What to do if step returns an error: f=fail the job, s=mark step as succeeded and continue, i=mark as fail but ignore it and proceed'; -CREATE TABLE pgadmin.pga_schedule ( +CREATE TABLE pgagent.pga_schedule ( jscid serial NOT NULL PRIMARY KEY, -jscjobid int4 NOT NULL REFERENCES pgadmin.pga_job (jobid) ON DELETE CASCADE ON UPDATE RESTRICT, +jscjobid int4 NOT NULL REFERENCES pgagent.pga_job (jobid) ON DELETE CASCADE ON UPDATE RESTRICT, jscname text NOT NULL, jscdesc text NOT NULL DEFAULT '', jscenabled bool NOT NULL DEFAULT true, @@ -75,30 +75,30 @@ jscsched timestamptz NULL, jsclist interval[] NOT NULL ) WITHOUT OIDS; -CREATE INDEX pga_jobschedule_jobid ON pgadmin.pga_schedule(jscjobid); -COMMENT ON TABLE pgadmin.pga_schedule IS 'Schedule for a job'; -COMMENT ON COLUMN pgadmin.pga_schedule.jsckind IS 'Kind of schedule: normal periodical (jsclist has one entry), single, daily, weekly, monthly, yearly (jsclist contains list of intervals in period)'; +CREATE INDEX pga_jobschedule_jobid ON pgagent.pga_schedule(jscjobid); +COMMENT ON TABLE pgagent.pga_schedule IS 'Schedule for a job'; +COMMENT ON COLUMN pgagent.pga_schedule.jsckind IS 'Kind of schedule: normal periodical (jsclist has one entry), single, daily, weekly, monthly, yearly (jsclist contains list of intervals in period)'; -CREATE TABLE pgadmin.pga_jobprotocol ( +CREATE TABLE pgagent.pga_jobprotocol ( jprid serial NOT NULL PRIMARY KEY, -jprjobid int4 NOT NULL REFERENCES pgadmin.pga_job (jobid) ON DELETE CASCADE ON UPDATE RESTRICT, +jprjobid int4 NOT NULL REFERENCES pgagent.pga_job (jobid) ON DELETE CASCADE ON UPDATE RESTRICT, jprstatus char NOT NULL CHECK (jprstatus IN ('r', 's', 'f', 'i', 'd')) DEFAULT 'r', -- running, success, failed, internal failure, died jprstart timestamptz NOT NULL DEFAULT current_timestamp, jprduration interval NULL ) WITHOUT OIDS; -CREATE INDEX pga_jobprotocol_jobid ON pgadmin.pga_jobprotocol(jprjobid); -COMMENT ON TABLE pgadmin.pga_jobprotocol IS 'Protocol of a job that was run.'; -COMMENT ON COLUMN pgadmin.pga_jobprotocol.jprstatus IS 'Status of job: r=running, s=successfully finished, f=failed'; +CREATE INDEX pga_jobprotocol_jobid ON pgagent.pga_jobprotocol(jprjobid); +COMMENT ON TABLE pgagent.pga_jobprotocol IS 'Protocol of a job that was run.'; +COMMENT ON COLUMN pgagent.pga_jobprotocol.jprstatus IS 'Status of job: r=running, s=successfully finished, f=failed'; -CREATE TABLE pgadmin.pga_jobprotocolstep ( +CREATE TABLE pgagent.pga_jobprotocolstep ( jpeid serial NOT NULL PRIMARY KEY, -jpejprid int4 NOT NULL REFERENCES pgadmin.pga_jobprotocol (jprid) ON DELETE CASCADE ON UPDATE RESTRICT, +jpejprid int4 NOT NULL REFERENCES pgagent.pga_jobprotocol (jprid) ON DELETE CASCADE ON UPDATE RESTRICT, jpedbname name NOT NULL, jpecode text NOT NULL, jpestatus char NOT NULL CHECK (jpestatus IN ('r', 's', 'i', 'f')) DEFAULT 'r', -- running, success, ignored, failed @@ -106,14 +106,14 @@ jpestarted timestamptz NOT NULL DEFAULT current_timestamp, jpeduration interval NULL ) WITHOUT OIDS; -CREATE INDEX pga_jobprotocolstep_jprid ON pgadmin.pga_jobprotocolstep(jpejprid); -COMMENT ON TABLE pgadmin.pga_jobprotocolstep IS 'Protocol of a single step in a job that was run.'; -COMMENT ON COLUMN pgadmin.pga_jobprotocolstep.jpestatus IS 'Status of job step: r=running, s=successfully finished, f=failed stopping job, i=ignored failure'; -COMMENT ON COLUMN pgadmin.pga_jobprotocolstep.jperesult IS 'Return code of job step'; +CREATE INDEX pga_jobprotocolstep_jprid ON pgagent.pga_jobprotocolstep(jpejprid); +COMMENT ON TABLE pgagent.pga_jobprotocolstep IS 'Protocol of a single step in a job that was run.'; +COMMENT ON COLUMN pgagent.pga_jobprotocolstep.jpestatus IS 'Status of job step: r=running, s=successfully finished, f=failed stopping job, i=ignored failure'; +COMMENT ON COLUMN pgagent.pga_jobprotocolstep.jperesult IS 'Return code of job step'; -CREATE OR REPLACE FUNCTION pgadmin.pga_next_schedule(timestamptz, timestamptz, timestamptz, char, interval[]) returns timestamptz as +CREATE OR REPLACE FUNCTION pgagent.pga_next_schedule(timestamptz, timestamptz, timestamptz, char, interval[]) returns timestamptz as ' DECLARE jscstart ALIAS FOR $1; @@ -166,7 +166,7 @@ nextrun := nextrun + jsclist[1] + period; END IF; ELSE - RAISE EXCEPTION ''pgadmin.pga_next_schedule: unknown schedule kind''; + RAISE EXCEPTION ''pgagent.pga_next_schedule: unknown schedule kind''; END IF; RETURN nextrun; END; @@ -175,13 +175,13 @@ -CREATE OR REPLACE FUNCTION pgadmin.pga_job_trigger() RETURNS trigger AS ' +CREATE OR REPLACE FUNCTION pgagent.pga_job_trigger() RETURNS trigger AS ' BEGIN IF NEW.jobenabled THEN IF NEW.jobnextrun IS NULL THEN SELECT INTO NEW.jobnextrun - MIN(pgadmin.pga_next_schedule(jscstart, jscend, jscsched, jsckind, jsclist)) - FROM pgadmin.pga_schedule + MIN(pgagent.pga_next_schedule(jscstart, jscend, jscsched, jsckind, jsclist)) + FROM pgagent.pga_schedule WHERE jscenabled AND jscjobid=OLD.jobid; END IF; ELSE @@ -193,11 +193,11 @@ CREATE TRIGGER pga_job_trigger BEFORE UPDATE - ON pgadmin.pga_job FOR EACH ROW - EXECUTE PROCEDURE pgadmin.pga_job_trigger(); + ON pgagent.pga_job FOR EACH ROW + EXECUTE PROCEDURE pgagent.pga_job_trigger(); -CREATE OR REPLACE FUNCTION pgadmin.pga_schedule_trigger() RETURNS trigger AS ' +CREATE OR REPLACE FUNCTION pgagent.pga_schedule_trigger() RETURNS trigger AS ' BEGIN IF TG_OP = ''DELETE'' THEN -- update pga_job from remaining schedules @@ -218,22 +218,22 @@ CREATE TRIGGER pga_schedule_trigger AFTER INSERT OR UPDATE OR DELETE - ON pgadmin.pga_schedule FOR EACH ROW - EXECUTE PROCEDURE pgadmin.pga_schedule_trigger(); + ON pgagent.pga_schedule FOR EACH ROW + EXECUTE PROCEDURE pgagent.pga_schedule_trigger(); /* -delete from pgadmin.pga_jobclass; +delete from pgagent.pga_jobclass; -insert into pgadmin.pga_jobclass (jclname) values ('misc'); +insert into pgagent.pga_jobclass (jclname) values ('misc'); - delete from pgadmin.pga_schedule; - select * from pgadmin.pga_Schedule; + delete from pgagent.pga_schedule; + select * from pgagent.pga_Schedule; - insert into pgadmin.pga_schedule(jscjoboid,jscname, jscdesc, jscenabled, jscstart, jscsched, jsclist) + insert into pgagent.pga_schedule(jscjoboid,jscname, jscdesc, jscenabled, jscstart, jscsched, jsclist) values (xxxxx, '10min', 'arbitrary 10min cycle', true, '2002-01-01', '2002-01-01', ARRAY['10 min'::interval] ); --- update pgadmin.pga_schedule set jscenabled=jscenabled +-- update pgagent.pga_schedule set jscenabled=jscenabled */ Index: pgAgent.cpp =================================================================== RCS file: /projects/pgagent/src/pgAgent.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -Lsrc/pgAgent.cpp -Lsrc/pgAgent.cpp -u -w -r1.3 -r1.4 --- src/pgAgent.cpp +++ src/pgAgent.cpp @@ -11,6 +11,12 @@ #include "pgAgent.h" +#ifdef WIN32 +#include +#else +#include +#endif + string connectString; string serviceDBname; long longWait=30; @@ -31,10 +37,10 @@ rc=serviceConn->ExecuteVoid("DELETE FROM pga_tmp_zombies"); rc = serviceConn->ExecuteVoid( - "INSERT INTO pga_tmp_zombies (jagpid)\n" - "SELECT jagpid\n" - " FROM pgadmin.pga_jobagent AG\n" - " LEFT JOIN pg_stat_activity PA ON jagpid=procpid\n" + "INSERT INTO pga_tmp_zombies (jagpid) " + "SELECT jagpid " + " FROM pgagent.pga_jobagent AG " + " LEFT JOIN pg_stat_activity PA ON jagpid=procpid " " WHERE procpid IS NULL" ); @@ -43,17 +49,17 @@ // There are orphaned agent entries // mark the jobs as aborted rc=serviceConn->ExecuteVoid( - "UPDATE pgadmin.pga_jobprotocol SET jprstatus='d'\n" - " FROM pga_tmp_zombies Z\n" - " JOIN pgadmin.pga_job J ON jobagentid=jagpid\n" - " JOIN pgadmin.pga_jobprotocol PR ON jprjobid=J.jobid\n" + "UPDATE pgagent.pga_jobprotocol SET jprstatus='d' " + " FROM pga_tmp_zombies Z " + " JOIN pgagent.pga_job J ON jobagentid=jagpid " + " JOIN pgagent.pga_jobprotocol PR ON jprjobid=J.jobid " " WHERE PR.jprstatus='r';\n" - "UPDATE pgadmin.pga_job SET jobagentid=NULL, jobnextrun=NULL\n" - " FROM pga_tmp_zombies Z\n" - " JOIN pgadmin.pga_job J ON jobagentid=jagpid;\n" + "UPDATE pgagent.pga_job SET jobagentid=NULL, jobnextrun=NULL " + " FROM pga_tmp_zombies Z " + " JOIN pgagent.pga_job J ON jobagentid=jagpid;\n" - "DELETE FROM pgadmin.pga_jobagent\n" + "DELETE FROM pgagent.pga_jobagent " " WHERE jagpid IN (SELECT jagpid FROM pga_tmp_zombies);\n" ); } @@ -61,8 +67,11 @@ // TODO - station should be the hostname, not '' (?) + char hostname[255]; + gethostname(hostname, 255); + rc=serviceConn->ExecuteVoid( - "INSERT INTO pgadmin.pga_jobagent (jagpid, station) SELECT pg_backend_pid(), ''"); + "INSERT INTO pgagent.pga_jobagent (jagpid, station) SELECT pg_backend_pid(), '" + string(hostname) + "'"); if (rc < 0) return rc; @@ -71,10 +80,10 @@ bool foundJobToExecute=false; DBresult *res=serviceConn->Execute( - "SELECT J.jobid\n" - " FROM pgadmin.pga_job J\n" - " WHERE jobenabled AND jobagentid IS NULL\n" - " AND jobnextrun <= now()\n" + "SELECT J.jobid " + " FROM pgagent.pga_job J " + " WHERE jobenabled AND jobagentid IS NULL " + " AND jobnextrun <= now() " " ORDER BY jobnextrun"); if (res) Index: pgAgent.dsp =================================================================== RCS file: /projects/pgagent/src/pgAgent.dsp,v retrieving revision 1.4 retrieving revision 1.5 diff -Lsrc/pgAgent.dsp -Lsrc/pgAgent.dsp -u -w -r1.4 -r1.5 --- src/pgAgent.dsp +++ src/pgAgent.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Application" 0x0101 -CFG=pgAgent - Win32 Debug +CFG=pgAgent - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,11 +13,12 @@ !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "pgAgent.mak" CFG="pgAgent - Win32 Debug" +!MESSAGE NMAKE /f "pgAgent.mak" CFG="pgAgent - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "pgAgent - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE "pgAgent - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE # Begin Project @@ -27,6 +28,9 @@ CPP=cl.exe MTL=midl.exe RSC=rc.exe + +!IF "$(CFG)" == "pgAgent - Win32 Debug" + # PROP BASE Use_MFC 1 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" @@ -39,7 +43,7 @@ # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "include" /I "c:/program files/postgresql/8.0/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_MT" /Yu"pgAgent.h" /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "include" /I "c:/program files/postgresql/8.0/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_MT" /FR /Yu"pgAgent.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x407 /d "_DEBUG" # ADD RSC /l 0x407 /d "_DEBUG" @@ -50,9 +54,40 @@ # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib advapi32.lib user32.lib gdi32.lib wsock32.lib libpq.lib msvcrtd.lib oldnames.lib libcpmtd.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib /pdbtype:sept /libpath:"c:/program files/postgresql/8.0/lib/ms" # SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "pgAgent - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "pgAgent___Win32_Release" +# PROP BASE Intermediate_Dir "pgAgent___Win32_Release" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "include" /I "c:/program files/postgresql/8.0/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_MT" /Yu"pgAgent.h" /FD /GZ /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "include" /I "c:/program files/postgresql/8.0/include" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_MT" /FR /Yu"pgAgent.h" /FD /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x809 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib advapi32.lib user32.lib gdi32.lib wsock32.lib libpq.lib msvcrtd.lib oldnames.lib libcpmtd.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib /pdbtype:sept /libpath:"c:/program files/postgresql/8.0/lib/ms" +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 wsock32.lib libpq.lib msvcrt.lib oldnames.lib libcpmt.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /nodefaultlib /pdbtype:sept /libpath:"c:/program files/postgresql/8.0/lib/ms" +# SUBTRACT LINK32 /pdb:none /debug + +!ENDIF + # Begin Target # Name "pgAgent - Win32 Debug" +# Name "pgAgent - Win32 Release" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" Index: job.cpp =================================================================== RCS file: /projects/pgagent/src/job.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -Lsrc/job.cpp -Lsrc/job.cpp -u -w -r1.3 -r1.4 --- src/job.cpp +++ src/job.cpp @@ -20,19 +20,19 @@ status=""; int rc=serviceConn->ExecuteVoid( - "UPDATE pgadmin.pga_job SET jobagentid=pg_backend_pid(), joblastrun=now()\n" + "UPDATE pgagent.pga_job SET jobagentid=pg_backend_pid(), joblastrun=now() " " WHERE jobagentid IS NULL AND jobid=" + jobid); if (rc == 1) { DBresult *id=serviceConn->Execute( - "SELECT nextval('pga_jobprotocol_jprid_seq') AS id"); + "SELECT nextval('pgagent.pga_jobprotocol_jprid_seq') AS id"); if (id) { prtid=id->GetString("id"); DBresult *res=serviceConn->Execute( - "INSERT INTO pgadmin.pga_jobprotocol(jprid, jprjobid, jprstatus) " + "INSERT INTO pgagent.pga_jobprotocol(jprid, jprjobid, jprstatus) " "VALUES (" + prtid + ", " + jobid + ", 'r')"); if (res) { @@ -50,12 +50,12 @@ if (status != "") { int rc=serviceConn->ExecuteVoid( - "UPDATE pgadmin.pga_jobprotocol\n" - " SET jprstatus='" + status + "', jprduration=now() - jprstart\n" + "UPDATE pgagent.pga_jobprotocol " + " SET jprstatus='" + status + "', jprduration=now() - jprstart " " WHERE jprid=" + prtid + ";\n" - "UPDATE pgadmin.pga_job\n" - " SET jobagentid=NULL, jobnextrun=NULL\n" + "UPDATE pgagent.pga_job " + " SET jobagentid=NULL, jobnextrun=NULL " " WHERE jobid=" + jobid ); } @@ -66,10 +66,10 @@ { int rc; DBresult *steps=serviceConn->Execute( - "SELECT jstid, jstkind, jstdbname, jstcode, jstonerror\n" - " FROM pgadmin.pga_jobstep\n" - " WHERE jstenabled\n" - " AND jstjobid=" + jobid + "\n" + "SELECT jstid, jstkind, jstdbname, jstcode, jstonerror " + " FROM pgagent.pga_jobstep " + " WHERE jstenabled " + " AND jstjobid=" + jobid + " ORDER BY jstid, jstdbname"); if (!steps) @@ -89,9 +89,9 @@ { jpsid=id->GetString("id"); DBresult *res=serviceConn->Execute( - "INSERT INTO pgadmin.pga_jobprotocolstep(jpeid, jpejprid, jpedbname, jpecode)\n" - "SELECT " + jpsid + ", " + prtid + ", '" + steps->GetString("jstdbname") + "', jstcode\n" - " FROM pgadmin.pga_jobstep WHERE jstid=" + steps->GetString("jstid")); + "INSERT INTO pgagent.pga_jobprotocolstep(jpeid, jpejprid, jpedbname, jpecode) " + "SELECT " + jpsid + ", " + prtid + ", '" + steps->GetString("jstdbname") + "', jstcode " + " FROM pgagent.pga_jobstep WHERE jstid=" + steps->GetString("jstid")); if (res) { @@ -140,9 +140,9 @@ stepstatus = steps->GetString("jstonerror"); rc=serviceConn->ExecuteVoid( - "UPDATE pgadmin.pga_jobprotocolstep\n" - " SET jpeduration = now() - jpestarted,\n" - " jperesult = " + NumToStr(rc) + ", jpestatus = '" + stepstatus + "'\n" + "UPDATE pgagent.pga_jobprotocolstep " + " SET jpeduration = now() - jpestarted, " + " jperesult = " + NumToStr(rc) + ", jpestatus = '" + stepstatus + "' " " WHERE jpeid=" + jpsid); if (rc != 1 || stepstatus == "f") { Index: misc.h =================================================================== RCS file: /projects/pgagent/src/include/misc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -Lsrc/include/misc.h -Lsrc/include/misc.h -u -w -r1.1 -r1.2 --- src/include/misc.h +++ src/include/misc.h @@ -9,9 +9,15 @@ // ////////////////////////////////////////////////////////////////////////// + +#ifndef MISC_H +#define MISC_H + void fatal(const string &description); void WaitAWhile(const bool waitLong=false); void setOptions(int argc, char **argv); string getArg(int &argc, char** &argv); string NumToStr(const long l); + +#endif // MISC_H \ No newline at end of file Index: job.h =================================================================== RCS file: /projects/pgagent/src/include/job.h,v retrieving revision 1.2 retrieving revision 1.3 diff -Lsrc/include/job.h -Lsrc/include/job.h -u -w -r1.2 -r1.3 --- src/include/job.h +++ src/include/job.h @@ -10,6 +10,8 @@ ////////////////////////////////////////////////////////////////////////// +#ifndef JOB_H +#define JOB_H class Job { @@ -25,3 +27,5 @@ string jobid, prtid; string status; }; \ No newline at end of file + +#endif // JOB_H \ No newline at end of file Index: connection.h =================================================================== RCS file: /projects/pgagent/src/include/connection.h,v retrieving revision 1.2 retrieving revision 1.3 diff -Lsrc/include/connection.h -Lsrc/include/connection.h -u -w -r1.2 -r1.3 --- src/include/connection.h +++ src/include/connection.h @@ -9,6 +9,10 @@ // ////////////////////////////////////////////////////////////////////////// + +#ifndef CONNECTION_H +#define CONNECTION_H + #include class DBresult; @@ -75,3 +79,5 @@ friend class DBconn; }; + +#endif // CONNECTION_H \ No newline at end of file Index: copyright.h =================================================================== RCS file: /projects/pgagent/src/include/copyright.h,v retrieving revision 1.1 retrieving revision 1.2 diff -Lsrc/include/copyright.h -Lsrc/include/copyright.h -u -w -r1.1 -r1.2 --- src/include/copyright.h +++ src/include/copyright.h @@ -10,6 +10,8 @@ ////////////////////////////////////////////////////////////////////////// +#ifndef COPYRIGHT_H +#define COPYRIGHT_H // Application Name #define APPNAME_L wxT("pgAgent") @@ -19,3 +21,4 @@ #define COPYRIGHT_WIN32 "\251 2003 The pgAdmin Development Team" #define LICENSE _("This software is released under the Artistic License.") +#endif //COPYRIGHT_H Index: pgAgent.h =================================================================== RCS file: /projects/pgagent/src/include/pgAgent.h,v retrieving revision 1.1 retrieving revision 1.2 diff -Lsrc/include/pgAgent.h -Lsrc/include/pgAgent.h -u -w -r1.1 -r1.2 --- src/include/pgAgent.h +++ src/include/pgAgent.h @@ -10,6 +10,9 @@ ////////////////////////////////////////////////////////////////////////// +#ifndef PGAGENT_H +#define PGAGENT_H + #include #include #include @@ -31,3 +34,5 @@ void MainLoop(); + +#endif PGAGENT_H \ No newline at end of file Index: version.h =================================================================== RCS file: /projects/pgagent/src/include/version.h,v retrieving revision 1.1 retrieving revision 1.2 diff -Lsrc/include/version.h -Lsrc/include/version.h -u -w -r1.1 -r1.2 --- src/include/version.h +++ src/include/version.h @@ -9,6 +9,8 @@ // ////////////////////////////////////////////////////////////////////////// +#ifndef VERSION_H +#define VERSION_H // Application Versions #define VERSION_STR wxT("0.1.0 Devel") @@ -36,3 +38,5 @@ #endif #define VERSION_WITH_DATE wxT("Version ") VERSION_STR wxT(" (") __TDATE__ wxT(")") #define VERSION_WITHOUT_DATE wxT("Version ") VERSION_STR + +#endif // VERSION_H