From bd545fd5b25990afa4d894e0c4dcff5a1b823197 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Sat, 11 Dec 2021 22:10:28 +0530 Subject: [PATCH] 1) Fixed schema diff owner related issue. Fixes #6877 2) Fixed schema diff related some issues. Fixes #6957 --- docs/en_US/release_notes_6_3.rst | 2 ++ .../templates/event_triggers/sql/9.3_plus/update.sql | 3 +++ .../templates/foreign_servers/sql/default/update.sql | 3 +++ .../languages/templates/languages/sql/default/update.sql | 3 +++ .../collations/templates/collations/sql/default/update.sql | 2 ++ .../templates/domains/sql/9.2_plus/domain_schema_diff.sql | 4 ++-- .../sql/9.5_plus/foreign_table_schema_diff.sql | 4 ++-- .../servers/databases/schemas/tables/schema_diff_utils.py | 5 ++--- .../servers/databases/schemas/types/__init__.py | 3 ++- .../templates/types/pg/sql/default/type_schema_diff.sql | 4 ++-- web/pgadmin/tools/schema_diff/directory_compare.py | 2 +- 11 files changed, 24 insertions(+), 11 deletions(-) diff --git a/docs/en_US/release_notes_6_3.rst b/docs/en_US/release_notes_6_3.rst index 6b06fa0fb..431efc360 100644 --- a/docs/en_US/release_notes_6_3.rst +++ b/docs/en_US/release_notes_6_3.rst @@ -25,8 +25,10 @@ Bug fixes ********* | `Issue #6840 `_ - Fixed an issue where tooltip data are not displaying on downloaded graphical explain plan. +| `Issue #6877 `_ - Fixed schema diff owner related issue. | `Issue #6906 `_ - Fixed an issue where referenced table drop-down should be disabled in foreign key -> columns after one row is added. | `Issue #6955 `_ - Ensure that sort order should be maintained when renaming a server group. +| `Issue #6957 `_ - Fixed schema diff related some issues. | `Issue #6963 `_ - Ensure that the user should be allowed to set the schema of an extension while creating it. | `Issue #6978 `_ - Increase the width of the scrollbars. | `Issue #6986 `_ - Fixed an issue where the user can't debug function with timestamp parameter. diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/update.sql b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/update.sql index d8f6f6c5f..aff88f0d0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/templates/event_triggers/sql/9.3_plus/update.sql @@ -13,6 +13,9 @@ CREATE EVENT TRIGGER {{ conn|qtIdent(data.name) if data.name else conn|qtIdent(o WHEN TAG IN ({{ data.when if data.when else o_data.when }}) {% endif %} EXECUTE PROCEDURE {{ data.eventfunname if data.eventfunname else o_data.eventfunname }}(); + +ALTER EVENT TRIGGER {{ conn|qtIdent(o_data.name) }} + OWNER TO {{ conn|qtIdent(o_data.eventowner) }}; {% else %} {% if data.name and data.name != o_data.name %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql index 30770658d..1ac494aaa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/templates/foreign_servers/sql/default/update.sql @@ -29,6 +29,9 @@ CREATE SERVER {{ conn|qtIdent(o_data.name) }}{% if fsrvtype %} OPTIONS ({% for variable in o_data.fsrvoptions %}{% if loop.index != 1 %}, {% endif %} {{ conn|qtIdent(variable.fsrvoption) }} {{ variable.fsrvvalue|qtLiteral }}{% endfor %}){% endif %}; +ALTER SERVER {{ conn|qtIdent(o_data.name) }} + OWNER TO {{ conn|qtIdent(o_data.fsrvowner) }}; + {% else %} {# ============= Update foreign server name ============= #} {% if data.name != o_data.name %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/update.sql index 4de4844ff..f8b3f2579 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/languages/templates/languages/sql/default/update.sql @@ -22,6 +22,9 @@ CREATE{% if tmp_trusted %} TRUSTED{% endif %} PROCEDURAL LANGUAGE {{ conn|qtIden {% if tmp_lanval %} VALIDATOR {{ conn|qtIdent(tmp_lanval) }} {% endif %}; + +ALTER LANGUAGE {{ conn|qtIdent(o_data.name) }} + OWNER TO {{ conn|qtIdent(o_data.lanowner) }}; {% endif %} {# ============= Update language name ============= #} {% if data.name != o_data.name %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql index 25859f89b..e84f28f27 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/templates/collations/sql/default/update.sql @@ -17,6 +17,8 @@ CREATE COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }} FROM {{ data.copy_collation }}; {% endif %} +ALTER COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }} + OWNER TO {{ conn|qtIdent(o_data.owner) }}; {% endif %} {% if data.owner and data.owner != o_data.owner %} ALTER COLLATION {{ conn|qtIdent(o_data.schema, o_data.name) }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/domain_schema_diff.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/domain_schema_diff.sql index 00aa234ca..4669fec80 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/domain_schema_diff.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/templates/domains/sql/9.2_plus/domain_schema_diff.sql @@ -14,8 +14,8 @@ CREATE DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }} NOT NULL{% endif %}; -{% if data.owner %} -ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }} OWNER TO {{ conn|qtIdent(data.owner) }}; +{% if data.owner or o_data.owner %} +ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, o_data.name) }} OWNER TO {% if data.owner %}{{ conn|qtIdent(data.owner) }}{% else %}{{ conn|qtIdent(o_data.owner) }}{% endif %}; {% endif %} {% if data.constraints %} {% for c in data.constraints.added %}{% if c.conname and c.consrc %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/foreign_table_schema_diff.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/foreign_table_schema_diff.sql index ae221355e..21c66260c 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/foreign_table_schema_diff.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/foreign_table_schema_diff.sql @@ -39,10 +39,10 @@ CREATE FOREIGN TABLE {{ conn|qtIdent(o_data.basensp, o_data.name) }}( {% if o.option and o.value %} {% if loop.first %} OPTIONS ({% endif %}{% if not loop.first %}, {% endif %}{{o.option}} {{o.value|qtLiteral}}{% if loop.last %}){% endif %}{% endif %} {% endfor %}{% endif %}; -{% if data.owner %} +{% if data.owner or o_data.owner%} ALTER FOREIGN TABLE {{ conn|qtIdent(o_data.basensp, o_data.name) }} - OWNER TO {{ conn|qtIdent(data.owner) }}; + OWNER TO {% if data.owner %}{{ conn|qtIdent(data.owner) }}{% else %}{{ conn|qtIdent(o_data.owner) }}{% endif %}; {% endif -%} {% if constraints %} {% for c in constraints %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/schema_diff_utils.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/schema_diff_utils.py index e6adffe3b..7ccc35e87 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/schema_diff_utils.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/schema_diff_utils.py @@ -19,13 +19,12 @@ from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry class SchemaDiffTableCompare(SchemaDiffObjectCompare): - table_keys_to_ignore = ['oid', 'schema', 'edit_types', + table_keys_to_ignore = ['oid', 'schema', 'edit_types', 'attnum', 'col_type', 'references', 'reltuples', 'oid-2', 'rows_cnt', 'hastoasttable', 'relhassubclass', 'relacl_str', 'setting'] - column_keys_to_ignore = ['attnum', 'atttypid', 'edit_types', 'elemoid', - 'seqrelid'] + column_keys_to_ignore = ['atttypid', 'edit_types', 'elemoid', 'seqrelid'] constraint_keys_to_ignore = ['relname', 'nspname', 'parent_tbl', 'attrelid', 'adrelid', 'fknsp', 'confrelid', 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 fda11e255..81faa89b6 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 @@ -217,7 +217,8 @@ class TypeView(PGChildNodeView, DataTypeReader, SchemaDiffObjectCompare): }) keys_to_ignore = ['oid', 'typnamespace', 'typrelid', 'typarray', 'alias', - 'schema', 'oid-2', 'type_acl', 'rngcollation', 'attnum'] + 'schema', 'oid-2', 'type_acl', 'rngcollation', 'attnum', + 'typowner'] def check_precondition(f): """ diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql index f052dfaa5..5f0b5fccf 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/types/templates/types/pg/sql/default/type_schema_diff.sql @@ -62,11 +62,11 @@ CREATE TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }} ); {% endif %} {### Type Owner ###} -{% if data and data.typeowner %} +{% if data and (data.typeowner or o_data.typeowner)%} ALTER TYPE {% if o_data.schema %}{{ conn|qtIdent(o_data.schema, o_data.name) }}{% else %}{{ conn|qtIdent(o_data.name) }}{% endif %} - OWNER TO {{ conn|qtIdent(data.typeowner) }}; + OWNER TO {% if data.typeowner %}{{ conn|qtIdent(data.typeowner) }}{% elif o_data.typeowner %}{{ conn|qtIdent(o_data.typeowner) }}{% endif %}; {% endif %} {### Type Comments ###} {% if data and data.description %} diff --git a/web/pgadmin/tools/schema_diff/directory_compare.py b/web/pgadmin/tools/schema_diff/directory_compare.py index 8441cc81d..229dd1f42 100644 --- a/web/pgadmin/tools/schema_diff/directory_compare.py +++ b/web/pgadmin/tools/schema_diff/directory_compare.py @@ -390,7 +390,7 @@ def compare_dictionaries(**kwargs): if ignore_owner: owner_keys = ['owner', 'eventowner', 'funcowner', 'fdwowner', 'fsrvowner', 'lanowner', 'relowner', 'seqowner', - 'typowner', 'typeowner'] + 'typeowner'] ignore_keys = ignore_keys + owner_keys # Compare the values of duplicates keys.