summaryrefslogtreecommitdiff
path: root/dev-db
diff options
context:
space:
mode:
authorMichael Orlitzky <mjo@gentoo.org>2017-08-19 10:24:40 -0400
committerMichael Orlitzky <mjo@gentoo.org>2017-08-19 10:24:56 -0400
commitbb260f1b282cd12d863daf8b2898733b35334b95 (patch)
tree7d6a1c37c0e572049c0321b8bbeca16157286962 /dev-db
parentdev-vcs/mercurial-server: remove unused patch. (diff)
downloadgentoo-bb260f1b282cd12d863daf8b2898733b35334b95.tar.gz
gentoo-bb260f1b282cd12d863daf8b2898733b35334b95.tar.bz2
gentoo-bb260f1b282cd12d863daf8b2898733b35334b95.zip
dev-db/pgagent: new revision adding more upstream patches.
There's a bug you can hit with pgAgent after an upgrade (like from postgres-9.5 to postgres-9.6) that causes your jobs to get stuck in a "Running" state. Since pgAgent thinks the job is running, it won't start the job again the next time it's scheduled, even though the job has actually completed successfully. To fix that issue, we apply four new patches that add recent improvements from upstream: * Fix a crash from DBconn:GetLastError(). * Save the stderr output in the jobstep log. * Add timestamps to the pgAgent logs. * And finally, fix the "job succeeded" check. The intermediate patches are not strictly necessary, but they are helpful, and most importantly, let us apply the upstream patches cleanly without having to re-roll them. Package-Manager: Portage-2.3.6, Repoman-2.3.1
Diffstat (limited to 'dev-db')
-rw-r--r--dev-db/pgagent/files/add-log-timestamps.patch535
-rw-r--r--dev-db/pgagent/files/fix-dbconn-getlasterror-crash.patch32
-rw-r--r--dev-db/pgagent/files/fix-job-success-test.patch30
-rw-r--r--dev-db/pgagent/files/save-stderr-jobstep-output.patch79
-rw-r--r--dev-db/pgagent/pgagent-3.4.0-r3.ebuild (renamed from dev-db/pgagent/pgagent-3.4.0-r2.ebuild)8
5 files changed, 683 insertions, 1 deletions
diff --git a/dev-db/pgagent/files/add-log-timestamps.patch b/dev-db/pgagent/files/add-log-timestamps.patch
new file mode 100644
index 000000000000..8d9eb4a3e8e2
--- /dev/null
+++ b/dev-db/pgagent/files/add-log-timestamps.patch
@@ -0,0 +1,535 @@
+From 2eef6cc4928c611cecdca3c1daecb60568deca4e Mon Sep 17 00:00:00 2001
+From: Sanket Mehta <sanket.mehta@enterprisedb.com>
+Date: Fri, 17 Jul 2015 09:07:09 +0100
+Subject: [PATCH] Add log timestamps and a --version option per Josh Berkus.
+ Update copyright notices while passing.
+
+---
+ CMakeLists.txt | 8 ++++----
+ LICENSE | 2 +-
+ cmake/MakeExt.cmake | 2 +-
+ connection.cpp | 2 +-
+ include/connection.h | 2 +-
+ include/job.h | 2 +-
+ include/misc.h | 3 ++-
+ include/pgAgent.h | 2 +-
+ job.cpp | 2 +-
+ misc.cpp | 14 +++++++++++++-
+ pgAgent.cpp | 2 +-
+ pgAgent.rc | 14 +++++++-------
+ pgaevent/CMakeLists.txt | 2 +-
+ pgaevent/pgaevent.c | 2 +-
+ pgaevent/pgaevent.def | 2 +-
+ pgaevent/pgamsgevent.h | 2 +-
+ pgaevent/pgamsgevent.rc | 14 +++++++-------
+ precomp.cpp | 2 +-
+ sql/pgagent--unpackaged--3.4.sql | 2 +-
+ sql/pgagent.sql | 2 +-
+ sql/pgagent_upgrade.sql | 2 +-
+ unix.cpp | 16 +++++++++++-----
+ win32.cpp | 5 ++++-
+ 23 files changed, 64 insertions(+), 42 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ab02fea..c8bfa4a 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ #######################################################################
+ #
+ # pgAgent - PostgreSQL tools
+-# Copyright (C) 2002 - 2014, The pgAdmin Development Team
++# Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ # This software is released under the PostgreSQL Licence
+ #
+ # CMakeLists.txt - CMake build configuration
+@@ -27,7 +27,6 @@ SET(CMAKE_FIND_LIBRARY_PREFIXES "")
+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
+
+ SET(STATIC_BUILD YES CACHE BOOL "Statically link the executable?")
+-
+ ################################################################################
+ # Apple stuff
+ ################################################################################
+@@ -61,12 +60,12 @@ PROJECT(pgagent)
+ # in pgagent.sql and upgrade_pgagent.sql if the major version number is
+ # changed. The full version number also needs to be included in pgAgent.rc and
+ # pgaevent/pgamsgevent.rc at present.
+-SET(VERSION 3.4.0)
++SET(VERSION "3.4.1")
+
+ # CPack stuff
+ SET(CPACK_PACKAGE_VERSION_MAJOR 3)
+ SET(CPACK_PACKAGE_VERSION_MINOR 4)
+-SET(CPACK_PACKAGE_VERSION_PATCH 0)
++SET(CPACK_PACKAGE_VERSION_PATCH 1)
+ SET(CPACK_PACKAGE_NAME "pgAgent")
+ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "pgAgent is a job scheduling engine for PostgreSQL")
+ SET(CPACK_PACKAGE_VENDOR "the pgAdmin Development Team")
+@@ -79,6 +78,7 @@ SET(CPACK_SOURCE_GENERATOR TGZ)
+ SET(CPACK_SOURCE_IGNORE_FILES "\\\\.DS_Store;/CVS/;/\\\\.svn/;\\\\.swp$;\\\\.#;/#;.*~;cscope.*")
+
+ ADD_DEFINITIONS(-DPGAGENT_VERSION_MAJOR=${CPACK_PACKAGE_VERSION_MAJOR})
++ADD_DEFINITIONS(-DPGAGENT_VERSION="${VERSION}")
+
+ # This must come after we set the CPACK variables!!
+ INCLUDE(CPack)
+diff --git a/LICENSE b/LICENSE
+index 3b2638a..c460d6f 100644
+--- a/LICENSE
++++ b/LICENSE
+@@ -1,6 +1,6 @@
+ pgAgent
+
+-Copyright (c) 2002 - 2014, The pgAdmin Development Team
++Copyright (c) 2002 - 2015, The pgAdmin Development Team
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without a written agreement is
+diff --git a/cmake/MakeExt.cmake b/cmake/MakeExt.cmake
+index 5777c97..ae30e30 100644
+--- a/cmake/MakeExt.cmake
++++ b/cmake/MakeExt.cmake
+@@ -1,7 +1,7 @@
+ #######################################################################
+ #
+ # pgAgent - PostgreSQL tools
+-# Copyright (C) 2002 - 2014, The pgAdmin Development Team
++# Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ # This software is released under the PostgreSQL Licence
+ #
+ # MakeExt,cmake - Create the PG Extension
+diff --git a/connection.cpp b/connection.cpp
+index f2213bd..25432bb 100644
+--- a/connection.cpp
++++ b/connection.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // connection.cpp - database connection
+diff --git a/include/connection.h b/include/connection.h
+index a201450..064067c 100644
+--- a/include/connection.h
++++ b/include/connection.h
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // connection.h - database connection
+diff --git a/include/job.h b/include/job.h
+index e511852..abc33d4 100644
+--- a/include/job.h
++++ b/include/job.h
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // job.h - agent job
+diff --git a/include/misc.h b/include/misc.h
+index 14b4edc..59847d1 100644
+--- a/include/misc.h
++++ b/include/misc.h
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // misc.h - misc functions
+@@ -18,6 +18,7 @@ void WaitAWhile(const bool waitLong = false);
+ void setOptions(int argc, char **argv, const wxString &executable);
+ wxString getArg(int &argc, char **&argv);
+ wxString NumToStr(const long l);
++void printVersion();
+
+ #endif // MISC_H
+
+diff --git a/include/pgAgent.h b/include/pgAgent.h
+index 6ef4944..059e0ca 100644
+--- a/include/pgAgent.h
++++ b/include/pgAgent.h
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgAgent.h - main include
+diff --git a/job.cpp b/job.cpp
+index c4b39ce..f3eaa03 100644
+--- a/job.cpp
++++ b/job.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014 The pgAdmin Development Team
++// Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // job.cpp - pgAgent job
+diff --git a/misc.cpp b/misc.cpp
+index dfd56a0..2252d83 100644
+--- a/misc.cpp
++++ b/misc.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014 The pgAdmin Development Team
++// Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // misc.cpp - misc functions
+@@ -16,6 +16,8 @@
+ #include <unistd.h>
+ #endif
+
++#define APPVERSION_STR wxT(PGAGENT_VERSION)
++
+ // In unix.c or win32.c
+ void usage(const wxString &executable);
+
+@@ -42,6 +44,11 @@ wxString getArg(int &argc, char **&argv)
+ return s;
+ }
+
++void printVersion()
++{
++ wxPrintf(_("PostgreSQL Scheduling Agent\n"));
++ wxPrintf(_("Version: %s\n"), APPVERSION_STR);
++}
+
+ void setOptions(int argc, char **argv, const wxString &executable)
+ {
+@@ -72,6 +79,11 @@ void setOptions(int argc, char **argv, const wxString &executable)
+ minLogLevel = val;
+ break;
+ }
++ case 'v':
++ {
++ printVersion();
++ exit (0);
++ }
+ #ifndef __WXMSW__
+ case 'f':
+ {
+diff --git a/pgAgent.cpp b/pgAgent.cpp
+index 5ed43fb..9238fa1 100644
+--- a/pgAgent.cpp
++++ b/pgAgent.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgAgent.cpp - pgAgent main entry
+diff --git a/pgAgent.rc b/pgAgent.rc
+index 3c51bfa..c4169e1 100644
+--- a/pgAgent.rc
++++ b/pgAgent.rc
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgAgent.rc - win32 Resources
+@@ -16,8 +16,8 @@ aaaPGAGENT ICON DISCARDABLE "include/pgAgent.ico"
+
+
+ VS_VERSION_INFO VERSIONINFO
+-FILEVERSION 3,4,0,0
+-PRODUCTVERSION 3,4,0,0
++FILEVERSION 3,4,1,0
++PRODUCTVERSION 3,4,1,0
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ BEGIN
+@@ -25,15 +25,15 @@ BEGIN
+ BEGIN
+ BLOCK "040904E4"
+ BEGIN
+- VALUE "FileVersion", "3.4.0", "\0"
+- VALUE "File Version", "3.4.0", "\0"
++ VALUE "FileVersion", "3.4.1", "\0"
++ VALUE "File Version", "3.4.1", "\0"
+ VALUE "FileDescription", "pgAgent - PostgreSQL Scheduling Agent", "\0"
+- VALUE "LegalCopyright", "\251 2002 - 2012, The pgAdmin Development Team", "\0"
++ VALUE "LegalCopyright", "\251 2002 - 2015, The pgAdmin Development Team", "\0"
+ VALUE "LegalTrademarks", "This software is released under the PostgreSQL Licence.", "\0"
+ VALUE "InternalName", "pgAgent", "\0"
+ VALUE "OriginalFilename","pgagent.exe", "\0"
+ VALUE "ProductName", "pgAgent", "\0"
+- VALUE "ProductVersion", "3.4.0", "\0"
++ VALUE "ProductVersion", "3.4.1", "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+diff --git a/pgaevent/CMakeLists.txt b/pgaevent/CMakeLists.txt
+index 10478c3..2fd6192 100644
+--- a/pgaevent/CMakeLists.txt
++++ b/pgaevent/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ #######################################################################
+ #
+ # pgAgent - PostgreSQL tools
+-# Copyright (C) 2002 - 2014, The pgAdmin Development Team
++# Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ # This software is released under the PostgreSQL Licence
+ #
+ # pgaevent/CMakeLists.txt - CMake build configuration
+diff --git a/pgaevent/pgaevent.c b/pgaevent/pgaevent.c
+index a66ed42..c9fac75 100644
+--- a/pgaevent/pgaevent.c
++++ b/pgaevent/pgaevent.c
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgaevent.c - win32 message format dll
+diff --git a/pgaevent/pgaevent.def b/pgaevent/pgaevent.def
+index c9e222d..34e03c1 100644
+--- a/pgaevent/pgaevent.def
++++ b/pgaevent/pgaevent.def
+@@ -2,7 +2,7 @@
+ ; //
+ ; // pgAgent - PostgreSQL Tools
+ ; //
+-; // Copyright (C) 2002 - 2014 The pgAdmin Development Team
++; // Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ ; // This software is released under the PostgreSQL Licence
+ ; //
+ ; // pgaeventdef - pgaevent.dll exports
+diff --git a/pgaevent/pgamsgevent.h b/pgaevent/pgamsgevent.h
+index b8e11a5..f589d60 100644
+--- a/pgaevent/pgamsgevent.h
++++ b/pgaevent/pgamsgevent.h
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgamsgevent.h - Message id declarations
+diff --git a/pgaevent/pgamsgevent.rc b/pgaevent/pgamsgevent.rc
+index 79e77aa..510ab65 100644
+--- a/pgaevent/pgamsgevent.rc
++++ b/pgaevent/pgamsgevent.rc
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgaevent.rc - win32 Resources
+@@ -19,8 +19,8 @@ aaaPGAEVENT ICON DISCARDABLE "../include/pgagent.ico"
+
+
+ VS_VERSION_INFO VERSIONINFO
+-FILEVERSION 3,4,0,0
+-PRODUCTVERSION 3,4,0,0
++FILEVERSION 3,4,1,0
++PRODUCTVERSION 3,4,1,0
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_APP
+ BEGIN
+@@ -28,15 +28,15 @@ BEGIN
+ BEGIN
+ BLOCK "040904E4"
+ BEGIN
+- VALUE "FileVersion", "3.4.0", "\0"
+- VALUE "File Version", "3.4.0", "\0"
++ VALUE "FileVersion", "3.4.1", "\0"
++ VALUE "File Version", "3.4.1", "\0"
+ VALUE "FileDescription", "pgaevent - pgAgent Event Log Message DLL", "\0"
+- VALUE "LegalCopyright", "\251 2002 - 2014, The pgAdmin Development Team", "\0"
++ VALUE "LegalCopyright", "\251 2002 - 2015, The pgAdmin Development Team", "\0"
+ VALUE "LegalTrademarks", "This software is released under the PostgreSQL Licence.", "\0"
+ VALUE "InternalName", "pgaevent", "\0"
+ VALUE "OriginalFilename","pgaevent.dll", "\0"
+ VALUE "ProductName", "pgAgent", "\0"
+- VALUE "ProductVersion", "3.4.0", "\0"
++ VALUE "ProductVersion", "3.4.1", "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+diff --git a/precomp.cpp b/precomp.cpp
+index 02c969f..56766bb 100644
+--- a/precomp.cpp
++++ b/precomp.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // precomp.cpp - pgAgent precompiled headers
+diff --git a/sql/pgagent--unpackaged--3.4.sql b/sql/pgagent--unpackaged--3.4.sql
+index 536640e..f5ffc63 100644
+--- a/sql/pgagent--unpackaged--3.4.sql
++++ b/sql/pgagent--unpackaged--3.4.sql
+@@ -1,7 +1,7 @@
+ /*
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014 The pgAdmin Development Team
++// Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgagent--unpackaged--3.4.sql - Convert pgAgent existing tables and functions to an extension
+diff --git a/sql/pgagent.sql b/sql/pgagent.sql
+index 3708adf..1118833 100644
+--- a/sql/pgagent.sql
++++ b/sql/pgagent.sql
+@@ -1,7 +1,7 @@
+ /*
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014 The pgAdmin Development Team
++// Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgagent.sql - pgAgent tables and functions
+diff --git a/sql/pgagent_upgrade.sql b/sql/pgagent_upgrade.sql
+index ae0d995..c256c93 100644
+--- a/sql/pgagent_upgrade.sql
++++ b/sql/pgagent_upgrade.sql
+@@ -1,7 +1,7 @@
+ /*
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014 The pgAdmin Development Team
++// Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // pgagent_upgrade.sql - Upgrade pgAgent tables and functions
+diff --git a/unix.cpp b/unix.cpp
+index 34ad0f6..e206408 100644
+--- a/unix.cpp
++++ b/unix.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014, The pgAdmin Development Team
++// Copyright (C) 2002 - 2015, The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // unix.cpp - pgAgent unix specific functions
+@@ -17,14 +17,17 @@
+ #include <wx/filename.h>
+ #include <wx/ffile.h>
+ #include <fcntl.h>
++void printVersion();
+
+ void usage(const wxString &executable)
+ {
+ wxFileName *fn = new wxFileName(executable);
++ printVersion();
+
+ wxPrintf(_("Usage:\n"));
+ wxPrintf(fn->GetName() + _(" [options] <connect-string>\n"));
+ wxPrintf(_("options:\n"));
++ wxPrintf(_("-v (display version info and then exit)\n"));
+ wxPrintf(_("-f run in the foreground (do not detach from the terminal)\n"));
+ wxPrintf(_("-t <poll time interval in seconds (default 10)>\n"));
+ wxPrintf(_("-r <retry period after connection abort in seconds (>=10, default 30)>\n"));
+@@ -50,22 +53,25 @@ void LogMessage(wxString msg, int level)
+ return;
+ }
+
++ wxDateTime logTime = wxDateTime::Now();
++ wxString logTimeString = logTime.Format() + wxT(" : ");
++
+ switch (level)
+ {
+ case LOG_DEBUG:
+ if (minLogLevel >= LOG_DEBUG)
+- file.Write(_("DEBUG: ") + msg + wxT("\n"));
++ file.Write(logTimeString + _("DEBUG: ") + msg + wxT("\n"));
+ break;
+ case LOG_WARNING:
+ if (minLogLevel >= LOG_WARNING)
+- file.Write(_("WARNING: ") + msg + wxT("\n"));
++ file.Write(logTimeString + _("WARNING: ") + msg + wxT("\n"));
+ break;
+ case LOG_ERROR:
+- file.Write(_("ERROR: ") + msg + wxT("\n"));
++ file.Write(logTimeString + _("ERROR: ") + msg + wxT("\n"));
+ exit(1);
+ break;
+ case LOG_STARTUP:
+- file.Write(_("WARNING: ") + msg + wxT("\n"));
++ file.Write(logTimeString + _("WARNING: ") + msg + wxT("\n"));
+ break;
+ }
+
+diff --git a/win32.cpp b/win32.cpp
+index aa5d5d7..624ae77 100644
+--- a/win32.cpp
++++ b/win32.cpp
+@@ -2,7 +2,7 @@
+ //
+ // pgAgent - PostgreSQL Tools
+ //
+-// Copyright (C) 2002 - 2014 The pgAdmin Development Team
++// Copyright (C) 2002 - 2015 The pgAdmin Development Team
+ // This software is released under the PostgreSQL Licence
+ //
+ // win32.cpp - pgAgent win32 specific functions
+@@ -36,6 +36,7 @@ static HANDLE serviceSync;
+ static HANDLE eventHandle;
+
+ bool stopService();
++void printVersion();
+
+ // This will be called from MainLoop, if pgagent is initialized properly
+ void Initialized()
+@@ -435,12 +436,14 @@ bool removeService(const wxString &serviceName)
+ void usage(const wxString &executable)
+ {
+ wxFileName *fn = new wxFileName(executable);
++ printVersion();
+
+ wxPrintf(_("Usage:\n"));
+ wxPrintf(fn->GetName() + _(" REMOVE <serviceName>\n"));
+ wxPrintf(fn->GetName() + _(" INSTALL <serviceName> [options] <connect-string>\n"));
+ wxPrintf(fn->GetName() + _(" DEBUG [options] <connect-string>\n"));
+ wxPrintf(_("options:\n"));
++ wxPrintf(_("-v (display version info and then exit)\n"));
+ wxPrintf(_("-u <user or DOMAIN\\user>\n"));
+ wxPrintf(_("-p <password>\n"));
+ wxPrintf(_("-d <displayname>\n"));
diff --git a/dev-db/pgagent/files/fix-dbconn-getlasterror-crash.patch b/dev-db/pgagent/files/fix-dbconn-getlasterror-crash.patch
new file mode 100644
index 000000000000..633a359b6765
--- /dev/null
+++ b/dev-db/pgagent/files/fix-dbconn-getlasterror-crash.patch
@@ -0,0 +1,32 @@
+From f9bf1ccb27ebcfce00e7a6d467bc0e1b5ee9555e Mon Sep 17 00:00:00 2001
+From: Ashesh Vashi <ashesh.vashi@enterprisedb.com>
+Date: Wed, 1 Apr 2015 15:24:11 +0530
+Subject: [PATCH] Fixed a bug in DBconn::GetLastError() function.
+
+pgAgent was crashing, while removing the trailing new-lines from the
+empty error message string (Reported by: Thomas Krennwallner)
+---
+ connection.cpp | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/connection.cpp b/connection.cpp
+index b7623e6..f2213bd 100644
+--- a/connection.cpp
++++ b/connection.cpp
+@@ -313,15 +313,7 @@ int DBconn::ExecuteVoid(const wxString &query)
+
+ wxString DBconn::GetLastError()
+ {
+- // Return the last error message, minus any trailing line ends
+- if (lastError.substr(lastError.length() - 2, 2) == wxT("\r\n")) // DOS
+- return lastError.substr(0, lastError.length() - 2);
+- else if (lastError.substr(lastError.length() - 1, 1) == wxT("\n")) // Unix
+- return lastError.substr(0, lastError.length() - 1);
+- else if (lastError.substr(lastError.length() - 1, 1) == wxT("\r")) // Mac
+- return lastError.substr(0, lastError.length() - 1);
+- else
+- return lastError;
++ return lastError.Trim(true);
+ }
+
+ ///////////////////////////////////////////////////////7
diff --git a/dev-db/pgagent/files/fix-job-success-test.patch b/dev-db/pgagent/files/fix-job-success-test.patch
new file mode 100644
index 000000000000..cd5495a52aa9
--- /dev/null
+++ b/dev-db/pgagent/files/fix-job-success-test.patch
@@ -0,0 +1,30 @@
+From 01b72d867cc2bdbaff1765499a6395f7bc94e2be Mon Sep 17 00:00:00 2001
+From: Sanket Mehta <sanket.mehta@enterprisedb.com>
+Date: Tue, 1 Dec 2015 11:34:32 +0530
+Subject: [PATCH] Set 'succeeded' flag to true/false by checking for the step
+ failure everytime (it gets executed).
+
+These was an issue with the current implementation.
+
+Once the 'succeeded' flag is set to true, the following batch step
+execution does not stop executiong of following steps on failure, even
+we have set 'onerror' to 'f' for that step.
+---
+ job.cpp | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/job.cpp b/job.cpp
+index f3eaa03..9864f57 100644
+--- a/job.cpp
++++ b/job.cpp
+@@ -307,9 +307,7 @@ int Job::Execute()
+
+ // set success status for batch runs, be pessimistic by default
+ LogMessage(wxString::Format(_("Script return code: %d"), rc), LOG_DEBUG);
+- if (rc == 0)
+- succeeded = true;
+-
++ succeeded = ((rc == 0) ? true : false);
+ // If output is empty then either script did not return any output
+ // or script threw some error into stderr.
+ // Check script threw some error into stderr
diff --git a/dev-db/pgagent/files/save-stderr-jobstep-output.patch b/dev-db/pgagent/files/save-stderr-jobstep-output.patch
new file mode 100644
index 000000000000..245dbe2764ea
--- /dev/null
+++ b/dev-db/pgagent/files/save-stderr-jobstep-output.patch
@@ -0,0 +1,79 @@
+From 5d2e0d3500a8e144215cdfe10b52cf7415b58046 Mon Sep 17 00:00:00 2001
+From: Ashesh Vashi <ashesh.vashi@enterprisedb.com>
+Date: Mon, 25 May 2015 12:37:42 +0530
+Subject: [PATCH] Save the standarad error too along with the standard output
+ in the jobstep output for the batch jobs.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+[Worked on by: Mehmet Emin KARAKAŞ, Akshay Joshi]
+[Reviewed and improvised by: Sanket Joshi, Ashesh Vashi]
+---
+ job.cpp | 37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+diff --git a/job.cpp b/job.cpp
+index 00334ab..c4b39ce 100644
+--- a/job.cpp
++++ b/job.cpp
+@@ -186,8 +186,10 @@ int Job::Execute()
+
+ #ifdef __WIN32__
+ wxString filename = dirname + wxT("\\") + jobid + wxT("_") + stepid + wxT(".bat");
++ wxString errorFile = dirname + wxT("\\") + jobid + wxT("_") + stepid + wxT("_error.txt");
+ #else
+ wxString filename = dirname + wxT("/") + jobid + wxT("_") + stepid + wxT(".scr");
++ wxString errorFile = dirname + wxT("/") + jobid + wxT("_") + stepid + wxT("_error.txt");
+ #endif
+
+ // Write the script
+@@ -233,6 +235,10 @@ int Job::Execute()
+ file->Close();
+ LogMessage(wxString::Format(_("Executing script file: %s"), filename.c_str()), LOG_DEBUG);
+
++ // freopen function is used to redirect output of stream (stderr in our case)
++ // into the specified file.
++ FILE *fpError = freopen(errorFile.mb_str(), "w", stderr);
++
+ // Execute the file and capture the output
+ #ifdef __WIN32__
+ // The Windows way
+@@ -304,6 +310,37 @@ int Job::Execute()
+ if (rc == 0)
+ succeeded = true;
+
++ // If output is empty then either script did not return any output
++ // or script threw some error into stderr.
++ // Check script threw some error into stderr
++ if (fpError)
++ {
++ //fclose(fpError);
++ FILE* fpErr = fopen(errorFile.mb_str(), "r");
++ if (fpErr)
++ {
++ char buffer[4098];
++ wxString errorMsg = wxEmptyString;
++ while (!feof(fpErr))
++ {
++ if (fgets(buffer, 4096, fpErr) != NULL)
++ errorMsg += wxString(buffer, wxConvLibc);
++ }
++
++ if (errorMsg != wxEmptyString) {
++ wxString errmsg =
++ wxString::Format(
++ _("Script Error: \n%s\n"),
++ errorMsg.c_str());
++ LogMessage(errmsg, LOG_WARNING);
++ output += wxT("\n") + errmsg;
++ }
++
++ fclose(fpErr);
++ }
++ wxRemoveFile(errorFile);
++ }
++
+ // Delete the file/directory. If we fail, don't overwrite the script output in the log, just throw warnings.
+ if (!wxRemoveFile(filename))
+ {
diff --git a/dev-db/pgagent/pgagent-3.4.0-r2.ebuild b/dev-db/pgagent/pgagent-3.4.0-r3.ebuild
index e71c4b87d440..3426a5d6bec8 100644
--- a/dev-db/pgagent/pgagent-3.4.0-r2.ebuild
+++ b/dev-db/pgagent/pgagent-3.4.0-r3.ebuild
@@ -24,7 +24,13 @@ DEPEND="${RDEPEND}"
S="${WORKDIR}/${MY_PN}-${PV}-Source"
-PATCHES=( "${FILESDIR}/postgres-10-build-fix.patch" )
+PATCHES=(
+ "${FILESDIR}/fix-dbconn-getlasterror-crash.patch"
+ "${FILESDIR}/save-stderr-jobstep-output.patch"
+ "${FILESDIR}/add-log-timestamps.patch"
+ "${FILESDIR}/fix-job-success-test.patch"
+ "${FILESDIR}/postgres-10-build-fix.patch"
+)
src_prepare() {
default