Added Schema Diff tool to compare two schemas and generate the difference script.
Currently supported objects are Table, View, Materialized View, Function and Procedure. Backend comparison of two schemas implemented by: Akshay Joshi Fixes #3452. Branch ------ master Details ------- https://git.postgresql.org/gitweb?p=pgadmin4.git;a=commitdiff;h=45f2e35a99ee691d67c45982211238b8ad40d7de Author: Khushboo Vashi <khushboo.va...@enterprisedb.com> Modified Files -------------- docs/en_US/release_notes_4_18.rst | 1 + .../browser/server_groups/servers/__init__.py | 2 + .../server_groups/servers/databases/__init__.py | 3 + .../servers/databases/schemas/__init__.py | 2 + .../databases/schemas/collations/__init__.py | 65 +- .../servers/databases/schemas/domains/__init__.py | 79 +- .../domains/sql/9.2_plus/get_constraints.sql | 2 +- .../domains/sql/default/get_constraints.sql | 2 +- .../databases/schemas/foreign_tables/__init__.py | 116 +-- .../schemas/fts_configurations/__init__.py | 59 +- .../databases/schemas/fts_dictionaries/__init__.py | 59 +- .../databases/schemas/fts_parsers/__init__.py | 69 +- .../databases/schemas/fts_templates/__init__.py | 70 +- .../databases/schemas/functions/__init__.py | 92 ++- .../servers/databases/schemas/packages/__init__.py | 105 ++- .../schemas/packages/edbfuncs/__init__.py | 5 +- .../databases/schemas/packages/edbvars/__init__.py | 5 +- .../databases/schemas/sequences/__init__.py | 61 +- .../servers/databases/schemas/synonyms/__init__.py | 64 +- .../servers/databases/schemas/tables/__init__.py | 192 ++++- .../databases/schemas/tables/columns/__init__.py | 1 + .../schemas/tables/compound_triggers/__init__.py | 142 +++- .../tables/constraints/index_constraint/utils.py | 4 +- .../databases/schemas/tables/indexes/__init__.py | 204 ++++- .../databases/schemas/tables/indexes/utils.py | 15 +- .../schemas/tables/partitions/__init__.py | 183 ++++- .../databases/schemas/tables/rules/__init__.py | 127 +++- .../databases/schemas/tables/schema_diff_utils.py | 507 +++++++++++++ .../templates/columns/sql/10_plus/create.sql | 2 +- .../templates/columns/sql/10_plus/update.sql | 12 +- .../templates/columns/sql/12_plus/create.sql | 2 +- .../templates/columns/sql/9.2_plus/update.sql | 10 +- .../templates/columns/sql/default/create.sql | 2 +- .../templates/columns/sql/default/update.sql | 14 +- .../templates/partitions/sql/pg/10_plus/create.sql | 1 + .../templates/tables/sql/10_plus/schema_diff.sql | 14 + .../databases/schemas/tables/triggers/__init__.py | 116 ++- .../databases/schemas/tables/triggers/utils.py | 17 +- .../servers/databases/schemas/tables/utils.py | 113 ++- .../servers/databases/schemas/types/__init__.py | 61 +- .../servers/databases/schemas/utils.py | 148 ++-- .../servers/databases/schemas/views/__init__.py | 227 +++++- .../templates/views/pg/9.2_plus/sql/update.sql | 2 +- .../templates/views/pg/9.3_plus/sql/update.sql | 2 +- .../templates/views/pg/9.4_plus/sql/update.sql | 2 +- .../databases/templates/databases/css/database.css | 5 + web/pgadmin/static/bundle/slickgrid.js | 3 + web/pgadmin/static/js/backform.pgadmin.js | 9 +- .../static/scss/resources/_default.variables.scss | 7 + .../tools/datagrid/static/js/show_query_tool.js | 19 + .../tools/datagrid/templates/datagrid/index.html | 9 + web/pgadmin/tools/schema_diff/__init__.py | 601 +++++++++++++++ web/pgadmin/tools/schema_diff/compare.py | 212 ++++++ web/pgadmin/tools/schema_diff/directory_compare.py | 279 +++++++ web/pgadmin/tools/schema_diff/model.py | 76 ++ web/pgadmin/tools/schema_diff/node_registry.py | 61 ++ .../tools/schema_diff/static/css/schema_diff.css | 189 +++++ .../tools/schema_diff/static/img/compare-white.svg | 15 + .../tools/schema_diff/static/img/compare.svg | 15 + .../tools/schema_diff/static/img/script.svg | 19 + .../schema_diff/static/js/schema_diff.backform.js | 500 ++++++++++++ .../tools/schema_diff/static/js/schema_diff.js | 145 ++++ .../schema_diff/static/js/schema_diff_hook.js | 38 + .../tools/schema_diff/static/js/schema_diff_ui.js | 845 +++++++++++++++++++++ .../schema_diff/static/scss/_schema_diff.scss | 85 +++ .../schema_diff/templates/schema_diff/index.html | 31 + web/pgadmin/tools/schema_diff/tests/__init__.py | 0 .../tools/schema_diff/tests/pg/10_plus/source.sql | 440 +++++++++++ .../tools/schema_diff/tests/pg/10_plus/target.sql | 429 +++++++++++ .../tools/schema_diff/tests/pg/11_plus/source.sql | 439 +++++++++++ .../tools/schema_diff/tests/pg/11_plus/target.sql | 428 +++++++++++ .../tools/schema_diff/tests/pg/12_plus/source.sql | 440 +++++++++++ .../tools/schema_diff/tests/pg/12_plus/target.sql | 417 ++++++++++ .../tools/schema_diff/tests/pg/9.2_plus/source.sql | 311 ++++++++ .../tools/schema_diff/tests/pg/9.2_plus/target.sql | 337 ++++++++ .../schema_diff/tests/ppas/10_plus/source.sql | 376 +++++++++ .../schema_diff/tests/ppas/10_plus/target.sql | 364 +++++++++ .../schema_diff/tests/ppas/9.2_plus/source.sql | 311 ++++++++ .../schema_diff/tests/ppas/9.2_plus/target.sql | 337 ++++++++ .../schema_diff/tests/test_schema_diff_comp.py | 204 +++++ web/pgadmin/tools/schema_diff/tests/utils.py | 103 +++ web/pgadmin/tools/sqleditor/static/js/sqleditor.js | 8 + .../sqleditor/sql/default/primary_keys.sql | 2 +- .../tools/sqleditor/utils/get_column_types.py | 11 +- web/pgadmin/utils/csrf.py | 2 + web/webpack.config.js | 4 +- web/webpack.shim.js | 2 + 87 files changed, 10717 insertions(+), 392 deletions(-)