diff --git a/docs/en_US/release_notes_3_7.rst b/docs/en_US/release_notes_3_7.rst index be1d9de40..7c6a4acb5 100644 --- a/docs/en_US/release_notes_3_7.rst +++ b/docs/en_US/release_notes_3_7.rst @@ -22,6 +22,7 @@ Bug fixes | `Bug #3599 `_ - Run Postfix in the container build so passwords can be reset etc. | `Bug #3619 `_ - Add titles to the code areas of the Query Tool and Debugger to ensure that panels can be re-docked within them. | `Bug #3711 `_ - Fix an encoding issue in the query tool. +| `Bug #3726 `_ - Include the WHERE clause on EXCLUDE constraints in RE-SQL. | `Bug #3757 `_ - Hide Radio buttons that should not be shown on the maintenance dialogue. | `Bug #3797 `_ - Prevent attempts to bulk-drop schema objects. | `Bug #3798 `_ - Ensure the browser toolbar buttons work in languages other than English. diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js index b8b46a630..797d848ae 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.js @@ -764,8 +764,8 @@ define('pgadmin.node.exclusion_constraint', [ } }, },{ - id: 'constraint', label: gettext('Constraint'), cell: 'string', - type: 'multiline', mode: ['create', 'edit'], editable: false, + id: 'indconstraint', label: gettext('Constraint'), cell: 'string', + type: 'multiline', mode: ['create', 'edit', 'properties'], editable: false, group: gettext('Definition'), disabled: function(m) { return ((_.has(m, 'handler') && !_.isUndefined(m.handler) && diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/test_exclusion_constraint_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/test_exclusion_constraint_add.py index 81ce53330..e029a8895 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/test_exclusion_constraint_add.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/tests/test_exclusion_constraint_add.py @@ -59,6 +59,7 @@ class ExclusionConstraintAddTestCase(BaseTestGenerator): "columns": [ {"column": "id", "sort_order": False, "nulls": False, "operator": "="}], + "indconstraint": "(1=2)", "include": ["name"] } response = self.tester.post( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql index 26fd2ddaa..1f4274b45 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/create.sql @@ -8,12 +8,12 @@ ALTER TABLE {{ conn|qtIdent(data.schema, data.table) }} WITH (FILLFACTOR={{data.fillfactor}}){% endif %}{% if data.spcname and data.spcname != "pg_default" %} - USING INDEX TABLESPACE {{ conn|qtIdent(data.spcname) }}{% endif %} + USING INDEX TABLESPACE {{ conn|qtIdent(data.spcname) }}{% endif %}{% if data.indconstraint %} + WHERE ({{data.indconstraint}}){% endif%} {% if data.condeferrable %} DEFERRABLE{% if data.condeferred %} - INITIALLY DEFERRED{% endif%} -{% endif%}{% if data.constraint %} WHERE ({{data.constraint}}){% endif%}; + INITIALLY DEFERRED{% endif%}{% endif%}; {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/properties.sql index 44abceed0..d700de19a 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/11_plus/properties.sql @@ -15,7 +15,8 @@ SELECT cls.oid, END AS comment, condeferrable, condeferred, - substring(array_to_string(cls.reloptions, ',') from 'fillfactor=([0-9]*)') AS fillfactor + substring(array_to_string(cls.reloptions, ',') from 'fillfactor=([0-9]*)') AS fillfactor, + pg_get_expr(idx.indpred, idx.indrelid) AS indconstraint FROM pg_index idx JOIN pg_class cls ON cls.oid=indexrelid JOIN pg_class tab ON tab.oid=indrelid diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql index 6d0bd1be7..2990446d5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/create.sql @@ -4,14 +4,15 @@ ALTER TABLE {{ conn|qtIdent(data.schema, data.table) }} {% endif %}{{ conn|qtIdent(col.column)}}{% if col.oper_class and col.oper_class != '' %} {{col.oper_class}}{% endif%}{% if col.order is defined and col.is_sort_nulls_applicable %}{% if col.order %} ASC{% else %} DESC{% endif %} NULLS{% endif %} {% if col.nulls_order is defined and col.is_sort_nulls_applicable %}{% if col.nulls_order %}FIRST {% else %}LAST {% endif %}{% endif %}WITH {{col.operator}}{% endfor %}){% if data.fillfactor %} WITH (FILLFACTOR={{data.fillfactor}}){% endif %}{% if data.spcname and data.spcname != "pg_default" %} - USING INDEX TABLESPACE {{ conn|qtIdent(data.spcname) }}{% endif %} + USING INDEX TABLESPACE {{ conn|qtIdent(data.spcname) }}{% endif %}{% if data.indconstraint %} + + WHERE ({{data.indconstraint}}){% endif%} {% if data.condeferrable %} DEFERRABLE{% if data.condeferred %} - INITIALLY DEFERRED{% endif%} -{% endif%}{% if data.constraint %} WHERE ({{data.constraint}}){% endif%}; + INITIALLY DEFERRED{% endif%}{% endif%}; {% if data.comment and data.name %} COMMENT ON CONSTRAINT {{ conn|qtIdent(data.name) }} ON {{ conn|qtIdent(data.schema, data.table) }} IS {{ data.comment|qtLiteral }}; -{% endif %} \ No newline at end of file +{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql index 3372b6955..919181b18 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/exclusion_constraint/sql/default/properties.sql @@ -15,7 +15,8 @@ SELECT cls.oid, END AS comment, condeferrable, condeferred, - substring(array_to_string(cls.reloptions, ',') from 'fillfactor=([0-9]*)') AS fillfactor + substring(array_to_string(cls.reloptions, ',') from 'fillfactor=([0-9]*)') AS fillfactor, + pg_get_expr(idx.indpred, idx.indrelid) AS indconstraint FROM pg_index idx JOIN pg_class cls ON cls.oid=indexrelid JOIN pg_class tab ON tab.oid=indrelid