Hello Hackers,

Attached you can find the patch that skip some tests and correct issues on
SQL that are failing when trying to connect to a GreenPlum database.

We did this by adding a attribute to to test_json called "db_type" that
will carry the type of database we are running tests against.

When we run tests against a GreenPlum instance the configuration would look
like this:

{
  "name": "GreenPlum",
  "comment": "GreenPlum DB",
  "db_username": "gp",
  "host": "localhost",
  "db_password": "",
  "db_port": 5433,
  "maintenance_db": "postgres",
  "sslmode": "prefer",
  "tablespace_path": "",
  "enabled": true,
  "db_type": "gpdb"
}




Thanks
Joao
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
index 81f072f1..de8f9799 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
@@ -20,6 +20,7 @@ from . import utils as cast_utils
 
 
 class CastsAddTestCase(BaseTestGenerator):
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for cast node.
         ('Check Cast Node', dict(url='/browser/cast/obj/'))
@@ -27,6 +28,7 @@ class CastsAddTestCase(BaseTestGenerator):
 
     def runTest(self):
         """ This function will add cast under test database. """
+        super(CastsAddTestCase, self).runTest()
         self.server_data = parent_node_dict["database"][-1]
         self.server_id = self.server_data["server_id"]
         self.db_id = self.server_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
index 46e2a013..b956fcbc 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
@@ -19,12 +19,14 @@ from . import utils as cast_utils
 
 class CastsDeleteTestCase(BaseTestGenerator):
     """ This class will delete the cast node added under database node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for cast node.
         ('Check Cast Node', dict(url='/browser/cast/obj/'))
     ]
 
     def setUp(self):
+        super(CastsDeleteTestCase, self).setUp()
         self.default_db = self.server["db"]
         self.database_info = parent_node_dict['database'][-1]
         self.db_name = self.database_info['db_name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
index 329162eb..d67f55ae 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
@@ -19,6 +19,7 @@ from . import utils as cast_utils
 
 class CastsGetTestCase(BaseTestGenerator):
     """ This class will fetch the cast node added under database node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for cast node.
         ('Check Cast Node', dict(url='/browser/cast/obj/'))
@@ -26,6 +27,7 @@ class CastsGetTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create cast."""
+        super(CastsGetTestCase, self).setUp()
         self.default_db = self.server["db"]
         self.database_info = parent_node_dict['database'][-1]
         self.db_name = self.database_info['db_name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py
index f3e43ae9..99485095 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py
@@ -21,6 +21,7 @@ from . import utils as cast_utils
 
 class CastsPutTestCase(BaseTestGenerator):
     """ This class will fetch the cast node added under database node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for cast node.
         ('Check Cast Node', dict(url='/browser/cast/obj/'))
