diff --git a/docs/en_US/release_notes_4_13.rst b/docs/en_US/release_notes_4_13.rst index 56133bf69..5b9324510 100644 --- a/docs/en_US/release_notes_4_13.rst +++ b/docs/en_US/release_notes_4_13.rst @@ -26,6 +26,7 @@ Housekeeping | `Issue #4618 `_ - Add Reverse Engineered and Modified SQL tests for Foreign Tables. | `Issue #4619 `_ - Add Reverse Engineered and Modified SQL tests for FTS Templates. | `Issue #4621 `_ - Add Reverse Engineered and Modified SQL tests for Indexes. +| `Issue #4624 `_ - Add Reverse Engineered and Modified SQL tests for Primary Keys. | `Issue #4627 `_ - Add Reverse Engineered and Modified SQL tests for User Mappings. | `Issue #4690 `_ - Add Modified SQL tests for Resource Group. @@ -57,4 +58,5 @@ Bug fixes | `Issue #4703 `_ - Fix reversed engineered SQL for btree Index when provided sort order and NULLs. | `Issue #4726 `_ - Ensure sequence with negative value should be created. | `Issue #4727 `_ - Fix issue where EXEC script doesn't write the complete script for Procedures. -| `Issue #4736 `_ - Fix query tool and view data issue with the Italian language. \ No newline at end of file +| `Issue #4736 `_ - Fix query tool and view data issue with the Italian language. +| `Issue #4742 `_ - Ensure Primary Key should be created with Index. \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/Default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/Default/test.json index 9f99ba790..6e229fd91 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/Default/test.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/tests/Default/test.json @@ -51,6 +51,13 @@ "data": { "name": "Chk_$%{}[]()&*^!@\"'`\\/#a" } + }, { + "type": "delete", + "name": "Drop Table for Check Constraint", + "endpoint": "NODE-table.delete_id", + "data": { + "name": "tableforcon" + } } ] } diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py index fb733ad67..c45f243c0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/__init__.py @@ -571,7 +571,8 @@ class IndexConstraintView(PGChildNodeView): for arg in required_args: if isinstance(arg, list): for param in arg: - if param in data and is_key_list(param, data): + if param in data and (param != 'columns' or + is_key_list(param, data)): break else: return make_json_response( diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js index 7d363c204..292118650 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.js @@ -533,14 +533,11 @@ define('pgadmin.node.primary_key', [ }, },{ id: 'index', label: gettext('Index'), + mode: ['create'], type: 'text', group: gettext('Definition'), control: Backform.NodeListByNameControl.extend({ initialize:function() { - if (_.isUndefined(this.model.top)) { - Backform.NodeListByNameControl.prototype.initialize.apply(this,arguments); - } else { - Backform.Control.prototype.initialize.apply(this,arguments); - } + Backform.NodeListByNameControl.prototype.initialize.apply(this, arguments); }, }), select2:{allowClear:true}, node: 'index', diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_index_constraint.sql new file mode 100644 index 000000000..dc3cf3dab --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_index_constraint.sql @@ -0,0 +1,13 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/#a + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" PRIMARY KEY (col1) + INCLUDE (col2) + WITH (FILLFACTOR=90) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_index_constraint_with_index.sql new file mode 100644 index 000000000..d5c2dc067 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_index_constraint_with_index.sql @@ -0,0 +1,11 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/#a + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" PRIMARY KEY (col1) + WITH (FILLFACTOR=90); + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_index_constraint.sql new file mode 100644 index 000000000..7031f24f9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_index_constraint.sql @@ -0,0 +1,6 @@ +ALTER TABLE testschema.tableforindexcon + RENAME CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" TO "Pk_$%{}[]()&*^!@""'`\/#a"; +ALTER INDEX testschema."Pk_$%{}[]()&*^!@""'`\/#a" + SET (FILLFACTOR=90); +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_index_constraint_with_index.sql new file mode 100644 index 000000000..7031f24f9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_index_constraint_with_index.sql @@ -0,0 +1,6 @@ +ALTER TABLE testschema.tableforindexcon + RENAME CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" TO "Pk_$%{}[]()&*^!@""'`\/#a"; +ALTER INDEX testschema."Pk_$%{}[]()&*^!@""'`\/#a" + SET (FILLFACTOR=90); +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_reset_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_reset_fillfactor.sql new file mode 100644 index 000000000..72bc1bb22 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_msql_reset_fillfactor.sql @@ -0,0 +1,2 @@ +ALTER INDEX testschema."Pk_$%{}[]()&*^!@""'`\/#a" + RESET (FILLFACTOR); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_reset_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_reset_fillfactor.sql new file mode 100644 index 000000000..ff37018cb --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/alter_reset_fillfactor.sql @@ -0,0 +1,12 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/#a + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" PRIMARY KEY (col1) + INCLUDE (col2) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_index_constraint.sql new file mode 100644 index 000000000..2fcf106ae --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_index_constraint.sql @@ -0,0 +1,12 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/# + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + INCLUDE (col2) + WITH (FILLFACTOR=20) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_index_constraint_with_index.sql new file mode 100644 index 000000000..70aa78d4b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_index_constraint_with_index.sql @@ -0,0 +1,10 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/# + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + WITH (FILLFACTOR=20); + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_msql_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_msql_index_constraint.sql new file mode 100644 index 000000000..433a42643 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_msql_index_constraint.sql @@ -0,0 +1,8 @@ +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + INCLUDE (col2) + WITH (FILLFACTOR=20) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_msql_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_msql_index_constraint_with_index.sql new file mode 100644 index 000000000..e1e943668 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/create_msql_index_constraint_with_index.sql @@ -0,0 +1,6 @@ +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + WITH (FILLFACTOR=20); + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/test.json new file mode 100644 index 000000000..6973f7915 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/11_plus/test.json @@ -0,0 +1,129 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create Table", + "endpoint": "NODE-table.obj", + "sql_endpoint": "NODE-table.sql_id", + "data": { + "name": "tableforindexcon", + "columns": [{ + "name": "col1", + "cltype": "integer", + "is_primary_key": false + }, { + "name": "col2", + "cltype": "integer", + "is_primary_key": false + }], + "is_partitioned": false, + "schema": "testschema", + "spcname": "pg_default" + }, + "store_object_id": true + }, { + "type": "create", + "name": "Create Index", + "endpoint": "NODE-index.obj", + "sql_endpoint": "NODE-index.sql_id", + "data": { + "name": "uindex", + "spcname": "pg_default", + "amname": "btree", + "columns": [{ + "colname": "col1", + "sort_order": false, + "nulls": false, + "is_sort_nulls_applicable": true + }], + "indisunique": true, + "fillfactor": 20 + } + }, { + "type": "create", + "name": "Create Primary Key Constraint -- 11 Plus", + "endpoint": "NODE-primary_key.obj", + "sql_endpoint": "NODE-primary_key.sql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#", + "comment": "Comment for create", + "fillfactor": 20, + "columns": [{"column":"col1"}], + "include": ["col2"], + "condeferrable": true, + "condeferred": true + }, + "expected_sql_file": "create_index_constraint.sql", + "expected_msql_file": "create_msql_index_constraint.sql" + }, { + "type": "alter", + "name": "Alter Primary Key Constraint -- 11 Plus", + "endpoint": "NODE-primary_key.obj_id", + "sql_endpoint": "NODE-primary_key.sql_id", + "msql_endpoint": "NODE-primary_key.msql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a", + "fillfactor": 90, + "comment": "Comment for alter" + }, + "expected_sql_file": "alter_index_constraint.sql", + "expected_msql_file": "alter_msql_index_constraint.sql" + }, { + "type": "alter", + "name": "Alter Primary Key Constraint Reset Fill factor", + "endpoint": "NODE-primary_key.obj_id", + "sql_endpoint": "NODE-primary_key.sql_id", + "msql_endpoint": "NODE-primary_key.msql_id", + "data": { + "fillfactor": "" + }, + "expected_sql_file": "alter_reset_fillfactor.sql", + "expected_msql_file": "alter_msql_reset_fillfactor.sql" + }, { + "type": "delete", + "name": "Drop Primary Key Constraint -- 11 plus", + "endpoint": "NODE-primary_key.delete_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a" + } + }, { + "type": "create", + "name": "Create Primary Key Constraint with Index -- 11 plus", + "endpoint": "NODE-primary_key.obj", + "sql_endpoint": "NODE-primary_key.sql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#", + "comment": "Comment for create", + "index": "uindex" + }, + "expected_sql_file": "create_index_constraint_with_index.sql" + }, { + "type": "alter", + "name": "Alter Primary Key Constraint with Index -- 11 plus", + "endpoint": "NODE-primary_key.obj_id", + "sql_endpoint": "NODE-primary_key.sql_id", + "msql_endpoint": "NODE-primary_key.msql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a", + "fillfactor": 90, + "comment": "Comment for alter" + }, + "expected_sql_file": "alter_index_constraint_with_index.sql", + "expected_msql_file": "alter_msql_index_constraint_with_index.sql" + }, { + "type": "delete", + "name": "Drop Primary Key Constraint with Index -- 11 plus", + "endpoint": "NODE-primary_key.delete_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a" + } + }, { + "type": "delete", + "name": "Drop Index Constraint Table -- 11 plus", + "endpoint": "NODE-table.delete_id", + "data": { + "name": "tableforindexcon" + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_index_constraint.sql new file mode 100644 index 000000000..0af807b99 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_index_constraint.sql @@ -0,0 +1,12 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/#a + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" PRIMARY KEY (col1) + WITH (FILLFACTOR=90) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_index_constraint_with_index.sql new file mode 100644 index 000000000..d5c2dc067 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_index_constraint_with_index.sql @@ -0,0 +1,11 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/#a + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" PRIMARY KEY (col1) + WITH (FILLFACTOR=90); + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_index_constraint.sql new file mode 100644 index 000000000..7031f24f9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_index_constraint.sql @@ -0,0 +1,6 @@ +ALTER TABLE testschema.tableforindexcon + RENAME CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" TO "Pk_$%{}[]()&*^!@""'`\/#a"; +ALTER INDEX testschema."Pk_$%{}[]()&*^!@""'`\/#a" + SET (FILLFACTOR=90); +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_index_constraint_with_index.sql new file mode 100644 index 000000000..7031f24f9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_index_constraint_with_index.sql @@ -0,0 +1,6 @@ +ALTER TABLE testschema.tableforindexcon + RENAME CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" TO "Pk_$%{}[]()&*^!@""'`\/#a"; +ALTER INDEX testschema."Pk_$%{}[]()&*^!@""'`\/#a" + SET (FILLFACTOR=90); +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_reset_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_reset_fillfactor.sql new file mode 100644 index 000000000..72bc1bb22 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_msql_reset_fillfactor.sql @@ -0,0 +1,2 @@ +ALTER INDEX testschema."Pk_$%{}[]()&*^!@""'`\/#a" + RESET (FILLFACTOR); diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_reset_fillfactor.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_reset_fillfactor.sql new file mode 100644 index 000000000..0cef7267f --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/alter_reset_fillfactor.sql @@ -0,0 +1,11 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/#a + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" PRIMARY KEY (col1) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#a" ON testschema.tableforindexcon + IS 'Comment for alter'; + diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_index_constraint.sql new file mode 100644 index 000000000..42a9f8004 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_index_constraint.sql @@ -0,0 +1,11 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/# + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + WITH (FILLFACTOR=20) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_index_constraint_with_index.sql new file mode 100644 index 000000000..70aa78d4b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_index_constraint_with_index.sql @@ -0,0 +1,10 @@ +-- Constraint: Pk_$%{}[]()&*^!@"'`\/# + +-- ALTER TABLE testschema.tableforindexcon DROP CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#"; + +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + WITH (FILLFACTOR=20); + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_msql_index_constraint.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_msql_index_constraint.sql new file mode 100644 index 000000000..aac679e6e --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_msql_index_constraint.sql @@ -0,0 +1,7 @@ +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + WITH (FILLFACTOR=20) + DEFERRABLE INITIALLY DEFERRED; + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_msql_index_constraint_with_index.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_msql_index_constraint_with_index.sql new file mode 100644 index 000000000..e1e943668 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/create_msql_index_constraint_with_index.sql @@ -0,0 +1,6 @@ +ALTER TABLE testschema.tableforindexcon + ADD CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" PRIMARY KEY (col1) + WITH (FILLFACTOR=20); + +COMMENT ON CONSTRAINT "Pk_$%{}[]()&*^!@""'`\/#" ON testschema.tableforindexcon + IS 'Comment for create'; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/test.json new file mode 100644 index 000000000..ea2dbce1c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/default/test.json @@ -0,0 +1,124 @@ +{ + "scenarios": [ + { + "type": "create", + "name": "Create Table", + "endpoint": "NODE-table.obj", + "sql_endpoint": "NODE-table.sql_id", + "data": { + "name": "tableforindexcon", + "columns": [{ + "name": "col1", + "cltype": "integer", + "is_primary_key": false + }], + "is_partitioned": false, + "schema": "testschema", + "spcname": "pg_default" + }, + "store_object_id": true + }, { + "type": "create", + "name": "Create Index", + "endpoint": "NODE-index.obj", + "sql_endpoint": "NODE-index.sql_id", + "data": { + "name": "uindex", + "spcname": "pg_default", + "amname": "btree", + "columns": [{ + "colname": "col1", + "sort_order": false, + "nulls": false, + "is_sort_nulls_applicable": true + }], + "indisunique": true, + "fillfactor": 20 + } + }, { + "type": "create", + "name": "Create Primary Key Constraint", + "endpoint": "NODE-primary_key.obj", + "sql_endpoint": "NODE-primary_key.sql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#", + "comment": "Comment for create", + "fillfactor": 20, + "columns": [{"column":"col1"}], + "condeferrable": true, + "condeferred": true + }, + "expected_sql_file": "create_index_constraint.sql", + "expected_msql_file": "create_msql_index_constraint.sql" + }, { + "type": "alter", + "name": "Alter Primary Key Constraint", + "endpoint": "NODE-primary_key.obj_id", + "sql_endpoint": "NODE-primary_key.sql_id", + "msql_endpoint": "NODE-primary_key.msql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a", + "fillfactor": 90, + "comment": "Comment for alter" + }, + "expected_sql_file": "alter_index_constraint.sql", + "expected_msql_file": "alter_msql_index_constraint.sql" + }, { + "type": "alter", + "name": "Alter Primary Key Constraint Reset Fill factor", + "endpoint": "NODE-primary_key.obj_id", + "sql_endpoint": "NODE-primary_key.sql_id", + "msql_endpoint": "NODE-primary_key.msql_id", + "data": { + "fillfactor": "" + }, + "expected_sql_file": "alter_reset_fillfactor.sql", + "expected_msql_file": "alter_msql_reset_fillfactor.sql" + }, { + "type": "delete", + "name": "Drop Primary Key Constraint", + "endpoint": "NODE-primary_key.delete_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a" + } + }, { + "type": "create", + "name": "Create Primary Key Constraint with Index", + "endpoint": "NODE-primary_key.obj", + "sql_endpoint": "NODE-primary_key.sql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#", + "comment": "Comment for create", + "index": "uindex" + }, + "expected_sql_file": "create_index_constraint_with_index.sql" + }, { + "type": "alter", + "name": "Alter Primary Key Constraint with Index", + "endpoint": "NODE-primary_key.obj_id", + "sql_endpoint": "NODE-primary_key.sql_id", + "msql_endpoint": "NODE-primary_key.msql_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a", + "fillfactor": 90, + "comment": "Comment for alter" + }, + "expected_sql_file": "alter_index_constraint_with_index.sql", + "expected_msql_file": "alter_msql_index_constraint_with_index.sql" + }, { + "type": "delete", + "name": "Drop Primary Key Constraint with Index", + "endpoint": "NODE-primary_key.delete_id", + "data": { + "name": "Pk_$%{}[]()&*^!@\"'`\\/#a" + } + }, { + "type": "delete", + "name": "Drop Index Constraint Table", + "endpoint": "NODE-table.delete_id", + "data": { + "name": "tableforindexcon" + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql index 5d85ec7b1..8956cdc99 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/11_plus/create.sql @@ -1,9 +1,9 @@ ALTER TABLE {{ conn|qtIdent(data.schema, data.table) }} ADD{% if data.name %} CONSTRAINT {{ conn|qtIdent(data.name) }}{% endif%} {{constraint_name}} {% if data.index %}USING INDEX {{ conn|qtIdent(data.index) }}{% else %} ({% for columnobj in data.columns %}{% if loop.index != 1 %} -, {% endif %}{{ conn|qtIdent(columnobj.column)}}{% endfor %}) -{% if data.include|length > 0 %} - INCLUDE({% for col in data.include %}{% if loop.index != 1 %}, {% endif %}{{conn|qtIdent(col)}}{% endfor %}){% endif %} +, {% endif %}{{ conn|qtIdent(columnobj.column)}}{% endfor %}){% if data.include|length > 0 %} + + INCLUDE ({% for col in data.include %}{% if loop.index != 1 %}, {% endif %}{{conn|qtIdent(col)}}{% endfor %}){% endif %} {% if data.fillfactor %} WITH (FILLFACTOR={{data.fillfactor}}){% endif %}{% if data.spcname and data.spcname != "pg_default" %} @@ -12,7 +12,7 @@ ALTER TABLE {{ conn|qtIdent(data.schema, data.table) }} DEFERRABLE{% if data.condeferred %} INITIALLY DEFERRED{% endif%} -{% 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/index_constraint/sql/default/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql index 2bd34a473..c83dd99fe 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/create.sql @@ -9,9 +9,9 @@ ALTER TABLE {{ conn|qtIdent(data.schema, data.table) }} DEFERRABLE{% if data.condeferred %} INITIALLY DEFERRED{% endif%} -{% 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/index_constraint/sql/default/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql index abc064e7f..8d4301a99 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/index_constraint/sql/default/update.sql @@ -13,6 +13,9 @@ ALTER INDEX {{ conn|qtIdent(data.schema, data.name) }} {% if data.fillfactor and data.fillfactor != o_data.fillfactor %} ALTER INDEX {{ conn|qtIdent(data.schema, data.name) }} SET (FILLFACTOR={{ data.fillfactor }}); +{% elif data.fillfactor is defined and data.fillfactor == '' %} +ALTER INDEX {{ conn|qtIdent(data.schema, data.name) }} + RESET (FILLFACTOR); {% endif %} {# ==== To update constraint comments ==== #} {% if data.comment is defined and data.comment != o_data.comment %}