diff --git a/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/10_plus/search.sql b/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/10_plus/search.sql index 1a472230b..0c5764ea0 100644 --- a/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/10_plus/search.sql +++ b/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/10_plus/search.sql @@ -330,6 +330,7 @@ FROM ( UNION {% endif %} +{% if not skip_search %} {% if all_obj or obj_type in ['subscription'] %} SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name, {{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info @@ -338,6 +339,7 @@ FROM ( {% if all_obj %} UNION {% endif %} +{% endif %} {% if all_obj or obj_type in ['language'] %} SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name, {{ show_node_prefs['language'] }} AS show_node, NULL AS other_info diff --git a/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/11_plus/search.sql b/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/11_plus/search.sql index 26fc238aa..2f48d1a23 100644 --- a/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/11_plus/search.sql +++ b/web/pgadmin/tools/search_objects/templates/search_objects/sql/pg/11_plus/search.sql @@ -346,7 +346,7 @@ FROM ( {% if all_obj %} UNION {% endif %} - +{% if not skip_search %} {% if all_obj or obj_type in ['subscription'] %} SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name, {{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info @@ -355,6 +355,7 @@ FROM ( {% if all_obj %} UNION {% endif %} +{% endif %} {% if all_obj or obj_type in ['language'] %} SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name, {{ show_node_prefs['language'] }} AS show_node, NULL AS other_info diff --git a/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/10_plus/search.sql b/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/10_plus/search.sql index b5fc01b51..2649e07ff 100644 --- a/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/10_plus/search.sql +++ b/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/10_plus/search.sql @@ -371,6 +371,7 @@ FROM ( UNION {% endif %} +{% if not skip_search %} {% if all_obj or obj_type in ['subscription'] %} SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name, {{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info @@ -379,6 +380,7 @@ FROM ( {% if all_obj %} UNION {% endif %} +{% endif %} {% if all_obj or obj_type in ['language'] %} SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name, diff --git a/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/12_plus/search.sql b/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/12_plus/search.sql index 1a6165836..6c3bb9954 100644 --- a/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/12_plus/search.sql +++ b/web/pgadmin/tools/search_objects/templates/search_objects/sql/ppas/12_plus/search.sql @@ -378,6 +378,7 @@ FROM ( UNION {% endif %} +{% if not skip_search %} {% if all_obj or obj_type in ['subscription'] %} SELECT 'subscription'::text AS obj_type, subname AS obj_name, ':subscription.'||pub.oid||':/' || subname AS obj_path, ''::text AS schema_name, {{ show_node_prefs['subscription'] }} AS show_node, NULL AS other_info @@ -386,6 +387,7 @@ FROM ( {% if all_obj %} UNION {% endif %} +{% endif %} {% if all_obj or obj_type in ['language'] %} SELECT 'language'::text AS obj_type, lanname AS obj_name, ':language.'||lan.oid||':/' || lanname AS obj_path, ''::text AS schema_name, diff --git a/web/pgadmin/tools/search_objects/utils.py b/web/pgadmin/tools/search_objects/utils.py index a7d556853..d1e70570b 100644 --- a/web/pgadmin/tools/search_objects/utils.py +++ b/web/pgadmin/tools/search_objects/utils.py @@ -89,6 +89,22 @@ class SearchObjectsHelper: **kwargs ) + def _check_for_permission(self, obj_type, conn): + """ + This function return whether user has permission to see subscription + :param obj_type: + :param conn: + :return: + """ + skip_search = False + + if obj_type == 'all': + status, error = conn.execute_dict('select * from pg_subscription') + if 'permission denied' in error: + skip_search = True + + return skip_search + def search(self, text, obj_type=None): conn = self.manager.connection(did=self.did) last_system_oid = (self.manager.db_info[self.did])['datlastsysoid'] \ @@ -99,6 +115,7 @@ class SearchObjectsHelper: node_labels = self.get_supported_types(skip_check=True) # escape the single quote from search text text = text.replace("'", "''") + skip_search = self._check_for_permission(obj_type, conn) # Column catalog_level has values as # N - Not a catalog schema @@ -109,7 +126,8 @@ class SearchObjectsHelper: search_text=text.lower(), obj_type=obj_type, show_system_objects=self.show_system_objects, show_node_prefs=show_node_prefs, _=gettext, - last_system_oid=last_system_oid) + last_system_oid=last_system_oid, + skip_search=skip_search) ) if not status: