From 542be2b2d47f7fe991f9182dbc78f964278773d8 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Mon, 5 Oct 2020 14:35:48 +0530 Subject: [PATCH] Fixed issues where the 'pg_pltemplate' system catalog is removed from PG 13 and it gives error while creating the language. --- .../servers/databases/languages/__init__.py | 15 ++++++++++----- .../databases/languages/static/js/language.js | 19 +++++++++++++++++++ .../languages/tests/language_test_data.json | 2 ++ ...test_language_get_function_and_template.py | 4 ++++ 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py index 4b904e502..7bea0b4cc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py @@ -690,12 +690,17 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): sid: Server ID did: Database ID """ - sql = render_template("/".join([self.template_path, 'templates.sql'])) - status, result = self.conn.execute_dict(sql) - if not status: - return internal_server_error(errormsg=result) + data = [] + if self.manager.version < 130000: + sql = render_template("/".join( + [self.template_path, 'templates.sql'])) + status, result = self.conn.execute_dict(sql) + if not status: + return internal_server_error(errormsg=result) + data = result['rows'] + return make_json_response( - data=result['rows'], + data=data, status=200 ) diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js b/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js index b9f6b4e4a..b7b68db90 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/static/js/language.js @@ -119,6 +119,25 @@ define('pgadmin.node.language', [ return res; }, + visible: function() { + if(!_.isUndefined(this.node_info) && !_.isUndefined(this.node_info.server) + && !_.isUndefined(this.node_info.server.version) && + this.node_info.server.version < 130000) { + return true; + } + return false; + }, + }, { + id: 'name', label: gettext('Name'), type: 'text', + mode: ['properties', 'create', 'edit'], + visible: function() { + if(!_.isUndefined(this.node_info) && !_.isUndefined(this.node_info.server) + && !_.isUndefined(this.node_info.server.version) && + this.node_info.server.version >= 130000) { + return true; + } + return false; + }, },{ id: 'oid', label: gettext('OID'), cell: 'string', mode: ['properties'], type: 'text', diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json index 14aa7bf91..3e928dec1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/language_test_data.json @@ -354,6 +354,8 @@ "name": "Error while getting language template", "url": "/browser/language/get_templates/", "is_positive_test": false, + "server_max_version": 129999, + "skip_msg": "Language templates are not supported in PG/EPAS 13.0 and above.", "expected_data": { "status_code": 500, "message": "Error while getting language templates" diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get_function_and_template.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get_function_and_template.py index 6b06a7bbb..507c2bedf 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get_function_and_template.py +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get_function_and_template.py @@ -38,6 +38,10 @@ class LanguagesGetFunctionAndTemplateTestCase(BaseTestGenerator): self.language_id = language_utils.create_language(self.server, self.db_name, self.lang_name) + if hasattr(self, 'server_max_version'): + if self.server_information['server_version'] > \ + self.server_max_version: + self.skipTest(self.skip_msg) def runTest(self): """This function will get the language under test database."""