diff --git a/docs/en_US/menu_bar.rst b/docs/en_US/menu_bar.rst index 6d6a82fa2..c06fd139c 100644 --- a/docs/en_US/menu_bar.rst +++ b/docs/en_US/menu_bar.rst @@ -74,8 +74,9 @@ following options (in alphabetical order): +-----------------------------+--------------------------------------------------------------------------------------------------------------------------+ | *Trigger(s)* | Click to *Disable* or *Enable* trigger(s) for the currently selected table. Options are displayed on the flyout menu. | +-----------------------------+--------------------------------------------------------------------------------------------------------------------------+ -| *Truncate* | Click to remove all rows from a table (*Truncate*) or to remove all rows from a table and its child tables | -| | (*Truncate Cascade*). Options are displayed on the flyout menu. | +| *Truncate* | Click to remove all rows from a table (*Truncate*), to remove all rows from a table and its child tables | +| | (*Truncate Cascade*) or to remove all rows from a table and automatically restart sequences owned by columns | +| | (*Truncate Restart Identity*). Options are displayed on the flyout menu. | +-----------------------------+--------------------------------------------------------------------------------------------------------------------------+ | *View Data* | Click to access a context menu that provides several options for viewing data (see below). | +-----------------------------+--------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/en_US/release_notes_5_7.rst b/docs/en_US/release_notes_5_7.rst index c551235c4..0bf6d6be3 100644 --- a/docs/en_US/release_notes_5_7.rst +++ b/docs/en_US/release_notes_5_7.rst @@ -9,6 +9,7 @@ This release contains a number of bug fixes and new features since the release o New features ************ +| `Issue #2538 `_ - Added support for the truncate table with restart identity. | `Issue #4264 `_ - Make code folding case insensitive in the code mirror. | `Issue #4629 `_ - Added database and server information on the Maintenance process watcher dialog. | `Issue #6495 `_ - Allow the referenced table to be the same as the local table in one to many relationship for ERD Tool. diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js index ed5836152..059f3f4f4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.js @@ -89,6 +89,11 @@ define('pgadmin.node.table', [ applies: ['object', 'context'], callback: 'truncate_table_cascade', category: gettext('Truncate'), priority: 3, label: gettext('Truncate Cascade'), icon: 'fa fa-eraser', enable : 'canCreate', + },{ + name: 'truncate_table_identity', node: 'table', module: this, + applies: ['object', 'context'], callback: 'truncate_table_identity', + category: gettext('Truncate'), priority: 3, label: gettext('Truncate Restart Identity'), + icon: 'fa fa-eraser', enable : 'canCreate', },{ // To enable/disable all triggers for the table name: 'enable_all_triggers', node: 'table', module: this, @@ -159,6 +164,10 @@ define('pgadmin.node.table', [ var params = {'cascade': true }; this.callbacks.truncate.apply(this, [args, params]); }, + truncate_table_identity: function(args) { + var params = {'identity': true }; + this.callbacks.truncate.apply(this, [args, params]); + }, truncate: function(args, params) { var input = args || {}, obj = this, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/truncate.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/truncate.sql index 6a276f32b..975b14b88 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/truncate.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/templates/tables/sql/default/truncate.sql @@ -1 +1 @@ -TRUNCATE TABLE {{conn|qtIdent(data.schema, data.name)}}{% if cascade %} CASCADE{% endif %}; \ No newline at end of file +TRUNCATE TABLE {{conn|qtIdent(data.schema, data.name)}}{% if identity %} RESTART IDENTITY{% endif %}{% if cascade %} CASCADE{% endif %}; 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 593f14d1b..c57a8563c 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 @@ -1897,13 +1897,15 @@ class BaseTableView(PGChildNodeView, BasePartitionTable, VacuumSettings): request.data, encoding='utf-8' ) # Convert str 'true' to boolean type - is_cascade = json.loads(data['cascade']) + is_cascade = json.loads(data.get('cascade') or 'false') + is_identity = json.loads(data.get('identity') or 'false') data = res['rows'][0] sql = render_template("/".join([self.table_template_path, 'truncate.sql']), - data=data, cascade=is_cascade) + data=data, cascade=is_cascade, + identity=is_identity) status, res = self.conn.execute_scalar(sql) if not status: return internal_server_error(errormsg=res) diff --git a/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py b/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py index 70795207d..f9594a47d 100644 --- a/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py +++ b/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py @@ -163,7 +163,7 @@ class PGUtilitiesMaintenanceFeatureTest(BaseFeatureTest): ) else: self.assertEqual( - command, vacuum_details + "\nRunning Query:\nVACUUM VERBOSE;" + command, vacuum_details + "\nRunning Query:\nVACUUM VERBOSE" " public." + self.table_name + ";") test_gui_helper.close_process_watcher(self)