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
+}