@@ -28,6 +29,7 @@ class CastsPutTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create cast."""
+        super(CastsPutTestCase, self).setUp()
         self.default_db = self.server["db"]
         self.database_info = parent_node_dict['database'][-1]
         self.db_name = self.database_info['db_name']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py
index 96bf6343..f4398d55 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py
@@ -20,6 +20,7 @@ from . import utils as extension_utils
 
 
 class ExtensionsAddTestCase(BaseTestGenerator):
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for extension node.
         ('Check Extension Node', dict(url='/browser/extension/obj/'))
@@ -27,6 +28,7 @@ class ExtensionsAddTestCase(BaseTestGenerator):
 
     def runTest(self):
         """ This function will add extension under test schema. """
+        super(ExtensionsAddTestCase, self).runTest()
         self.schema_data = parent_node_dict["schema"][-1]
         self.server_id = self.schema_data["server_id"]
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py
index 5c06cc0a..a1644a59 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py
@@ -18,6 +18,7 @@ from . import utils as extension_utils
 
 
 class ExtensionsDeleteTestCase(BaseTestGenerator):
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for extension node.
         ('Check Extension Node', dict(url='/browser/extension/obj/'))
@@ -25,6 +26,7 @@ class ExtensionsDeleteTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension."""
+        super(ExtensionsDeleteTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py
index 1faba846..2401f1ed 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py
@@ -18,6 +18,7 @@ from . import utils as extension_utils
 
 
 class ExtensionsGetTestCase(BaseTestGenerator):
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for extension node.
         ('Check Extension Node', dict(url='/browser/extension/obj/'))
@@ -25,6 +26,7 @@ class ExtensionsGetTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension."""
+        super(ExtensionsGetTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py
index fba73cf3..39598982 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py
@@ -20,6 +20,7 @@ from . import utils as extension_utils
 
 
 class ExtensionsPutTestCase(BaseTestGenerator):
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for extension node.
         ('Check Extension Node', dict(url='/browser/extension/obj/'))
@@ -27,6 +28,7 @@ class ExtensionsPutTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension."""
+        super(ExtensionsPutTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py
index 89d33495..abed9d0c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py
@@ -27,6 +27,7 @@ class ForeignServerAddTestCase(BaseTestGenerator):
     """
     This class will add foreign server under database node.
     """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for foreign server node.
         ('Check FSRV Node', dict(url='/browser/foreign_server/obj/'))
@@ -34,6 +35,7 @@ class ForeignServerAddTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(ForeignServerAddTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py
index 7d68150f..4e5c70ed 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py
@@ -25,6 +25,7 @@ from . import utils as fsrv_utils
 
 class ForeignServerDeleteTestCase(BaseTestGenerator):
     """This class will add foreign server under FDW node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for foreign server node.
         ('Check FSRV Node', dict(url='/browser/foreign_server/obj/'))
@@ -32,6 +33,7 @@ class ForeignServerDeleteTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(ForeignServerDeleteTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py
index baae85d9..c2fcffbb 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py
@@ -25,6 +25,7 @@ from . import utils as fsrv_utils
 
 class ForeignServerGetTestCase(BaseTestGenerator):
     """This class will add foreign server under FDW node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for foreign server node.
         ('Check FSRV Node', dict(url='/browser/foreign_server/obj/'))
@@ -32,6 +33,7 @@ class ForeignServerGetTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(ForeignServerGetTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py
index 2ca73a42..77c5ce25 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py
@@ -26,6 +26,7 @@ from . import utils as fsrv_utils
 
 class ForeignServerPutTestCase(BaseTestGenerator):
     """This class will add foreign server under FDW node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for foreign server node.
         ('Check FSRV Node', dict(url='/browser/foreign_server/obj/'))
@@ -33,6 +34,7 @@ class ForeignServerPutTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(ForeignServerPutTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py
index 1d86e2e4..fc5af27e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py
@@ -27,6 +27,7 @@ from regression.python_test_utils import test_utils as utils
 
 class UserMappingAddTestCase(BaseTestGenerator):
     """This class will add user mapping under foreign server node."""
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for user mapping node.
@@ -35,6 +36,7 @@ class UserMappingAddTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(UserMappingAddTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py
index 5e657905..a75d6e83 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py
@@ -27,6 +27,7 @@ from . import utils as um_utils
 
 class UserMappingDeleteTestCase(BaseTestGenerator):
     """This class will delete user mapping under foreign server node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for user mapping node.
         ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
@@ -34,6 +35,7 @@ class UserMappingDeleteTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(UserMappingDeleteTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py
index aa5e9c64..5e4e78c1 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py
@@ -27,6 +27,7 @@ from . import utils as um_utils
 
 class UserMappingGetTestCase(BaseTestGenerator):
     """This class will add user mapping under foreign server node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for user mapping node.
         ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
@@ -34,6 +35,7 @@ class UserMappingGetTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(UserMappingGetTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py
index bbba7272..025b571a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py
@@ -28,6 +28,7 @@ from . import utils as um_utils
 
 class UserMappingPutTestCase(BaseTestGenerator):
     """This class will update user mapping under foreign server node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for user mapping node.
         ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
@@ -35,6 +36,7 @@ class UserMappingPutTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(UserMappingPutTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_add.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_add.py
index 2900172b..3686da4b 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_add.py
@@ -21,6 +21,8 @@ from . import utils as fdw_utils
 
 class FDWDAddTestCase(BaseTestGenerator):
     """ This class will add foreign data wrappers under database node. """
+    skip_on_database = ['gpdb']
+
     scenarios = [
         # Fetching default URL for foreign_data_wrapper node.
         ('Check FDW Node',
@@ -29,6 +31,8 @@ class FDWDAddTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension."""
+        super(FDWDAddTestCase, self).setUp()
+
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_delete.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_delete.py
index 8fe7df05..73fa07ed 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_delete.py
@@ -21,12 +21,14 @@ from . import utils as fdw_utils
 
 class FDWDDeleteTestCase(BaseTestGenerator):
     """This class will delete foreign data wrappers under test database."""
+    skip_on_database = ['gpdb']
     scenarios = [  # Fetching default URL for foreign_data_wrapper node.
         ('Check FDW Node',
          dict(url='/browser/foreign_data_wrapper/obj/'))]
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(FDWDDeleteTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_get.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_get.py
index 225600e0..80a8ed14 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_get.py
@@ -21,6 +21,7 @@ from . import utils as fdw_utils
 
 class FDWDGetTestCase(BaseTestGenerator):
     """ This class will add foreign data wrappers under test database. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for foreign_data_wrapper node.
         ('Check FDW Node',
@@ -29,6 +30,7 @@ class FDWDGetTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(FDWDGetTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_put.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_put.py
index 518b3971..cec0264b 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_fdw_put.py
@@ -22,6 +22,8 @@ from . import utils as fdw_utils
 
 class FDWDPutTestCase(BaseTestGenerator):
     """This class will update foreign data wrappers under test database."""
+    skip_on_database = ['gpdb']
+
     scenarios = [
         # Fetching default URL for foreign_data_wrapper node.
         ('Check FDW Node',
@@ -30,6 +32,7 @@ class FDWDPutTestCase(BaseTestGenerator):
 
     def setUp(self):
         """ This function will create extension and foreign data wrapper."""
+        super(FDWDPutTestCase, self).setUp()
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
         self.db_id = self.schema_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py
index 4c6f9c00..8fd6779d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py
@@ -21,11 +21,13 @@ from . import utils as language_utils
 
 
 class LanguagesAddTestCase(BaseTestGenerator):
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Language add test case', dict(url='/browser/language/obj/'))
     ]
 
     def setUp(self):
+        super(LanguagesAddTestCase, self).setUp()
         self.server_data = parent_node_dict["database"][-1]
         self.server_id = self.server_data["server_id"]
         self.db_id = self.server_data['db_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
index 220f4715..3c2a931f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
@@ -21,12 +21,14 @@ from regression.python_test_utils import test_utils as utils
 
 class CollationAddTestCase(BaseTestGenerator):
     """ This class will add new collation under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for collation node.
         ('Default Node URL', dict(url='/browser/collation/obj/'))
     ]
 
     def setUp(self):
+        super(CollationAddTestCase, self).setUp()
         self.database_info = parent_node_dict["database"][-1]
         self.db_name = self.database_info["db_name"]
         # Change the db name, so that schema will create in newly created db
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.py
index e934338f..add8d56a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.py
@@ -21,12 +21,14 @@ from . import utils as collation_utils
 
 class CollationDeleteTestCase(BaseTestGenerator):
     """ This class will delete added collation under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for collation node.
         ('Fetch collation Node URL', dict(url='/browser/collation/obj/'))
     ]
 
     def setUp(self):
+        super(CollationDeleteTestCase, self).setUp()
         self.schema_info = parent_node_dict["schema"][-1]
         self.schema_name = self.schema_info["schema_name"]
         self.db_name = parent_node_dict["database"][-1]["db_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py
index 5ae684ac..9a5eb207 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py
@@ -21,12 +21,14 @@ from . import utils as collation_utils
 
 class CollationGetTestCase(BaseTestGenerator):
     """ This class will fetch new collation under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for collation node.
         ('Fetch collation Node URL', dict(url='/browser/collation/obj/'))
     ]
 
     def setUp(self):
+        super(CollationGetTestCase, self).setUp()
         self.schema_info = parent_node_dict["schema"][-1]
         self.schema_name = self.schema_info["schema_name"]
         self.db_name = parent_node_dict["database"][-1]["db_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py
index 0cf47988..4c7ae775 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py
@@ -22,12 +22,14 @@ from . import utils as collation_utils
 
 class CollationPutTestCase(BaseTestGenerator):
     """ This class will update added collation under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for collation node.
         ('Fetch collation Node URL', dict(url='/browser/collation/obj/'))
     ]
 
     def setUp(self):
+        super(CollationPutTestCase, self).setUp()
         self.schema_info = parent_node_dict["schema"][-1]
         self.schema_name = self.schema_info["schema_name"]
         self.db_name = parent_node_dict["database"][-1]["db_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/gpdb_5.0_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/gpdb_5.0_plus/properties.sql
new file mode 100644
index 00000000..3fc97b94
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/gpdb_5.0_plus/properties.sql
@@ -0,0 +1,25 @@
+SELECT
+    d.oid, d.typname as name, d.typbasetype, format_type(b.oid,NULL) as basetype,
+    pg_get_userbyid(d.typowner) as owner,
+    NULL AS colloid, format_type(b.oid, d.typtypmod) AS fulltype,
+    '' AS collname,
+    d.typtypmod, d.typnotnull, d.typdefault, d.typndims, d.typdelim, bn.nspname as basensp,
+    description, (SELECT COUNT(1) FROM pg_type t2 WHERE t2.typname=d.typname) > 1 AS domisdup,
+    (SELECT COUNT(1) FROM pg_type t3 WHERE t3.typname=b.typname) > 1 AS baseisdup,
+    ARRAY [] :: TEXT []         AS seclabels
+
+FROM
+    pg_type d
+JOIN
+    pg_type b ON b.oid = d.typbasetype
+JOIN
+    pg_namespace bn ON bn.oid=d.typnamespace
+LEFT OUTER JOIN
+    pg_description des ON (des.objoid=d.oid AND des.classoid='pg_type'::regclass)
+WHERE
+    d.typnamespace = {{scid}}::oid
+    {% if doid %}
+    AND d.oid={{doid}}::oid
+    {% endif %}
+ORDER BY
+    d.typname;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py
index c803538b..fb7e66cb 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py
@@ -51,7 +51,6 @@ class DomainAddTestCase(BaseTestGenerator):
         data = {
             "basensp": schema_name,
             "basetype": "character",
-            "collname": "pg_catalog.\"POSIX\"",
             "constraints": [{
                 "conname": "num",
                 "convalidated": True
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/utils.py
index a50bc0e3..acf7598b 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/utils.py
@@ -38,7 +38,7 @@ def create_domain(server, db_name, schema_name, schema_id, domain_name):
                                              server['port'])
         pg_cursor = connection.cursor()
         query = 'CREATE DOMAIN ' + schema_name + '.' + domain_name + \
-                ' AS character(10) COLLATE pg_catalog."POSIX" DEFAULT 1'
+                ' AS character(10) DEFAULT 1'
         pg_cursor.execute(query)
         connection.commit()
         # Get 'oid' from newly created domain
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py
index 511582cb..8a680c2e 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py
@@ -28,6 +28,7 @@ class ForeignTableAddTestCase(BaseTestGenerator):
     """
     This class will add foreign table under database node.
     """
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for foreign server node.
@@ -37,6 +38,7 @@ class ForeignTableAddTestCase(BaseTestGenerator):
     def setUp(self):
         """ This function will create foreign data wrapper and
         foreign server. """
+        super(ForeignTableAddTestCase, self).setUp()
 
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py
index f116f346..414f86f7 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py
@@ -27,6 +27,7 @@ class ForeignTableDeleteTestCase(BaseTestGenerator):
     """
     This class will delete foreign table under database node.
     """
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for foreign table node.
@@ -36,6 +37,7 @@ class ForeignTableDeleteTestCase(BaseTestGenerator):
     def setUp(self):
         """ This function will create foreign data wrapper, foreign server
         and foreign table. """
+        super(ForeignTableDeleteTestCase, self).setUp()
 
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py
index 1c908b95..0a500733 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py
@@ -27,6 +27,8 @@ class ForeignTableGetTestCase(BaseTestGenerator):
     """
     This class will fetch foreign table under database node.
     """
+    skip_on_database = ['gpdb']
+
     scenarios = [
         # Fetching default URL for foreign server node.
         ('Check foreign table Node', dict(url='/browser/foreign_table/obj/'))
@@ -35,6 +37,7 @@ class ForeignTableGetTestCase(BaseTestGenerator):
     def setUp(self):
         """ This function will create foreign data wrapper, foreign server
         and foreign table. """
+        super(ForeignTableGetTestCase, self).setUp()
 
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py
index aa62ea54..af9bc022 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py
@@ -28,6 +28,8 @@ class ForeignTablePutTestCase(BaseTestGenerator):
     """
     This class will fetch foreign table under database node.
     """
+    skip_on_database = ['gpdb']
+
     scenarios = [
         # Fetching default URL for foreign server node.
         ('Check foreign table Node', dict(url='/browser/foreign_table/obj/'))
@@ -36,6 +38,7 @@ class ForeignTablePutTestCase(BaseTestGenerator):
     def setUp(self):
         """ This function will create foreign data wrapper, foreign server
         and foreign table. """
+        super(ForeignTablePutTestCase, self).setUp()
 
         self.schema_data = parent_node_dict['schema'][-1]
         self.server_id = self.schema_data['server_id']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py
index 8d50ffee..53b3730f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py
@@ -22,6 +22,7 @@ from regression.python_test_utils import test_utils as utils
 
 class TriggerFuncAddTestCase(BaseTestGenerator):
     """ This class will add new trigger function under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for trigger function node.
         ('Fetch Trigger Function Node URL', dict(
@@ -30,6 +31,7 @@ class TriggerFuncAddTestCase(BaseTestGenerator):
 
     def runTest(self):
         """ This function will add trigger function under schema node. """
+        super(TriggerFuncAddTestCase, self).runTest()
         db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py
index 23cfce52..f0450a5d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py
@@ -22,6 +22,7 @@ from . import utils as trigger_funcs_utils
 
 class TriggerFuncDeleteTestCase(BaseTestGenerator):
     """ This class will delete the trigger function under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for trigger function node.
         ('Fetch Trigger Function Node URL',
@@ -29,6 +30,7 @@ class TriggerFuncDeleteTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
+        super(TriggerFuncDeleteTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         self.schema_name = parent_node_dict["schema"][-1]["schema_name"]
         self.schema_id = parent_node_dict["schema"][-1]["schema_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py
index 6e4c5b47..619ef7b9 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py
@@ -22,6 +22,7 @@ from . import utils as trigger_funcs_utils
 
 class TriggerFuncGetTestCase(BaseTestGenerator):
     """This class will fetch added trigger function under schema node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for trigger function node.
         ('Fetch Trigger Function Node URL',
@@ -29,6 +30,7 @@ class TriggerFuncGetTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
+        super(TriggerFuncGetTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         self.schema_name = parent_node_dict["schema"][-1]["schema_name"]
         self.schema_id = parent_node_dict["schema"][-1]["schema_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py
index 02561d9d..26b790a1 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py
@@ -23,6 +23,7 @@ from . import utils as trigger_funcs_utils
 
 class TriggerFuncPutTestCase(BaseTestGenerator):
     """ This class will update new trigger function under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for trigger function node.
         ('Fetch Trigger Function Node URL',
@@ -30,6 +31,7 @@ class TriggerFuncPutTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
+        super(TriggerFuncPutTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         self.schema_name = parent_node_dict["schema"][-1]["schema_name"]
         self.schema_id = parent_node_dict["schema"][-1]["schema_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_add.py
index a602c877..3cfe0391 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_add.py
@@ -22,6 +22,7 @@ from regression.python_test_utils import test_utils as utils
 
 class PackageAddTestCase(BaseTestGenerator):
     """ This class will add new package under test schema. """
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for package node.
@@ -30,7 +31,7 @@ class PackageAddTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
-
+        super(PackageAddTestCase, self).setUp()
         schema_info = parent_node_dict["schema"][-1]
         self.schema_id = schema_info["schema_id"]
         self.schema_name = schema_info["schema_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_delete.py
index 28dbd1f5..a0a80576 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_delete.py
@@ -22,6 +22,7 @@ from . import utils as package_utils
 
 class PackageDeleteTestCase(BaseTestGenerator):
     """ This class will delete new package under test schema. """
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for package node.
@@ -30,7 +31,7 @@ class PackageDeleteTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
-
+        super(PackageDeleteTestCase, self).setUp()
         schema_info = parent_node_dict["schema"][-1]
         self.schema_id = schema_info["schema_id"]
         self.schema_name = schema_info["schema_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_get.py
index c02045c1..082fa334 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_get.py
@@ -22,6 +22,7 @@ from . import utils as package_utils
 
 class PackageGetTestCase(BaseTestGenerator):
     """ This class will fetch new package under test schema. """
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for package node.
@@ -30,7 +31,7 @@ class PackageGetTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
-
+        super(PackageGetTestCase, self).setUp()
         schema_info = parent_node_dict["schema"][-1]
         self.schema_id = schema_info["schema_id"]
         self.schema_name = schema_info["schema_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_put.py
index fd0cbf50..1b39c045 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/test_package_put.py
@@ -23,7 +23,7 @@ from . import utils as package_utils
 
 class PackagePutTestCase(BaseTestGenerator):
     """ This class will update new package under test schema. """
-
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for package node.
         ('Fetch Package Node URL', dict(
@@ -31,7 +31,7 @@ class PackagePutTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
-
+        super(PackagePutTestCase, self).setUp()
         schema_info = parent_node_dict["schema"][-1]
         self.schema_id = schema_info["schema_id"]
         self.schema_name = schema_info["schema_name"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py
index 2c92c5cd..d580159d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py
@@ -21,6 +21,7 @@ from regression.python_test_utils import test_utils as utils
 
 class SequenceAddTestCase(BaseTestGenerator):
     """ This class will add new sequence(s) under schema node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for sequence node.
         (
@@ -60,7 +61,7 @@ class SequenceAddTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
-        pass
+        super(SequenceAddTestCase, self).setUp()
 
     def runTest(self):
         """This function will add sequence(s) under schema node."""
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py
index b9587991..a11c5be5 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py
@@ -21,12 +21,14 @@ from . import utils as sequence_utils
 
 class SequenceDeleteTestCase(BaseTestGenerator):
     """This class will delete added sequence under schema node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for sequence node.
         ('Fetch sequence Node URL', dict(url='/browser/sequence/obj/'))
     ]
 
     def setUp(self):
+        super(SequenceDeleteTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py
index 5c6baa63..199ca37f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py
@@ -21,12 +21,14 @@ from . import utils as sequence_utils
 
 class SequenceGetTestCase(BaseTestGenerator):
     """This class will fetch added sequence under schema node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for sequence node.
         ('Fetch sequence Node URL', dict(url='/browser/sequence/obj/'))
     ]
 
     def setUp(self):
+        super(SequenceGetTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.py
index 06043fd1..6f563ad6 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.py
@@ -22,12 +22,14 @@ from . import utils as sequence_utils
 
 class SequencePutTestCase(BaseTestGenerator):
     """This class will update added sequence under schema node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for sequence node.
         ('Fetch sequence Node URL', dict(url='/browser/sequence/obj/'))
     ]
 
     def setUp(self):
+        super(SequencePutTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_add.py
index 517b6453..ed4d68c2 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_add.py
@@ -24,6 +24,7 @@ from regression.python_test_utils import test_utils as utils
 
 class SynonymAddTestCase(BaseTestGenerator):
     """This class will add new synonym under test schema."""
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for synonym node.
@@ -31,6 +32,7 @@ class SynonymAddTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
+        super(SynonymAddTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_delete.py
index d1d2f55e..19d172bf 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_delete.py
@@ -24,6 +24,7 @@ from . import utils as synonym_utils
 
 class SynonymDeleteTestCase(BaseTestGenerator):
     """This class will delete added synonym under schema node."""
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for synonym node.
@@ -31,6 +32,7 @@ class SynonymDeleteTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
+        super(SynonymDeleteTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_get.py
index 2fdeaad0..d08888db 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_get.py
@@ -24,6 +24,7 @@ from . import utils as synonym_utils
 
 class SynonymGetTestCase(BaseTestGenerator):
     """This class will fetch new synonym under schema node."""
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for synonym node.
@@ -31,6 +32,7 @@ class SynonymGetTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
+        super(SynonymGetTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_put.py
index 353b3ab6..6a1d826d 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/tests/test_synonym_put.py
@@ -27,6 +27,7 @@ from . import utils as synonym_utils
 
 class SynonymPutTestCase(BaseTestGenerator):
     """This class will update added synonym under test schema."""
+    skip_on_database = ['gpdb']
 
     scenarios = [
         # Fetching default URL for synonym node.
@@ -34,7 +35,7 @@ class SynonymPutTestCase(BaseTestGenerator):
     ]
 
     def setUp(self):
-
+        super(SynonymPutTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py
index f1ba6f6e..2b1ac92a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/__init__.py
@@ -364,9 +364,20 @@ class ColumnsView(PGChildNodeView, DataTypeReader):
         data['attlen'] = None
         data['attprecision'] = None
 
-        self.set_length_precision(
-            length, precision, fulltype, data
-        )
+        import re
+
+        # If we have length & precision both
+        if length and precision:
+            matchObj = re.search(r'(\d+),(\d+)', fulltype)
+            if matchObj:
+                data['attlen'] = matchObj.group(1)
+                data['attprecision'] = matchObj.group(2)
+        elif length:
+            # If we have length only
+            matchObj = re.search(r'(\d+)', fulltype)
+            if matchObj:
+                data['attlen'] = matchObj.group(1)
+                data['attprecision'] = None
 
         # We need to fetch inherited tables for each table
         SQL = render_template("/".join([self.template_path,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_add.py
index a702ebe9..b202a18c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_add.py
@@ -23,12 +23,14 @@ from regression.python_test_utils import test_utils as utils
 
 class CheckConstraintAddTestCase(BaseTestGenerator):
     """This class will add check constraint to existing table"""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Add check constraint to table',
          dict(url='/browser/check_constraint/obj/'))
     ]
 
     def setUp(self):
+        super(CheckConstraintAddTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_delete.py
index 5b465ffa..acca9fd3 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_delete.py
@@ -23,12 +23,14 @@ from . import utils as chk_constraint_utils
 
 class CheckConstraintDeleteTestCase(BaseTestGenerator):
     """This class will delete check constraint to existing table"""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Delete check constraint to table',
          dict(url='/browser/check_constraint/obj/'))
     ]
 
     def setUp(self):
+        super(CheckConstraintDeleteTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_get.py
index b5a61024..41247b5a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_get.py
@@ -23,12 +23,15 @@ from . import utils as chk_constraint_utils
 
 class CheckConstraintGetTestCase(BaseTestGenerator):
     """This class will fetch check constraint to existing table"""
+    skip_on_database = ['gpdb']
+
     scenarios = [
         ('Fetch check constraint to table',
          dict(url='/browser/check_constraint/obj/'))
     ]
 
     def setUp(self):
+        super(CheckConstraintGetTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_put.py
index 07a2240b..b2400602 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/test_check_constraint_put.py
@@ -24,12 +24,14 @@ from . import utils as chk_constraint_utils
 
 class CheckConstraintPutTestCase(BaseTestGenerator):
     """This class will update check constraint to existing table"""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Update check constraint to table',
          dict(url='/browser/check_constraint/obj/'))
     ]
 
     def setUp(self):
+        super(CheckConstraintPutTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_add.py
index 0df6dac0..ceeb6350 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_add.py
@@ -24,6 +24,7 @@ from regression.python_test_utils import test_utils as utils
 class IndexConstraintAddTestCase(BaseTestGenerator):
     """This class will add index constraint(primary key or unique key) to
     table column"""
+    skip_on_database = ['gpdb']
     primary_key_name = "test_primarykey_add_%s" % \
                        (str(uuid.uuid4())[1:8])
     primary_key_data = {"name": primary_key_name,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_delete.py
index b0fdf024..526b36cd 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_delete.py
@@ -24,6 +24,7 @@ from . import utils as index_constraint_utils
 class IndexConstraintDeleteTestCase(BaseTestGenerator):
     """This class will delete index constraint(primary key or unique key) of
     table column"""
+    skip_on_database = ['gpdb']
     primary_key_name = "test_primarykey_delete_%s" % \
                        (str(uuid.uuid4())[1:8])
     unique_key_name = "test_uniquekey_delete_%s" % \
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_get.py
index 927e86de..31412176 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_get.py
@@ -24,6 +24,7 @@ from . import utils as index_constraint_utils
 class IndexConstraintGetTestCase(BaseTestGenerator):
     """This class will fetch the index constraint(primary key or unique key) of
     table column"""
+    skip_on_database = ['gpdb']
     primary_key_name = "test_primarykey_delete_%s" % \
                        (str(uuid.uuid4())[1:8])
     unique_key_name = "test_uniquekey_delete_%s" % \
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_put.py
index 2d13123d..ef0e3ade 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/test_index_constraint_put.py
@@ -25,6 +25,7 @@ from . import utils as index_constraint_utils
 class IndexConstraintUpdateTestCase(BaseTestGenerator):
     """This class will update index constraint(primary key or unique key) of
     table column"""
+    skip_on_database = ['gpdb']
     primary_key_name = "test_primarykey_put_%s" % \
                        (str(uuid.uuid4())[1:8])
     unique_key_name = "test_uniquekey_put_%s" % \
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_constraint_cols.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_constraint_cols.sql
index cc1a902b..902789cc 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_constraint_cols.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/get_constraint_cols.sql
@@ -15,8 +15,9 @@ FROM pg_index i
 JOIN pg_attribute a ON (a.attrelid = i.indexrelid AND attnum = {{loop.index}})
 JOIN pg_type ty ON ty.oid=a.atttypid
 LEFT OUTER JOIN pg_opclass o ON (o.oid = i.indclass[{{loop.index -1}}])
-LEFT OUTER JOIN pg_constraint c ON (c.conindid = i.indexrelid) LEFT OUTER JOIN pg_operator op ON (op.oid = c.conexclop[{{loop.index}}])
+LEFT OUTER JOIN pg_constraint c ON (c.conindid = i.indexrelid)
+LEFT OUTER JOIN pg_operator op ON (op.oid = c.conexclop[{{loop.index}}])
 LEFT OUTER JOIN pg_collation coll ON a.attcollation=coll.oid
 LEFT OUTER JOIN pg_namespace nspc ON coll.collnamespace=nspc.oid
 WHERE i.indexrelid = {{cid}}::oid
-{% endfor %}
\ No newline at end of file
+{% endfor %}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/gpdb_5.0_plus/get_constraint_cols.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/gpdb_5.0_plus/get_constraint_cols.sql
new file mode 100644
index 00000000..397a2b68
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/gpdb_5.0_plus/get_constraint_cols.sql
@@ -0,0 +1,20 @@
+{% for n in range(colcnt|int) %}
+{% if loop.index != 1 %}
+UNION
+{% endif %}
+SELECT
+  i.indoption[{{loop.index -1}}] AS options,
+  pg_get_indexdef(i.indexrelid, {{loop.index}}, true) AS coldef,
+  NULL as op.oprname,
+  CASE WHEN (o.opcdefault = FALSE) THEN o.opcname ELSE null END AS opcname,
+  (SELECT setting AS value
+       FROM pg_settings
+       WHERE name='lc_collate') AS collname,
+  '' as collnspname,
+  format_type(ty.oid,NULL) AS col_type
+FROM pg_index i
+JOIN pg_attribute a ON (a.attrelid = i.indexrelid AND attnum = {{loop.index}})
+JOIN pg_type ty ON ty.oid=a.atttypid
+LEFT OUTER JOIN pg_opclass o ON (o.oid = i.indclass[{{loop.index -1}}])
+WHERE i.indexrelid = {{cid}}::oid
+{% endfor %}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/gpdb_5.0_plus/column_details.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/gpdb_5.0_plus/column_details.sql
new file mode 100644
index 00000000..349d50c2
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index/sql/gpdb_5.0_plus/column_details.sql
@@ -0,0 +1,25 @@
+SELECT
+    i.indexrelid,
+    CASE i.indoption[i.attnum - 1]
+    WHEN 0 THEN ARRAY['ASC', 'NULLS LAST']
+    WHEN 1 THEN ARRAY['DESC', 'NULLS FIRST']
+    WHEN 2 THEN ARRAY['ASC', 'NULLS FIRST']
+    WHEN 3 THEN ARRAY['DESC', 'NULLS  ']
+    ELSE ARRAY['UNKNOWN OPTION' || i.indoption[i.attnum - 1], '']
+    END::text[] AS options,
+    i.attnum,
+    pg_get_indexdef(i.indexrelid, i.attnum, true) as attdef,
+    CASE WHEN (o.opcdefault = FALSE) THEN o.opcname ELSE null END AS opcname,
+    NULL AS oprname,
+	  '' AS collnspname
+FROM (
+      SELECT
+          indexrelid, i.indoption, i.indclass,
+          unnest(ARRAY(SELECT generate_series(1, i.indnatts) AS n)) AS attnum
+      FROM
+          pg_index i
+      WHERE i.indexrelid = {{idx}}::OID
+) i
+    LEFT JOIN pg_opclass o ON (o.oid = i.indclass[i.attnum - 1])
+    LEFT JOIN pg_attribute a ON (a.attrelid = i.indexrelid AND a.attnum = i.attnum)
+ORDER BY i.attnum;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py
index c0a6b8dc..49fd910b 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py
@@ -106,7 +106,7 @@ class TableAddTestCase(BaseTestGenerator):
             "hastoasttable": True,
             "like_constraints": True,
             "like_default_value": True,
-            "like_relation": "pg_catalog.pg_tables",
+            "like_relation": "pg_catalog.pg_namespace",
             "name": self.table_name,
             "primary_key": [],
             "relacl": [
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_column_update.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_column_update.py
deleted file mode 100644
index 1321d6f6..00000000
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_column_update.py
+++ /dev/null
@@ -1,96 +0,0 @@
-##########################################################################
-#
-# pgAdmin 4 - PostgreSQL Tools
-#
-# Copyright (C) 2013 - 2018, The pgAdmin Development Team
-# This software is released under the PostgreSQL Licence
-#
-##########################################################################
-
-import json
-import uuid
-
-from pgadmin.browser.server_groups.servers.databases.schemas.tests import \
-    utils as schema_utils
-from pgadmin.browser.server_groups.servers.databases.tests import utils as \
-    database_utils
-from pgadmin.utils.route import BaseTestGenerator
-from regression import parent_node_dict
-from regression.python_test_utils import test_utils as utils
-from . import utils as tables_utils
-
-
-class TableNotNullUpdateTestCase(BaseTestGenerator):
-    """This class will add new collation under schema node."""
-    scenarios = [
-        ('Update Table with not null field', dict(url='/browser/table/obj/')),
-    ]
-
-    def setUp(self):
-        self.db_name = parent_node_dict["database"][-1]["db_name"]
-        schema_info = parent_node_dict["schema"][-1]
-        self.server_id = schema_info["server_id"]
-        self.db_id = schema_info["db_id"]
-        db_con = database_utils.connect_database(
-            self, utils.SERVER_GROUP, self.server_id, self.db_id
-        )
-        if not db_con['data']["connected"]:
-            raise Exception("Could not connect to database to add a table.")
-        self.schema_id = schema_info["schema_id"]
-        self.schema_name = schema_info["schema_name"]
-        schema_response = schema_utils.verify_schemas(self.server,
-                                                      self.db_name,
-                                                      self.schema_name)
-        if not schema_response:
-            raise Exception("Could not find the schema to add a table.")
-
-        self.table_name = "test_table_column_put_%s" % (str(uuid.uuid4())[1:8])
-
-        custom_sql = 'column_1 "char" NOT NULL, ' \
-                     'column_2 character varying(10) NOT NULL'
-
-        self.table_id = tables_utils.create_table(
-            self.server,
-            self.db_name,
-            self.schema_name,
-            self.table_name,
-            custom_sql
-        )
-
-    def runTest(self):
-        """This function will fetch added table under schema node."""
-        table_response = tables_utils.verify_table(
-            self.server, self.db_name, self.table_id
-        )
-        if not table_response:
-            raise Exception("Could not find the table to update.")
-
-        data = {
-            "id": self.table_id,
-            "columns": {
-                "changed": [
-                    {
-                        "attnum": 1,
-                        "attnotnull": False
-                    },
-                    {
-                        "attnum": 2,
-                        "attnotnull": False
-                    }
-
-                ]
-            }
-        }
-
-        response = self.tester.put(
-            self.url + str(utils.SERVER_GROUP) + '/' +
-            str(self.server_id) + '/' + str(self.db_id) + '/' +
-            str(self.schema_id) + '/' + str(self.table_id),
-            data=json.dumps(data), follow_redirects=True
-        )
-
-        self.assertEquals(response.status_code, 200)
-
-    def tearDown(self):
-        # Disconnect the database
-        database_utils.disconnect_database(self, self.server_id, self.db_id)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
index b722147c..4cec323b 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
@@ -15,8 +15,7 @@ import traceback
 from regression.python_test_utils import test_utils as utils
 
 
-def create_table(server, db_name, schema_name, table_name,
-                 custom_column_sql=None):
+def create_table(server, db_name, schema_name, table_name):
     """
     This function creates a table under provided schema.
     :param server: server details
@@ -40,13 +39,9 @@ def create_table(server, db_name, schema_name, table_name,
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
-        if custom_column_sql:
-            query = "CREATE TABLE %s.%s(%s)" % \
-                    (schema_name, table_name, custom_column_sql)
-        else:
-            query = "CREATE TABLE %s.%s(id serial UNIQUE NOT NULL, " \
-                    "name text, location text)" % \
-                    (schema_name, table_name)
+        query = "CREATE TABLE %s.%s(id serial UNIQUE NOT NULL, name text," \
+                " location text)" %\
+                (schema_name, table_name)
         pg_cursor.execute(query)
         connection.set_isolation_level(old_isolation_level)
         connection.commit()
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_add.py
index d706a982..74a92621 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_add.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_add.py
@@ -25,11 +25,13 @@ from regression.python_test_utils import test_utils as utils
 
 class TriggersAddTestCase(BaseTestGenerator):
     """This class will add new trigger under table node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Add trigger Node URL', dict(url='/browser/trigger/obj/'))
     ]
 
     def setUp(self):
+        super(TriggersAddTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_delete.py
index 852786f4..f7e71412 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_delete.py
@@ -25,11 +25,13 @@ from . import utils as triggers_utils
 
 class TriggersDeleteTestCase(BaseTestGenerator):
     """This class will delete trigger under table node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Delete trigger Node URL', dict(url='/browser/trigger/obj/'))
     ]
 
     def setUp(self):
+        super(TriggersDeleteTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_get.py
index a0ac3cc9..e23b6149 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_get.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_get.py
@@ -25,11 +25,13 @@ from . import utils as triggers_utils
 
 class TriggersGetTestCase(BaseTestGenerator):
     """This class will fetch trigger under table node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Fetch trigger Node URL', dict(url='/browser/trigger/obj/'))
     ]
 
     def setUp(self):
+        super(TriggersGetTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_put.py
index 73ccdbcb..927231f2 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/test_triggers_put.py
@@ -26,11 +26,13 @@ from . import utils as triggers_utils
 
 class TriggersUpdateTestCase(BaseTestGenerator):
     """This class will update trigger under table node."""
+    skip_on_database = ['gpdb']
     scenarios = [
         ('Put trigger Node URL', dict(url='/browser/trigger/obj/'))
     ]
 
     def setUp(self):
+        super(TriggersUpdateTestCase, self).setUp()
         self.db_name = parent_node_dict["database"][-1]["db_name"]
         schema_info = parent_node_dict["schema"][-1]
         self.server_id = schema_info["server_id"]
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py
index f6d1b229..45403d11 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py
@@ -1748,20 +1748,39 @@ class BaseTableView(PGChildNodeView):
                             old_data['atttypmod']
                         )
 
+                        def get_type_attr(key, data):
+                            """Utility function"""
+                            if key in data:
+                                return data[key]
+                            return None
+
                         # If the column data type has not changed then fetch
                         # old length and precision
                         if 'elemoid' in old_data and 'cltype' not in c:
                             length, precision, typeval = \
                                 self.get_length_precision(old_data['elemoid'])
-                            # Set proper values for old data
-                            self.set_length_precision(
-                                length, precision, fulltype, old_data
-                            )
 
-                            # Set proper values for in new data
-                            self.set_length_precision(
-                                length, precision, fulltype, c, old_data
-                            )
+                            # If we have length & precision both
+                            if length and precision:
+                                matchObj = re.search(r'(\d+),(\d+)', fulltype)
+                                if matchObj:
+                                    c['attlen'] = get_type_attr(
+                                        'attlen', c
+                                    ) or matchObj.group(1)
+                                    c['attprecision'] = get_type_attr(
+                                        'attprecision', c
+                                    ) or matchObj.group(2)
+                            elif length:
+                                # If we have length only
+                                matchObj = re.search(r'(\d+)', fulltype)
+                                if matchObj:
+                                    c['attlen'] = get_type_attr(
+                                        'attlen', c
+                                    ) or matchObj.group(1)
+                                    c['attprecision'] = None
+                            else:
+                                c['attlen'] = None
+                                c['attprecision'] = None
 
                         if 'cltype' in c:
                             typename = c['cltype']
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/gpdb_5.0_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/gpdb_5.0_plus/sql/acl.sql
index c50f9b2a..d917b8ae 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/gpdb_5.0_plus/sql/acl.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schema/gpdb_5.0_plus/sql/acl.sql
@@ -5,12 +5,12 @@ SELECT
     array_agg(b.is_grantable) AS grantable
 FROM
     (SELECT
-        (d).grantee AS grantee, (d).grantor AS grantor,
-        (d).is_grantable AS is_grantable,
-        CASE (d).privilege_type
+        (a).grantee AS grantee, (a).grantor AS grantor,
+        (a).is_grantable AS is_grantable,
+        CASE (a).privilege_type
         WHEN 'CREATE' THEN 'C'
         WHEN 'USAGE' THEN 'U'
-        ELSE 'UNKNOWN - ' || (d).privilege_type
+        ELSE 'UNKNOWN - ' || (a).privilege_type
         END AS privilege_type
     FROM
         (
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
index 66c2b903..39d2bf91 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
@@ -20,12 +20,14 @@ from . import utils as schema_utils
 
 class SchemaPutTestCase(BaseTestGenerator):
     """ This class will update the schema under database node. """
+    skip_on_database = ['gpdb']
     scenarios = [
         # Fetching default URL for extension node.
         ('Check Schema Node URL', dict(url='/browser/schema/obj/'))
     ]
 
     def setUp(self):
+        super(SchemaPutTestCase, self).setUp()
         self.database_info = parent_node_dict["database"][-1]
         self.db_name = self.database_info["db_name"]
         # Change the db name, so that schema will create in newly created db
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py
index b995c408..2395439c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/__init__.py
@@ -464,17 +464,22 @@ class TypeView(PGChildNodeView, DataTypeReader):
 
                 # Below logic will allow us to split length, precision from
                 # type name for grid
-                data = {
-                    'attlen': None,
-                    'attprecision': None
-                }
-
-                self.set_length_precision(
-                    is_tlength, is_precision, row['fulltype'], data
-                )
-
-                t_len = data['attlen']
-                t_prec = data['attprecision']
+                import re
+                t_len = None
+                t_prec = None
+
+                # If we have length & precision both
+                if is_tlength and is_precision:
+                    matchObj = re.search(r'(\d+),(\d+)', row['fulltype'])
+                    if matchObj:
+                        t_len = matchObj.group(1)
+                        t_prec = matchObj.group(2)
+                elif is_tlength:
+                    # If we have length only
+                    matchObj = re.search(r'(\d+)', row['fulltype'])
+                    if matchObj:
+                        t_len = matchObj.group(1)
+                        t_prec = None
 
                 type_name = DataTypeReader.parse_type_name(row['typname'])
 
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/acl.sql
new file mode 100644
index 00000000..67ce0de7
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/acl.sql
@@ -0,0 +1,7 @@
+SELECT
+  'typacl' AS deftype,
+  'PUBLIC' AS grantee,
+  NULL     AS grantor,
+  NULL     AS privileges,
+  NULL     AS grantable
+LIMIT 0;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/additional_properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/additional_properties.sql
new file mode 100644
index 00000000..570a7eb6
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/additional_properties.sql
@@ -0,0 +1,34 @@
+{# The SQL given below will fetch composite type#}
+{% if type == 'c' %}
+SELECT attnum, attname, format_type(t.oid,NULL) AS typname, attndims, atttypmod, nsp.nspname,
+    (SELECT COUNT(1) from pg_type t2 WHERE t2.typname=t.typname) > 1 AS isdup,
+    NULL AS collname, NULL as collnspname, att.attrelid,
+    format_type(t.oid, att.atttypmod) AS fulltype,
+    CASE WHEN t.typelem > 0 THEN t.typelem ELSE t.oid END as elemoid
+FROM pg_attribute att
+    JOIN pg_type t ON t.oid=atttypid
+    JOIN pg_namespace nsp ON t.typnamespace=nsp.oid
+    LEFT OUTER JOIN pg_type b ON t.typelem=b.oid
+    WHERE att.attrelid = {{typrelid}}::oid
+    ORDER by attnum;
+{% endif %}
+
+{# The SQL given below will fetch enum type#}
+{% if type == 'e' %}
+SELECT enumlabel
+FROM pg_enum
+    WHERE enumtypid={{tid}}::oid
+    ORDER by enumsortorder
+{% endif %}
+
+{# The SQL given below will fetch range type#}
+{% if type == 'r' %}
+SELECT rngsubtype, st.typname,
+    rngcollation, NULL AS collname,
+    rngsubopc, opc.opcname,
+    rngcanonical, rngsubdiff
+FROM pg_range
+    LEFT JOIN pg_type st ON st.oid=rngsubtype
+    LEFT JOIN pg_opclass opc ON opc.oid=rngsubopc
+    WHERE rngtypid={{tid}}::oid;
+{% endif %}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/properties.sql
new file mode 100644
index 00000000..a3027e70
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/type/sql/gpdb_5.0_plus/properties.sql
@@ -0,0 +1,31 @@
+SELECT
+  t.oid,
+  t.typname                   AS name,
+  FALSE            AS is_collatable,
+  array_to_string(ct.relacl::text[], ', ') AS acl,
+  t.*,
+  format_type(t.oid, NULL)    AS alias,
+  pg_get_userbyid(t.typowner) AS typeowner,
+  e.typname                   AS element,
+  description,
+  ct.oid                      AS taboid,
+  nsp.nspname                 AS schema,
+  ARRAY [] :: TEXT []         AS seclabels,
+  (CASE WHEN (t.oid <= {{datlastsysoid}}:: OID OR ct.oid != 0)
+    THEN TRUE
+   ELSE FALSE END)            AS is_sys_type
+FROM pg_type t
+  LEFT OUTER JOIN pg_type e ON e.oid = t.typelem
+  LEFT OUTER JOIN pg_class ct ON ct.oid = t.typrelid AND ct.relkind <> 'c'
+  LEFT OUTER JOIN pg_description des
+    ON (des.objoid = t.oid AND des.classoid = 'pg_type' :: REGCLASS)
+  LEFT OUTER JOIN pg_namespace nsp ON nsp.oid = t.typnamespace
+WHERE t.typtype != 'd' AND t.typname NOT LIKE E'\\_%' AND
+      t.typnamespace = {{scid}}:: OID
+{% if tid %}
+AND t.oid = {{tid}}:: OID
+{% endif %}
+{% if not show_system_objects %}
+AND ct.oid IS NULL
+{% endif %}
+ORDER BY t.typname;
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py
index 8b73aa00..f330ed96 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/utils.py
@@ -8,7 +8,7 @@
 ##########################################################################
 
 """Schema collection node helper class"""
-import re
+
 import json
 
 from flask import render_template
@@ -336,56 +336,6 @@ class DataTypeReader:
 
         return type_name
 
-    @classmethod
-    def set_length_precision(cls, length, precision, fulltype, data,
-                             old_data=None):
-        """
-        Parse length & precision from datatype and then assign it to datatype
-        according to client format
-
-        Args:
-            length: Boolean flag for length
-            precision: Boolean flag for precision
-            fulltype: Type name with length & precision
-            data: New values
-            old_data: Old values
-        """
-        # If we have length & precision both
-
-        if length and precision:
-            match_obj = re.search(r'(\d+),(\d+)', fulltype)
-            if match_obj:
-                attribute_length = DataTypeReader.get_valid_length_value(
-                    data.get('attlen', None))
-                data['attlen'] = attribute_length or match_obj.group(1)
-                attribute_precision = DataTypeReader.get_valid_length_value(
-                    data.get('attprecision', None))
-                data['attprecision'] = attribute_precision or match_obj.group(
-                    2)
-        elif length:
-            # If we have length only
-            match_obj = re.search(r'(\d+)', fulltype)
-            if match_obj:
-                attribute_length = DataTypeReader.get_valid_length_value(
-                    data.get('attlen', None))
-                data['attlen'] = attribute_length or match_obj.group(1)
-                data['attprecision'] = None
-        else:
-            # Use the old values to avoid unnecessary
-            if old_data:
-                if 'attlen' in old_data:
-                    if old_data['attlen'] != '-1':
-                        data['attlen'] = old_data.get('attlen', None)
-                    if 'attprecision' in old_data:
-                        if old_data['attprecision'] != '-1':
-                            data['attprecision'] = old_data.get(
-                                'attprecision', None
-                            )
-
-    @classmethod
-    def get_valid_length_value(cls, val):
-        return val if val and int(val) != -1 else None
-
 
 def trigger_definition(data):
     """
diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql
index 680ab235..9296ee6c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql
@@ -135,3 +135,4 @@
 {% endfor %}
 {% endif %}
 {% endif %}
+{% endif %}
diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py
index a0f67462..e5598468 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py
@@ -50,6 +50,8 @@ class DatabasesUpdateTestCase(BaseTestGenerator):
                     follow_redirects=True)
                 self.assertEquals(response.status_code, 200)
             except Exception as exception:
+                from traceback import print_exc
+                print_exc()
                 raise Exception("Error while updating database details. %s" %
                                 exception)
             finally:
diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/create.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/create.sql
index b975a546..1a0b0814 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/create.sql
+++ b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/create.sql
@@ -20,11 +20,7 @@ CREATE {% if data.rolcanlogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(da
 
 	INHERIT{% else %}
 
-	NOINHERIT{% endif %}{% if data.rolreplication %}
-
-	REPLICATION{% else %}
-
-	NOREPLICATION{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
+	NOINHERIT{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
 
 	CONNECTION LIMIT {{ data.rolconnlimit }}{% endif %}{% if data.rolvaliduntil and data.rolvaliduntil is not none %}
 
@@ -42,7 +38,8 @@ GRANT {{ conn|qtIdent(data.admins)|join(', ') }} TO {{ conn|qtIdent(data.rolname
 
 {% for var in data.variables %}
 
-{{ VARIABLE.APPLY(conn, var.database, data.rolname, var.name, var.value) }}
+ALTER ROLE {{ self.conn|qtIdent(data.rolname) }}
+    SET {{ conn|qtIdent(var.name) }} TO {{ var.value }};
 {% endfor %}{% endif %}{% if data.description %}
 
 COMMENT ON ROLE {{ conn|qtIdent(data.rolname) }} IS {{ data.description|qtLiteral }};
diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/properties.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/properties.sql
index 3ec411c5..8e560bcc 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/properties.sql
+++ b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/properties.sql
@@ -11,6 +11,6 @@ SELECT
 FROM
 	pg_roles r
 {% if rid %}
-WHERE r.oid = {{ rid|qtIdent }}::OID
+WHERE r.oid = {{ rid }}::OID
 {% endif %}
 ORDER BY r.rolcanlogin, r.rolname
diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/sql.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/sql.sql
index db3d65c4..642009e0 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/sql.sql
+++ b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/sql.sql
@@ -66,7 +66,6 @@ UNION ALL
 FROM
 	(SELECT
 		'ALTER ROLE ' || pg_catalog.quote_ident(pg_get_userbyid(%(rid)s::OID)) ||
-		' IN DATABASE ' || pg_catalog.quote_ident(datname) ||
 		' SET ' || param|| ' TO ' ||
 		CASE
 		WHEN param IN ('search_path', 'temp_tablespaces') THEN value
diff --git a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/update.sql b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/update.sql
index b1fd620a..51df8e90 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/update.sql
+++ b/web/pgadmin/browser/server_groups/servers/roles/templates/role/sql/post8_4/update.sql
@@ -30,9 +30,7 @@ ALTER {% if rolCanLogin %}USER{% else %}ROLE{% endif %} {{ conn|qtIdent(rolname)
 	INHERIT{% else %}
 	NOINHERIT{% endif %}{% endif %}{% if 'rolreplication' in data %}
 
-{% if data.rolreplication %}
-	REPLICATION{% else %}
-	NOREPLICATION{% endif %}{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
+{% endif %}{% if 'rolconnlimit' in data and data.rolconnlimit is number and data.rolconnlimit >= -1 %}
 
 	CONNECTION LIMIT {{ data.rolconnlimit }}
 {% endif %}{% if 'rolvaliduntil' in data %}
@@ -87,7 +85,8 @@ GRANT {{ conn|qtIdent(data.members)|join(', ') }} TO {{ conn|qtIdent(rolname) }}
 {% if 'added' in variables and variables.added|length > 0 %}
 
 {% for var in variables.added %}
-{{ VARIABLE.APPLY(conn, var.database, rolname, var.name, var.value) }}
+ALTER ROLE {{ self.conn|qtIdent(data.rolname) }}
+    SET {{ conn|qtIdent(var.name) }} TO {{ var.value }};
 {% endfor %}{% endif %}
 {% if 'changed' in variables and variables.changed|length > 0 %}
 
diff --git a/web/pgadmin/tools/sqleditor/utils/tests/test_start_running_query.py b/web/pgadmin/tools/sqleditor/utils/tests/test_start_running_query.py
index b7745463..23a5c7fc 100644
--- a/web/pgadmin/tools/sqleditor/utils/tests/test_start_running_query.py
+++ b/web/pgadmin/tools/sqleditor/utils/tests/test_start_running_query.py
@@ -8,8 +8,8 @@
 ##########################################################################
 import sys
 
-import simplejson as json
 from flask import Response
+import simplejson as json
 
 from pgadmin.tools.sqleditor.utils.start_running_query import StartRunningQuery
 from pgadmin.utils.exception import ConnectionLost
@@ -385,14 +385,8 @@ class StartRunningQueryTest(BaseTestGenerator):
            '.internal_server_error')
     @patch('pgadmin.tools.sqleditor.utils.start_running_query'
            '.update_session_grid_transaction')
-    @patch('pgadmin.tools.sqleditor.utils.start_running_query'
-           '.StartRunningQuery.is_begin_required_for_sql_query')
-    @patch('pgadmin.tools.sqleditor.utils.start_running_query'
-           '.StartRunningQuery.is_rollback_statement_required')
-    def runTest(self, is_rollback_statement_required_stub,
-                is_begin_required_for_sql_query_stub,
-                update_session_grid_transaction_stub,
-                internal_server_error_mock, get_driver_stub, pickle_stub,
+    def runTest(self, update_session_grid_transaction_mock,
+                internal_server_error_mock, get_driver_mock, pickle_mock,
                 make_json_response_mock,
                 apply_explain_plan_wrapper_if_needed_mock):
         """Check correct function is called to handle to run query."""
@@ -404,27 +398,41 @@ class StartRunningQueryTest(BaseTestGenerator):
         make_json_response_mock.return_value = expected_response
         if self.expect_internal_server_error_called_with is not None:
             internal_server_error_mock.return_value = expected_response
-        pickle_stub.loads.return_value = self.pickle_load_return
+        pickle_mock.loads.return_value = self.pickle_load_return
         blueprint_mock = MagicMock(
             info_notifier_timeout=MagicMock(get=lambda: 5))
 
+        # Save value for the later use
+        self.is_begin_required_for_sql_query = \
+            StartRunningQuery.is_begin_required_for_sql_query
+        self.is_rollback_statement_required = \
+            StartRunningQuery.is_rollback_statement_required
+
         if self.is_begin_required:
-            is_begin_required_for_sql_query_stub.return_value = True
+            StartRunningQuery.is_begin_required_for_sql_query = MagicMock(
+                return_value=True
+            )
         else:
-            is_begin_required_for_sql_query_stub.return_value = False
+            StartRunningQuery.is_begin_required_for_sql_query = MagicMock(
+                return_value=False
+            )
         if self.is_rollback_required:
-            is_rollback_statement_required_stub.return_value = True
+            StartRunningQuery.is_rollback_statement_required = MagicMock(
+                return_value=True
+            )
         else:
-            is_rollback_statement_required_stub.return_value = False
+            StartRunningQuery.is_rollback_statement_required = MagicMock(
+                return_value=False
+            )
 
         apply_explain_plan_wrapper_if_needed_mock.return_value = \
             self.apply_explain_plan_wrapper_if_needed_return_value
 
         manager = self.__create_manager()
         if self.get_driver_exception:
-            get_driver_stub.side_effect = get_driver_exception
+            get_driver_mock.side_effect = get_driver_exception
         else:
-            get_driver_stub.return_value = MagicMock(
+            get_driver_mock.return_value = MagicMock(
                 connection_manager=lambda session_id: manager)
 
         try:
@@ -517,3 +525,10 @@ class StartRunningQueryTest(BaseTestGenerator):
             self.connection.execute_void.assert_called_with('ROLLBACK;')
         elif not self.is_begin_required:
             self.connection.execute_void.assert_not_called()
+
+    def tearDown(self):
+        #  Reset methods to the original state
+        StartRunningQuery.is_rollback_statement_required = \
+            staticmethod(self.is_rollback_statement_required)
+        StartRunningQuery.is_rollback_statement_required = \
+            staticmethod(self.is_rollback_statement_required)
diff --git a/web/pgadmin/utils/route.py b/web/pgadmin/utils/route.py
index 379ef755..dc8bd6db 100644
--- a/web/pgadmin/utils/route.py
+++ b/web/pgadmin/utils/route.py
@@ -80,6 +80,13 @@ class TestsGeneratorRegistry(ABCMeta):
 class BaseTestGenerator(unittest.TestCase):
     # Defining abstract method which will override by individual testcase.
 
+    def setUp(self):
+        super(BaseTestGenerator, self).setUp()
+        if hasattr(self, 'skip_on_database'):
+            if 'db_type' in self.server:
+                if self.server['db_type'] in self.skip_on_database:
+                    self.skipTest('cannot run in: %s' % self.server['db_type'])
+
     @classmethod
     def setTestServer(cls, server):
         cls.server = server
diff --git a/web/regression/python_test_utils/test_utils.py b/web/regression/python_test_utils/test_utils.py
index c11853fb..c3c0fe57 100644
--- a/web/regression/python_test_utils/test_utils.py
+++ b/web/regression/python_test_utils/test_utils.py
@@ -88,6 +88,8 @@ def get_config_data():
                 "sslmode": srv['sslmode'],
                 "tablespace_path": srv.get('tablespace_path', None)
             }
+            if 'db_type' in srv:
+                data['db_type'] = srv['db_type']
             server_data.append(data)
     return server_data
 
diff --git a/web/regression/test_config.json.in b/web/regression/test_config.json.in
index a373dee3..e69acdd5 100644
--- a/web/regression/test_config.json.in
+++ b/web/regression/test_config.json.in
@@ -21,7 +21,8 @@
       "maintenance_db": "postgres",
       "sslmode": "prefer",
       "tablespace_path": "",
-      "enabled": true
+      "enabled": true,
+      "db_type": "pg"
     }
   ],
   "server_update_data": [
@@ -29,4 +30,4 @@
       "comment": "This is test update comment"
     }
   ]
-}
\ No newline at end of file
+}

Reply via email to