swt2c / rpms / pgadmin3

Forked from rpms/pgadmin3 5 years ago
Clone
Blob Blame History Raw
diff -rupN pgadmin3-1.22.2/pgadmin/db/pgConn.cpp pgadmin3-1.22.2-new/pgadmin/db/pgConn.cpp
--- pgadmin3-1.22.2/pgadmin/db/pgConn.cpp	2016-02-08 11:19:40.000000000 +0100
+++ pgadmin3-1.22.2-new/pgadmin/db/pgConn.cpp	2018-09-05 11:42:04.513774682 +0200
@@ -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 -rupN pgadmin3-1.22.2/pgadmin/include/db/pgConn.h pgadmin3-1.22.2-new/pgadmin/include/db/pgConn.h
--- pgadmin3-1.22.2/pgadmin/include/db/pgConn.h	2016-02-16 17:58:40.000000000 +0100
+++ pgadmin3-1.22.2-new/pgadmin/include/db/pgConn.h	2018-09-05 11:40:04.167781338 +0200
@@ -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;