Index: CHANGELOG.txt
===================================================================
RCS file: /projects/pgadmin3/CHANGELOG.txt,v
retrieving revision 1.125
retrieving revision 1.126
diff -LCHANGELOG.txt -LCHANGELOG.txt -u -w -r1.125 -r1.126
--- CHANGELOG.txt
+++ CHANGELOG.txt
@@ -16,6 +16,8 @@
+ - 2004-08-18 AP set PGPASSWORD environment for backup/restore
+
- 2004-08-18 AP fix ACL for quoted user/group names
- 2004-08-15 AP buglet cleanups
- 2004-08-11 AP restore wizard
- 2004-08-11 AP rework of ctlComboBox
Index: pgServer.cpp
===================================================================
RCS file: /projects/pgadmin3/src/schema/pgServer.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -Lsrc/schema/pgServer.cpp -Lsrc/schema/pgServer.cpp -u -w -r1.49 -r1.50
--- src/schema/pgServer.cpp
+++ src/schema/pgServer.cpp
@@ -20,6 +20,7 @@
#include "pgServer.h"
#include "pgObject.h"
#include "pgCollection.h"
+#include "pgfeatures.h"
pgServer::pgServer(const wxString& newName, const wxString& newDescription, const wxString& newDatabase, const wxString& newUsername, int newPort, bool _trusted, int _ssl)
@@ -292,11 +293,18 @@
if (conn->BackendMinimumVersion(7, 3))
{
connected = true;
- pgSet *set=ExecuteSet(wxT("SELECT usecreatedb, usesuper from pg_user where usename=current_user"));
+
+ wxString sql = wxT("SELECT usecreatedb, usesuper");
+ if (conn->HasFeature(FEATURE_POSTMASTER_STARTTIME))
+ sql += wxT(", CASE WHEN usesuper THEN pg_postmaster_starttime() ELSE NULL END as upsince");
+
+ pgSet *set=ExecuteSet(sql + wxT("\n FROM pg_user WHERE usename=current_user"));
if (set)
{
iSetCreatePrivilege(set->GetBool(wxT("usecreatedb")));
iSetSuperUser(set->GetBool(wxT("usesuper")));
+ if (conn->HasFeature(FEATURE_POSTMASTER_STARTTIME))
+ iSetUpSince(set->GetDateTime(wxT("upsince")));
delete set;
}
}
@@ -485,6 +493,8 @@
properties->AppendItem(_("Last system OID"), GetLastSystemOID());
}
properties->AppendItem(_("Connected?"), GetConnected());
+ if (GetUpSince().IsValid())
+ properties->AppendItem(_("Up since"), GetUpSince());
if (GetServerControllable())
properties->AppendItem(_("Running?"), GetServerRunning());
}
Index: pgfeatures.h
===================================================================
RCS file: /projects/pgadmin3/src/include/pgfeatures.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lsrc/include/pgfeatures.h -Lsrc/include/pgfeatures.h -u -w -r1.2 -r1.3
--- src/include/pgfeatures.h
+++ src/include/pgfeatures.h
@@ -15,5 +15,7 @@
FEATURE_SIZE,
FEATURE_FILEREAD,
FEATURE_ROTATELOG,
+ FEATURE_POSTMASTER_STARTTIME,
+ FEATURE_TERMINATE_BACKEND,
FEATURE_LAST
};
Index: pgServer.h
===================================================================
RCS file: /projects/pgadmin3/src/include/pgServer.h,v
retrieving revision 1.39
retrieving revision 1.40
diff -Lsrc/include/pgServer.h -Lsrc/include/pgServer.h -u -w -r1.39 -r1.40
--- src/include/pgServer.h
+++ src/include/pgServer.h
@@ -83,6 +83,8 @@
void iSetTrusted(const bool b) { trusted=b; }
void iSetNeedPwd(const bool b) { trusted=!b; }
bool SetPassword(const wxString& newVal);
+ wxDateTime GetUpSince() { return upSince; }
+ void iSetUpSince(const wxDateTime &d) { upSince = d; }
bool HasPrivilege(const wxString &objTyp, const wxString &objName, const wxString &priv) { return conn->HasPrivilege(objTyp, objName, priv); }
bool ExecuteVoid(const wxString& sql) { return conn->ExecuteVoid(sql); }
@@ -105,6 +107,7 @@
bool connected;
wxString database, username, password, ver, error;
wxString lastDatabase, lastSchema, description, serviceId;
+ wxDateTime upSince;
int port, ssl;
bool trusted, discovered, createPrivilege, superUser;
OID lastSystemOID;
Index: frmStatus.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/frmStatus.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -Lsrc/ui/frmStatus.cpp -Lsrc/ui/frmStatus.cpp -u -w -r1.39 -r1.40
--- src/ui/frmStatus.cpp
+++ src/ui/frmStatus.cpp
@@ -821,6 +821,7 @@
if(statusList->GetSelectedItemCount() >= 0)
{
btnCancelSt->Enable(true);
+ if (connection->HasFeature(FEATURE_TERMINATE_BACKEND))
btnTerminateSt->Enable(true);
}
else
@@ -838,6 +839,7 @@
if(lockList->GetSelectedItemCount() >= 0)
{
btnCancelLk->Enable(true);
+ if (connection->HasFeature(FEATURE_TERMINATE_BACKEND))
btnTerminateLk->Enable(true);
}
else
Index: pgConn.cpp
===================================================================
RCS file: /projects/pgadmin3/src/db/pgConn.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -Lsrc/db/pgConn.cpp -Lsrc/db/pgConn.cpp -u -w -r1.53 -r1.54
--- src/db/pgConn.cpp
+++ src/db/pgConn.cpp
@@ -456,6 +456,18 @@
wxT(" WHERE proname = 'pg_rotate_log'")
wxT( " AND pronargs = 0"))
.IsEmpty();
+ features[FEATURE_POSTMASTER_STARTTIME] =
+ !ExecuteScalar(
+ wxT("SELECT proname FROM pg_proc\n")
+ wxT(" WHERE proname = 'pg_postmaster_starttime'")
+ wxT( " AND pronargs = 0"))
+ .IsEmpty();
+ features[FEATURE_TERMINATE_BACKEND] =
+ !ExecuteScalar(
+ wxT("SELECT proname FROM pg_proc\n")
+ wxT(" WHERE proname = 'pg_terminate_backend'")
+ wxT( " AND pronargs = 1"))
+ .IsEmpty();
}
if (featureNo < 1 ||featureNo >= FEATURE_LAST)