From 473afd950c88c900d8bd5bdf00cb4ac245da0979 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Thu, 24 Mar 2022 15:59:02 +0530 Subject: [PATCH] Ensure objects depending on extensions are not displayed in Schema Diff. Fixes #7221 --- docs/en_US/release_notes_6_8.rst | 1 + .../servers/databases/casts/__init__.py | 5 +++-- .../casts/templates/casts/sql/default/nodes.sql | 4 ++++ .../servers/databases/event_triggers/__init__.py | 9 ++------- .../templates/event_triggers/sql/9.3_plus/nodes.sql | 4 ++++ .../servers/databases/extensions/__init__.py | 2 +- .../databases/foreign_data_wrappers/__init__.py | 3 ++- .../foreign_servers/__init__.py | 3 ++- .../foreign_servers/sql/9.3_plus/properties.sql | 4 ++++ .../foreign_servers/user_mappings/__init__.py | 5 +++-- .../user_mappings/sql/default/properties.sql | 4 ++++ .../sql/9.3_plus/properties.sql | 4 ++++ .../servers/databases/languages/__init__.py | 3 ++- .../templates/languages/sql/default/properties.sql | 4 ++++ .../servers/databases/publications/__init__.py | 11 +++-------- .../templates/publications/sql/default/nodes.sql | 7 ++++++- .../servers/databases/schemas/collations/__init__.py | 3 ++- .../templates/collations/sql/default/nodes.sql | 4 ++++ .../servers/databases/schemas/domains/__init__.py | 5 +++-- .../domains/templates/domains/sql/9.2_plus/node.sql | 4 ++++ .../databases/schemas/foreign_tables/__init__.py | 3 ++- .../templates/foreign_tables/sql/default/node.sql | 4 ++++ .../databases/schemas/fts_configurations/__init__.py | 5 +++-- .../fts_configurations/sql/default/nodes.sql | 4 ++++ .../databases/schemas/fts_dictionaries/__init__.py | 3 ++- .../templates/fts_dictionaries/sql/default/nodes.sql | 5 ++++- .../databases/schemas/fts_parsers/__init__.py | 5 +++-- .../templates/fts_parsers/sql/default/nodes.sql | 5 ++++- .../databases/schemas/fts_templates/__init__.py | 5 +++-- .../templates/fts_templates/sql/default/nodes.sql | 5 ++++- .../servers/databases/schemas/functions/__init__.py | 3 ++- .../templates/functions/pg/sql/11_plus/node.sql | 4 ++++ .../templates/functions/pg/sql/default/node.sql | 4 ++++ .../templates/functions/ppas/sql/11_plus/node.sql | 4 ++++ .../templates/functions/ppas/sql/default/node.sql | 4 ++++ .../templates/procedures/pg/sql/11_plus/node.sql | 4 ++++ .../templates/procedures/ppas/sql/11_plus/node.sql | 4 ++++ .../templates/procedures/ppas/sql/default/node.sql | 4 ++++ .../trigger_functions/pg/sql/11_plus/node.sql | 4 ++++ .../trigger_functions/pg/sql/9.2_plus/node.sql | 4 ++++ .../trigger_functions/pg/sql/9.5_plus/node.sql | 4 ++++ .../trigger_functions/ppas/sql/11_plus/node.sql | 4 ++++ .../trigger_functions/ppas/sql/9.2_plus/node.sql | 4 ++++ .../servers/databases/schemas/packages/__init__.py | 3 ++- .../templates/packages/ppas/12_plus/nodes.sql | 4 ++++ .../templates/packages/ppas/9.1_plus/nodes.sql | 4 ++++ .../templates/packages/ppas/9.2_plus/nodes.sql | 4 ++++ .../servers/databases/schemas/sequences/__init__.py | 3 ++- .../templates/sequences/sql/default/nodes.sql | 4 ++++ .../servers/databases/schemas/synonyms/__init__.py | 3 ++- .../templates/synonyms/sql/9.2_plus/properties.sql | 4 ++++ .../templates/synonyms/sql/9.5_plus/properties.sql | 4 ++++ .../templates/synonyms/sql/default/properties.sql | 4 ++++ .../schemas/tables/compound_triggers/__init__.py | 3 ++- .../databases/schemas/tables/indexes/__init__.py | 3 ++- .../databases/schemas/tables/partitions/__init__.py | 2 +- .../schemas/tables/row_security_policies/__init__.py | 3 ++- .../databases/schemas/tables/rules/__init__.py | 2 +- .../compound_triggers/sql/ppas/12_plus/nodes.sql | 4 ++++ .../tables/templates/indexes/sql/default/nodes.sql | 4 ++++ .../templates/partitions/sql/pg/10_plus/nodes.sql | 4 ++++ .../templates/partitions/sql/ppas/10_plus/nodes.sql | 4 ++++ .../row_security_policies/sql/9.5_plus/nodes.sql | 4 ++++ .../row_security_policies/sql/default/nodes.sql | 4 ++++ .../schemas/tables/templates/rules/sql/nodes.sql | 4 ++++ .../tables/templates/tables/sql/10_plus/nodes.sql | 4 ++++ .../tables/templates/tables/sql/9.1_plus/nodes.sql | 4 ++++ .../templates/triggers/sql/pg/9.1_plus/nodes.sql | 4 ++++ .../templates/triggers/sql/ppas/9.1_plus/nodes.sql | 4 ++++ .../databases/schemas/tables/triggers/__init__.py | 3 ++- .../servers/databases/schemas/tables/utils.py | 3 ++- .../servers/databases/schemas/types/__init__.py | 3 ++- .../types/templates/types/pg/sql/default/nodes.sql | 4 ++++ .../types/templates/types/ppas/sql/default/nodes.sql | 4 ++++ .../servers/databases/schemas/views/__init__.py | 6 ++++-- .../views/templates/mviews/pg/9.3_plus/sql/nodes.sql | 4 ++++ .../views/templates/mviews/pg/9.4_plus/sql/nodes.sql | 4 ++++ .../templates/mviews/ppas/9.3_plus/sql/nodes.sql | 4 ++++ .../views/templates/views/pg/9.1_plus/sql/nodes.sql | 4 ++++ .../views/templates/views/pg/9.2_plus/sql/nodes.sql | 4 ++++ .../views/templates/views/pg/9.3_plus/sql/nodes.sql | 4 ++++ .../views/templates/views/pg/9.4_plus/sql/nodes.sql | 4 ++++ .../templates/views/ppas/9.1_plus/sql/nodes.sql | 4 ++++ .../templates/views/ppas/9.2_plus/sql/nodes.sql | 4 ++++ .../templates/views/ppas/9.3_plus/sql/nodes.sql | 4 ++++ .../templates/views/ppas/9.4_plus/sql/nodes.sql | 4 ++++ .../servers/databases/subscriptions/__init__.py | 12 +++--------- .../templates/subscriptions/sql/default/nodes.sql | 8 ++++++-- .../servers/resource_groups/__init__.py | 8 ++++---- 89 files changed, 306 insertions(+), 67 deletions(-) diff --git a/docs/en_US/release_notes_6_8.rst b/docs/en_US/release_notes_6_8.rst index 9e2a40e5e..e77569462 100644 --- a/docs/en_US/release_notes_6_8.rst +++ b/docs/en_US/release_notes_6_8.rst @@ -21,6 +21,7 @@ Bug fixes | `Issue #7059 `_ - Fixed an issue where the error is shown on logout when the authentication source is oauth2. | `Issue #7216 `_ - Ensure that the values of certain fields are prettified in the statistics tab for collection nodes. + | `Issue #7221 `_ - Ensure objects depending on extensions are not displayed in Schema Diff. | `Issue #7238 `_ - Fixed an issue where foreign key is not removed even if the referred table is removed in ERD. | `Issue #7257 `_ - Support running the container under OpenShift with alternate UIDs. | `Issue #7261 `_ - Correct typo in the documentation. diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py index f65d82679..346de04ec 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/__init__.py @@ -774,9 +774,10 @@ class CastView(PGChildNodeView, SchemaDiffObjectCompare): last_system_oid = (self.manager.db_info[did])['datlastsysoid'] sql = render_template( - "/".join([self.template_path, 'nodes.sql']), + "/".join([self.template_path, self._NODES_SQL]), datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects + showsysobj=self.blueprint.show_system_objects, + schema_diff=True ) status, rset = self.conn.execute_2darray(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/nodes.sql index 47786433e..d1975f5a1 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/casts/templates/casts/sql/default/nodes.sql @@ -21,4 +21,8 @@ {% endif %} ca.oid > {{datlastsysoid}}::OID {% endif %} + {% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = ca.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END + {% endif %} ORDER BY st.typname, tt.typname diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py index 962d6054e..bd31a2a74 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/__init__.py @@ -853,14 +853,9 @@ class EventTriggerView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() - last_system_oid = 0 - if self.manager.db_info is not None and did in self.manager.db_info: - last_system_oid = (self.manager.db_info[did])['datlastsysoid'] - sql = render_template( - "/".join([self.template_path, 'nodes.sql']), - datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects + "/".join([self.template_path, self._NODES_SQL]), + schema_diff=True ) status, rset = self.conn.execute_2darray(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/nodes.sql index 88b9f3e7a..5b9de08d5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/nodes.sql @@ -3,4 +3,8 @@ FROM pg_catalog.pg_event_trigger e {% if etid %} WHERE e.oid={{etid}}::oid {% endif %} +{% if schema_diff %} +WHERE CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = e.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY e.evtname diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py index 72981a9f4..cb46d28bc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/__init__.py @@ -561,7 +561,7 @@ class ExtensionView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, - 'properties.sql'])) + self._PROPERTIES_SQL])) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py index f49312a3f..fdc303d1a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/__init__.py @@ -963,7 +963,8 @@ class ForeignDataWrapperView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, - 'properties.sql'])) + self._PROPERTIES_SQL]), + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py index df8b55bbc..b9a46be2b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/__init__.py @@ -924,7 +924,8 @@ class ForeignServerView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, - 'properties.sql'])) + self._PROPERTIES_SQL]), + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/9.3_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/9.3_plus/properties.sql index 86d129344..3fd87ac1e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/9.3_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/9.3_plus/properties.sql @@ -22,5 +22,9 @@ WHERE srvfdw={{fid}}::oid {% if fsid %} WHERE srv.oid={{fsid}}::oid {% endif %} +{% if schema_diff %} +WHERE CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = srv.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY srvname; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py index 38938503d..6c2cbfba4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/__init__.py @@ -548,7 +548,7 @@ class UserMappingView(PGChildNodeView, SchemaDiffObjectCompare): """ try: sql = render_template("/".join([self.template_path, - 'properties.sql']), + self._PROPERTIES_SQL]), umid=umid, conn=self.conn) status, res = self.conn.execute_dict(sql) if not status: @@ -905,7 +905,8 @@ class UserMappingView(PGChildNodeView, SchemaDiffObjectCompare): res = dict() sql = render_template("/".join([self.template_path, - 'properties.sql'])) + self._PROPERTIES_SQL]), + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/properties.sql index 5a9b364bc..31f88b5ea 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mappings/templates/user_mappings/sql/default/properties.sql @@ -14,5 +14,9 @@ ORDER BY 2; SELECT u.umid AS oid, u.usename AS name, u.srvid AS fsid, pg_catalog.array_to_string(u.umoptions, ',') AS umoptions, fs.srvfdw AS fdwid FROM pg_catalog.pg_user_mappings u LEFT JOIN pg_catalog.pg_foreign_server fs ON fs.oid = u.srvid +{% if schema_diff %} +WHERE CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = u.umid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY 2; {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/9.3_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/9.3_plus/properties.sql index 5e67e5ee9..1c21a5583 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/9.3_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/templates/foreign_data_wrappers/sql/9.3_plus/properties.sql @@ -23,4 +23,8 @@ WHERE fdw.oid={{fid}}::oid {% if fname %} WHERE fdw.fdwname={{ fname|qtLiteral }}::text {% endif %} +{% if schema_diff %} +WHERE CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = fdw.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY fdwname 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 0f2f10183..4e2011b56 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/__init__.py @@ -829,7 +829,8 @@ class LanguageView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() sql = render_template("/".join([self.template_path, - 'properties.sql'])) + self._PROPERTIES_SQL]), + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql index 004dd5fbb..664e2734a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/properties.sql @@ -20,4 +20,8 @@ WHERE lanispl IS TRUE {% if lanname %} AND lanname={{ lanname|qtLiteral }}::text {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = lan.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY lanname diff --git a/web/pgadmin/browser/server_groups/servers/databases/publications/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/publications/__init__.py index cd9947fa3..0366a9e47 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/publications/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/publications/__init__.py @@ -292,7 +292,7 @@ class PublicationView(PGChildNodeView, SchemaDiffObjectCompare): """ res = [] sql = render_template("/".join([self.template_path, - 'nodes.sql'])) + self._NODES_SQL])) status, result = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=result) @@ -900,14 +900,9 @@ class PublicationView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.version < 100000: return res - last_system_oid = 0 - if self.manager.db_info is not None and did in self.manager.db_info: - last_system_oid = (self.manager.db_info[did])['datlastsysoid'] - sql = render_template( - "/".join([self.template_path, 'nodes.sql']), - datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects + "/".join([self.template_path, self._NODES_SQL]), + schema_diff=True ) status, rset = self.conn.execute_2darray(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/publications/templates/publications/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/publications/templates/publications/sql/default/nodes.sql index efb153de7..14ea2e4fe 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/publications/templates/publications/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/publications/templates/publications/sql/default/nodes.sql @@ -1 +1,6 @@ -SELECT oid , pubname AS name FROM pg_catalog.pg_publication; +SELECT oid , pubname AS name +FROM pg_catalog.pg_publication +{% if schema_diff %} +WHERE CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py index 7e2be3c0e..81058cae0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/__init__.py @@ -799,7 +799,8 @@ class CollationView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/nodes.sql index faab5a135..6c561f2cc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/nodes.sql @@ -5,4 +5,8 @@ WHERE c.collnamespace = {{scid}}::oid {% elif coid %} WHERE c.oid = {{coid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.collname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py index ee444a455..4b2965ac2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py @@ -831,7 +831,7 @@ AND relkind != 'c'))""" data['is_schema_diff'] = True SQL = render_template( - "/".join([self.template_path, 'update.sql']), + "/".join([self.template_path, self._UPDATE_SQL]), data=data, o_data=old_data) return SQL, data @@ -935,7 +935,8 @@ AND relkind != 'c'))""" """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODE_SQL]), scid=scid) + self._NODE_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=rset) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/node.sql index 72ccfab1e..0ae54e860 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/node.sql @@ -13,5 +13,9 @@ WHERE {% elif doid %} WHERE d.oid = {{doid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = d.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY d.typname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py index f05413c51..fa63773ae 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py @@ -1542,7 +1542,8 @@ class ForeignTableView(PGChildNodeView, DataTypeReader, """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODE_SQL]), scid=scid) + self._NODE_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/node.sql index 72019f2c2..a49aea9d4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/default/node.sql @@ -15,4 +15,8 @@ WHERE {% elif foid %} c.oid = {{foid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py index c9d45bb15..de5f1f32d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/__init__.py @@ -943,7 +943,7 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): data = {'schema': scid} # Fetch schema name from schema oid sql = render_template("/".join([self.template_path, - 'schema.sql']), + self._SCHEMA_SQL]), data=data, conn=self.conn, ) @@ -1014,7 +1014,8 @@ class FtsConfigurationView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, fts_cfg = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/nodes.sql index 60f73e27e..143bcb331 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/templates/fts_configurations/sql/default/nodes.sql @@ -9,5 +9,9 @@ WHERE {% elif cfgid %} cfg.oid = {{cfgid}}::OID {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = cfg.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY name diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py index 08ac08dec..031cc6bf9 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/__init__.py @@ -922,7 +922,8 @@ class FtsDictionaryView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/nodes.sql index 4864faac2..636909633 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/templates/fts_dictionaries/sql/default/nodes.sql @@ -10,5 +10,8 @@ WHERE {% elif dcid %} dict.oid = {{dcid}}::OID {% endif %} - +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = dict.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY name diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py index 68a7d157d..047728bea 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/__init__.py @@ -888,7 +888,7 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): data = {'schema': scid} # Fetch schema name from schema oid sql = render_template("/".join([self.template_path, - 'schema.sql']), + self._SCHEMA_SQL]), data=data, conn=self.conn, ) @@ -959,7 +959,8 @@ class FtsParserView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/nodes.sql index 4bf279475..996b821cc 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parsers/templates/fts_parsers/sql/default/nodes.sql @@ -9,5 +9,8 @@ WHERE {% elif pid %} prs.oid = {{pid}}::OID {% endif %} - +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = prs.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY name diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py index 1800f0433..4ef8e14ef 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/__init__.py @@ -765,7 +765,7 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): data = {'schema': scid} # Fetch schema name from schema oid sql = render_template("/".join([self.template_path, - 'schema.sql']), + self._SCHEMA_SQL]), data=data, conn=self.conn, ) @@ -832,7 +832,8 @@ class FtsTemplateView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/nodes.sql index 7efa726ec..e07733783 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/templates/fts_templates/sql/default/nodes.sql @@ -8,5 +8,8 @@ WHERE {% elif tid %} tmpl.oid = {{tid}}::OID {% endif %} - +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = tmpl.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY name diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py index 0cd66d652..9126390a7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/__init__.py @@ -1960,7 +1960,8 @@ class FunctionView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): if not oid: sql = render_template("/".join([self.sql_template_path, - self._NODE_SQL]), scid=scid) + self._NODE_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql index 16110d664..91d857f38 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/11_plus/node.sql @@ -16,6 +16,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql index fc01ee107..dbcb6b356 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/pg/sql/default/node.sql @@ -16,6 +16,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql index 1150b814e..06d701d5c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/11_plus/node.sql @@ -17,6 +17,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql index f52757df2..40c4ce4ff 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/functions/ppas/sql/default/node.sql @@ -17,6 +17,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql index abbb9cfcd..7e263c3bd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/pg/sql/11_plus/node.sql @@ -23,6 +23,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql index abbb9cfcd..7e263c3bd 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/11_plus/node.sql @@ -23,6 +23,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql index 1932446db..55dec123b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/procedures/ppas/sql/default/node.sql @@ -24,6 +24,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname NOT IN ('trigger', 'event_trigger') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql index 7152522a1..23c307dd8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/11_plus/node.sql @@ -16,6 +16,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname IN ('trigger', 'event_trigger') AND lanname NOT IN ('edbspl', 'sql', 'internal') diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.2_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.2_plus/node.sql index c83249649..d81f2cd88 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.2_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.2_plus/node.sql @@ -17,6 +17,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND lanname NOT IN ('edbspl', 'sql', 'internal') ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.5_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.5_plus/node.sql index 97beabb94..9d4dbdfac 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.5_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/pg/sql/9.5_plus/node.sql @@ -16,6 +16,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname IN ('trigger', 'event_trigger') AND lanname NOT IN ('edbspl', 'sql', 'internal') diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql index 5d3081c23..9dc1d9f13 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/11_plus/node.sql @@ -16,6 +16,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname IN ('trigger', 'event_trigger') AND lanname != 'edbspl' ORDER BY diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/9.2_plus/node.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/9.2_plus/node.sql index 026c09899..85e48c3a7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/9.2_plus/node.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/templates/trigger_functions/ppas/sql/9.2_plus/node.sql @@ -16,6 +16,10 @@ WHERE {% endif %} {% if scid %} AND pronamespace = {{scid}}::oid +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pr.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} AND typname IN ('trigger', 'event_trigger') AND lanname NOT IN ('edbspl', 'sql', 'internal') diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py index a7fe806b1..dbc9ad7da 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/__init__.py @@ -830,7 +830,8 @@ class PackageView(PGChildNodeView, SchemaDiffObjectCompare): return res sql = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/12_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/12_plus/nodes.sql index b9535f085..cbb1e37b4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/12_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/12_plus/nodes.sql @@ -6,6 +6,10 @@ WHERE nspparent = {{scid}}::oid {% if pkgid %} AND nsp.oid = {{pkgid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = nsp.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} AND nspobjecttype = 0 AND nspcompoundtrigger = false ORDER BY nspname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/nodes.sql index a148c1b0f..70282322a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.1_plus/nodes.sql @@ -6,4 +6,8 @@ WHERE nspparent = {{scid}}::oid {% if pkgid %} AND nsp.oid = {{pkgid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = nsp.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY nspname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/nodes.sql index 2ea98bfdb..859e42690 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/templates/packages/ppas/9.2_plus/nodes.sql @@ -6,5 +6,9 @@ WHERE nspparent = {{scid}}::oid {% if pkgid %} AND nsp.oid = {{pkgid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = nsp.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} AND nspobjecttype = 0 ORDER BY nspname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py index b45b76828..4483585d2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/__init__.py @@ -937,7 +937,8 @@ class SequenceView(PGChildNodeView, SchemaDiffObjectCompare): """ res = dict() sql = render_template("/".join([self.template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql index 4e61328ba..3ebd66d02 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/templates/sequences/sql/default/nodes.sql @@ -11,4 +11,8 @@ WHERE {% if seid %} AND cl.oid = {{seid|qtLiteral}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = cl.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY relname diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py index 709bfc6f1..cc08f6ec0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/__init__.py @@ -758,7 +758,8 @@ class SynonymView(PGChildNodeView, SchemaDiffObjectCompare): return res SQL = render_template("/".join([self.template_path, - self._PROPERTIES_SQL]), scid=scid) + self._PROPERTIES_SQL]), scid=scid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql index 7f795a18e..e4167a0af 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.2_plus/properties.sql @@ -27,4 +27,8 @@ FROM pg_catalog.pg_synonym s JOIN pg_catalog.pg_namespace ns ON s.synnamespace {% if syid %} AND s.oid={{syid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = s.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY synname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql index a10f7daae..ef7444d4d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/9.5_plus/properties.sql @@ -27,4 +27,8 @@ FROM pg_catalog.pg_synonym s JOIN pg_catalog.pg_namespace ns ON s.synnamespace {% if syid %} AND s.oid={{syid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = s.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY synname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql index 4a2df8e81..41cc20f22 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/synonyms/templates/synonyms/sql/default/properties.sql @@ -15,4 +15,8 @@ FROM pg_catalog.pg_synonym s JOIN pg_catalog.pg_namespace ns ON s.synnamespace {% if syid %} AND s.oid={{syid}}::oid {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = s.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY synname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py index d837aca5c..3d0f01f03 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/compound_triggers/__init__.py @@ -973,7 +973,8 @@ class CompoundTriggerView(PGChildNodeView, SchemaDiffObjectCompare): res = data else: SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), tid=tid) + self._NODES_SQL]), tid=tid, + schema_diff=True) status, triggers = self.conn.execute_2darray(SQL) if not status: current_app.logger.error(triggers) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py index 849479688..69871998b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/__init__.py @@ -1028,7 +1028,8 @@ class IndexesView(PGChildNodeView, SchemaDiffObjectCompare): if not oid: SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), tid=tid) + self._NODES_SQL]), tid=tid, + schema_diff=True) status, indexes = self.conn.execute_2darray(SQL) if not status: current_app.logger.error(indexes) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py index a3e40ef75..99a7fe7a6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/partitions/__init__.py @@ -420,7 +420,7 @@ class PartitionsView(BaseTableView, DataTypeReader, SchemaDiffObjectCompare): else: SQL = render_template( "/".join([self.partition_template_path, self._NODES_SQL]), - scid=scid, tid=tid + scid=scid, tid=tid, schema_diff=True ) status, partitions = self.conn.execute_2darray(SQL) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py index 3d3f32f2b..ed9ddb6e0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/row_security_policies/__init__.py @@ -660,7 +660,8 @@ class RowSecurityView(PGChildNodeView): if not oid: SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), tid=tid) + self._NODES_SQL]), tid=tid, + schema_diff=True) status, policies = self.conn.execute_2darray(SQL) if not status: current_app.logger.error(policies) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py index 5f584d404..9022cbd5e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/__init__.py @@ -644,7 +644,7 @@ class RuleView(PGChildNodeView, SchemaDiffObjectCompare): else: SQL = render_template("/".join([self.template_path, self._NODES_SQL]), - tid=tid) + tid=tid, schema_diff=True) status, rules = self.conn.execute_2darray(SQL) if not status: current_app.logger.error(rules) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/nodes.sql index e92ade3df..fa728fcb8 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/compound_triggers/sql/ppas/12_plus/nodes.sql @@ -6,5 +6,9 @@ FROM pg_catalog.pg_trigger t AND tgpackageoid != 0 {% if trid %} AND t.oid = {{trid}}::OID +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = t.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} ORDER BY tgname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/nodes.sql index c1f8cfe5e..f699526e6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/indexes/sql/default/nodes.sql @@ -12,5 +12,9 @@ WHERE indrelid = {{tid}}::OID AND conname is NULL {% if idx %} AND cls.oid = {{ idx }}::OID +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = cls.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} ORDER BY cls.relname diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/10_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/10_plus/nodes.sql index bd9006fa4..54290fad6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/10_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/pg/10_plus/nodes.sql @@ -41,4 +41,8 @@ FROM LEFT JOIN pg_catalog.pg_type typ ON rel.reloftype=typ.oid WHERE rel.relispartition {% if ptid %} AND rel.oid = {{ ptid }}::OID {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = rel.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY rel.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/10_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/10_plus/nodes.sql index bd9006fa4..54290fad6 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/10_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/partitions/sql/ppas/10_plus/nodes.sql @@ -41,4 +41,8 @@ FROM LEFT JOIN pg_catalog.pg_type typ ON rel.reloftype=typ.oid WHERE rel.relispartition {% if ptid %} AND rel.oid = {{ ptid }}::OID {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = rel.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY rel.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/9.5_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/9.5_plus/nodes.sql index 47cd9a140..8aeba94ae 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/9.5_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/9.5_plus/nodes.sql @@ -9,5 +9,9 @@ WHERE {% elif plid %} pl.oid = {{ plid }} {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pl.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY pl.polname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/nodes.sql index 47cd9a140..8aeba94ae 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/row_security_policies/sql/default/nodes.sql @@ -9,5 +9,9 @@ WHERE {% elif plid %} pl.oid = {{ plid }} {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = pl.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY pl.polname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/nodes.sql index 343b40bcf..7092aba24 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/rules/sql/nodes.sql @@ -12,5 +12,9 @@ WHERE {% elif rid %} rw.oid = {{ rid }} {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = rw.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY rw.rulename diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/nodes.sql index ef0d379c3..75ffacabf 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/10_plus/nodes.sql @@ -8,4 +8,8 @@ FROM pg_catalog.pg_class rel WHERE rel.relkind IN ('r','s','t','p') AND rel.relnamespace = {{ scid }}::oid AND NOT rel.relispartition {% if tid %} AND rel.oid = {{tid}}::OID {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = rel.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY rel.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.1_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.1_plus/nodes.sql index 54228fc4c..6b8e0d8e3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.1_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/9.1_plus/nodes.sql @@ -6,4 +6,8 @@ SELECT rel.oid, rel.relname AS name, FROM pg_catalog.pg_class rel WHERE rel.relkind IN ('r','s','t') AND rel.relnamespace = {{ scid }}::oid {% if tid %} AND rel.oid = {{tid}}::OID {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = rel.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY rel.relname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/9.1_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/9.1_plus/nodes.sql index 908411995..20e9e6aef 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/9.1_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/pg/9.1_plus/nodes.sql @@ -4,5 +4,9 @@ FROM pg_catalog.pg_trigger t AND tgrelid = {{tid}}::OID {% if trid %} AND t.oid = {{trid}}::OID +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = t.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} ORDER BY tgname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/9.1_plus/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/9.1_plus/nodes.sql index 908411995..20e9e6aef 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/9.1_plus/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/triggers/sql/ppas/9.1_plus/nodes.sql @@ -4,5 +4,9 @@ FROM pg_catalog.pg_trigger t AND tgrelid = {{tid}}::OID {% if trid %} AND t.oid = {{trid}}::OID +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = t.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END {% endif %} ORDER BY tgname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py index 18372771e..bb09fe1e0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/__init__.py @@ -1027,7 +1027,8 @@ class TriggerView(PGChildNodeView, SchemaDiffObjectCompare): res = data else: SQL = render_template("/".join([self.template_path, - self._NODES_SQL]), tid=tid) + self._NODES_SQL]), tid=tid, + schema_diff=True) status, triggers = self.conn.execute_2darray(SQL) if not status: current_app.logger.error(triggers) 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 efea7911d..c5c7114c6 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 @@ -511,7 +511,8 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): else: res = dict() sql = render_template("/".join([self.table_template_path, - self._NODES_SQL]), scid=scid) + self._NODES_SQL]), scid=scid, + schema_diff=True) status, tables = self.conn.execute_2darray(sql) if not status: return False, tables 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 ab114123f..d5bad3d67 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 @@ -1551,7 +1551,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): res = dict() SQL = render_template("/".join([self.template_path, self._NODES_SQL]), - scid=scid, datlastsysoid=self.datlastsysoid) + scid=scid, datlastsysoid=self.datlastsysoid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/nodes.sql index 5cab7ef1d..bc7eb8276 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/nodes.sql @@ -10,4 +10,8 @@ WHERE t.typtype != 'd' AND t.typname NOT LIKE E'\\_%' AND t.typnamespace = {{sci {% if not show_system_objects %} AND ct.oid is NULL {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = t.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY t.typname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/nodes.sql index 5cab7ef1d..bc7eb8276 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/ppas/sql/default/nodes.sql @@ -10,4 +10,8 @@ WHERE t.typtype != 'd' AND t.typname NOT LIKE E'\\_%' AND t.typnamespace = {{sci {% if not show_system_objects %} AND ct.oid is NULL {% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = t.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY t.typname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py index ffd7d3463..c7519b82b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py @@ -1653,7 +1653,8 @@ class ViewNode(PGChildNodeView, VacuumSettings, SchemaDiffObjectCompare): if not oid: SQL = render_template("/".join( [self.template_path, self._SQL_PREFIX + self._NODES_SQL]), - did=did, scid=scid, datlastsysoid=self.datlastsysoid) + did=did, scid=scid, datlastsysoid=self.datlastsysoid, + schema_diff=True) status, views = self.conn.execute_2darray(SQL) if not status: current_app.logger.error(views) @@ -2286,7 +2287,8 @@ class MViewNode(ViewNode, VacuumSettings): res = dict() SQL = render_template("/".join( [self.template_path, self._SQL_PREFIX + self._NODES_SQL]), - did=did, scid=scid, datlastsysoid=self.datlastsysoid) + did=did, scid=scid, datlastsysoid=self.datlastsysoid, + schema_diff=True) status, rset = self.conn.execute_2darray(SQL) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.3_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.3_plus/sql/nodes.sql index d74d1f1a5..2244f67b0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.3_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.3_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/nodes.sql index d74d1f1a5..2244f67b0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/pg/9.4_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/nodes.sql index d74d1f1a5..2244f67b0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/mviews/ppas/9.3_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.1_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.2_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.3_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/pg/9.4_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.1_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.2_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.3_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/nodes.sql index 0917d40dc..d0a61515f 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/templates/views/ppas/9.4_plus/sql/nodes.sql @@ -8,6 +8,10 @@ WHERE AND c.oid = {{vid}}::oid {% elif scid %} AND c.relnamespace = {{scid}}::oid +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = c.oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} ORDER BY c.relname {% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py index e2d942d99..09c8127ac 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/__init__.py @@ -280,7 +280,7 @@ class SubscriptionView(PGChildNodeView, SchemaDiffObjectCompare): """ res = [] sql = render_template("/".join([self.template_path, - 'nodes.sql']), did=did) + self._NODES_SQL]), did=did) status, result = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=result) @@ -883,15 +883,9 @@ class SubscriptionView(PGChildNodeView, SchemaDiffObjectCompare): if self.manager.version < 100000: return res - last_system_oid = 0 - if self.manager.db_info is not None and did in self.manager.db_info: - last_system_oid = (self.manager.db_info[did])['datlastsysoid'] - sql = render_template( - "/".join([self.template_path, 'nodes.sql']), - datlastsysoid=last_system_oid, - showsysobj=self.blueprint.show_system_objects, - did=did + "/".join([self.template_path, self._NODES_SQL]), + did=did, schema_diff=True ) status, rset = self.conn.execute_2darray(sql) if not status: diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/templates/subscriptions/sql/default/nodes.sql b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/templates/subscriptions/sql/default/nodes.sql index 82972f2bc..ccda2158e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/templates/subscriptions/sql/default/nodes.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/templates/subscriptions/sql/default/nodes.sql @@ -3,5 +3,9 @@ WHERE {% if subid %} sub.oid = {{ subid }}; {% else %} - sub.subdbid = {{ did }}; -{% endif %}; + sub.subdbid = {{ did }} +{% endif %} +{% if schema_diff %} + AND CASE WHEN (SELECT COUNT(*) FROM pg_catalog.pg_depend + WHERE objid = oid AND deptype = 'e') > 0 THEN FALSE ELSE TRUE END +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py index 1e0aea078..cdb531366 100644 --- a/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/resource_groups/__init__.py @@ -276,7 +276,7 @@ class ResourceGroupView(NodeView): sid: Server ID """ - sql = render_template("/".join([self.sql_path, 'nodes.sql']), + sql = render_template("/".join([self.sql_path, self._NODES_SQL]), rgid=rg_id) status, result = self.conn.execute_2darray(sql) if not status: @@ -308,7 +308,7 @@ class ResourceGroupView(NodeView): sid: Server ID """ res = [] - sql = render_template("/".join([self.sql_path, 'nodes.sql'])) + sql = render_template("/".join([self.sql_path, self._NODES_SQL])) status, result = self.conn.execute_2darray(sql) if not status: return internal_server_error(errormsg=result) @@ -549,7 +549,7 @@ class ResourceGroupView(NodeView): for rg_id in data['ids']: # Get name for resource group from rg_id sql = render_template( - "/".join([self.sql_path, 'delete.sql']), + "/".join([self.sql_path, self._DELETE_SQL]), rgid=rg_id, conn=self.conn ) status, rgname = self.conn.execute_scalar(sql) @@ -570,7 +570,7 @@ class ResourceGroupView(NodeView): # drop resource group sql = render_template( - "/".join([self.sql_path, 'delete.sql']), + "/".join([self.sql_path, self._DELETE_SQL]), rgname=rgname, conn=self.conn ) status, res = self.conn.execute_scalar(sql)