diff -up ./pgadmin/db/pgConn.cpp.nullthis ./pgadmin/db/pgConn.cpp
--- ./pgadmin/db/pgConn.cpp.nullthis 2016-02-08 05:19:40.000000000 -0500
+++ ./pgadmin/db/pgConn.cpp 2017-02-19 03:11:04.318716963 -0500
@@ -407,21 +407,20 @@ bool pgConn::GetIsEdb()
{
// to retrieve edb flag
BackendMinimumVersion(0, 0);
- return isEdb;
+ return BackendMinimumVersion(0, 0) && isEdb;
}
bool pgConn::GetIsGreenplum()
{
// to retrieve Greenplum flag
BackendMinimumVersion(0, 0);
- return isGreenplum;
-}
+ return BackendMinimumVersion(0, 0) && isGreenplum;}
bool pgConn::GetIsHawq()
{
// to retrieve Greenplum HAWQ flag
BackendMinimumVersion(0, 0);
- return isHawq;
+ return BackendMinimumVersion(0, 0) && isHawq;
}
wxString pgConn::SystemNamespaceRestriction(const wxString &nsp)
@@ -475,6 +474,9 @@ bool pgConn::IsSuperuser()
bool pgConn::BackendMinimumVersion(int major, int minor)
{
+ if (GetStatus() != PGCONN_OK)
+ return false;
+
if (!majorVersion)
{
wxString version = GetVersionString();
@@ -503,8 +505,8 @@ bool pgConn::BackendMinimumVersion(int m
// releases are not coordinated with PostgreSQL minor releases.
bool pgConn::BackendMinimumVersion(int major, int minor, int patch)
{
- if (!majorVersion)
- BackendMinimumVersion(0, 0);
+ if (!BackendMinimumVersion(major, minor))
+ return false; // false if non connected
return majorVersion > major || (majorVersion == major && minorVersion > minor) || (majorVersion == major && minorVersion == minor && patchVersion >= patch);
}
@@ -648,6 +650,11 @@ void pgConn::ExamineLibpqVersion()
}
}
+int pgConn::GetPort() const
+{
+ return conn ? atoi(PQport(conn)) : 0;
+}
+
wxString pgConn::GetName() const
{
wxString str;
@@ -1003,15 +1010,15 @@ bool pgConn::IsAlive()
}
-int pgConn::GetStatus() const
+int pgConn::GetStatus(const pgConn *p)
{
- if (!this)
+ if (!p)
return PGCONN_BAD;
- if (conn)
- ((pgConn *)this)->connStatus = PQstatus(conn);
+ if (p->conn) // FIXME: casting away const !
+ ((pgConn *)p)->connStatus = PQstatus(p->conn);
- return connStatus;
+ return p->connStatus;
}
diff -up ./pgadmin/include/db/pgConn.h.nullthis ./pgadmin/include/db/pgConn.h
--- ./pgadmin/include/db/pgConn.h.nullthis 2016-02-16 11:58:40.000000000 -0500
+++ ./pgadmin/include/db/pgConn.h 2017-02-19 03:03:25.631214015 -0500
@@ -194,10 +194,7 @@ public:
{
return utfConnectString;
}
- int GetPort() const
- {
- return conn ? atoi(PQport(conn)) : 0;
- };
+ int GetPort() const;
wxString GetTTY() const
{
return conn ? wxString(PQtty(conn), *conv) : wxT("");
@@ -215,7 +212,11 @@ public:
{
return conn ? PQbackendPID(conn) : 0;
}
- int GetStatus() const;
+ static int GetStatus(const pgConn *);
+ int GetStatus() const
+ {
+ return GetStatus(this);
+ }
int GetLastResultStatus() const
{
return lastResultStatus;