diff --git a/docs/en_US/backup_server_dialog.rst b/docs/en_US/backup_server_dialog.rst index 9ecb52e2e..f6d8d18c0 100644 --- a/docs/en_US/backup_server_dialog.rst +++ b/docs/en_US/backup_server_dialog.rst @@ -178,6 +178,9 @@ tab to provide other backup options. table locks at the beginning of the dump. Instead, fail if unable to lock a table within the specified timeout. + * Use the *Exclude database* field to not dump databases whose name matches + pattern. + When you’ve specified the details that will be incorporated into the pg_dumpall command: diff --git a/web/pgadmin/tools/backup/__init__.py b/web/pgadmin/tools/backup/__init__.py index d47fef034..70e56ed9a 100644 --- a/web/pgadmin/tools/backup/__init__.py +++ b/web/pgadmin/tools/backup/__init__.py @@ -253,7 +253,7 @@ def _get_args_params_values(data, conn, backup_obj_type, backup_file, server, # --blobs is deprecated from v16 if manager.version >= 160000: - set_param('blobs', 'large-objects', + set_param('blobs', '--large-objects', data['format'] in ['custom', 'tar']) else: set_param('blobs', '--blobs', data['format'] in ['custom', 'tar']) @@ -334,6 +334,8 @@ def _get_args_params_values(data, conn, backup_obj_type, backup_file, server, set_value('extra_float_digits', '--extra-float-digits', None, manager.version >= 120000) set_value('lock_wait_timeout', '--lock-wait-timeout') + set_value('exclude_database', '--exclude-database', None, + manager.version >= 160000) args.extend( functools.reduce(operator.iconcat, map( diff --git a/web/pgadmin/tools/backup/static/js/backup.ui.js b/web/pgadmin/tools/backup/static/js/backup.ui.js index 7060b7108..364d4356a 100644 --- a/web/pgadmin/tools/backup/static/js/backup.ui.js +++ b/web/pgadmin/tools/backup/static/js/backup.ui.js @@ -341,6 +341,7 @@ export class MiscellaneousSchema extends BaseUISchema { get baseFields() { + let obj = this; return [{ id: 'verbose', label: gettext('Verbose messages'), @@ -372,6 +373,14 @@ export class MiscellaneousSchema extends BaseUISchema { type: 'int', disabled: false, group: gettext('Miscellaneous') + }, { + id: 'exclude_database', + label: gettext('Exclude database'), + type: 'text', + disabled: false, + min_version: 160000, + group: gettext('Miscellaneous'), + visible: isVisibleForObjectBackup(obj.backupType) }]; } } diff --git a/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py b/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py index 1b2f849e5..5ea3f8de0 100644 --- a/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py +++ b/web/pgadmin/tools/backup/tests/test_backup_create_job_unit_test.py @@ -1052,6 +1052,31 @@ class BackupCreateJobTest(BaseTestGenerator): not_expected_cmd_opts=[], expected_exit_code=[0, None] )), + ('When backup the server with option - Exclude database', + dict( + class_params=dict( + sid=1, + name='test_backup_server', + port=5444, + host='localhost', + database='postgres', + bfile='test_backup', + username='postgres' + ), + params=dict( + file='test_backup_server_file', + type='server', + verbose=True, + exclude_database="db*" + ), + url=BACKUP_SERVER_URL, + expected_cmd_opts=[VERBOSE, '--exclude-database', 'db*'], + not_expected_cmd_opts=[], + server_min_version=160000, + expected_exit_code=[0, None], + message='Backup server with --exclude-database are not ' + 'supported by EPAS/PG server less than 16.0' + )), ('When backup the server with encoding', dict( class_params=dict( diff --git a/web/regression/javascript/schema_ui_files/backup.ui.spec.js b/web/regression/javascript/schema_ui_files/backup.ui.spec.js index ed52dd630..d476c94c9 100644 --- a/web/regression/javascript/schema_ui_files/backup.ui.spec.js +++ b/web/regression/javascript/schema_ui_files/backup.ui.spec.js @@ -12,7 +12,7 @@ import '../helper/enzyme.helper'; import { createMount } from '@material-ui/core/test-utils'; import pgAdmin from 'sources/pgadmin'; import SchemaView from '../../../pgadmin/static/js/SchemaView'; -import BackupSchema, {getSectionSchema, getTypeObjSchema, getSaveOptSchema, getQueryOptionSchema, getDisabledOptionSchema, getMiscellaneousSchema} from '../../../pgadmin/tools/backup/static/js/backup.ui'; +import BackupSchema, {getSectionSchema, getTypeObjSchema, getSaveOptSchema, getDisabledOptionSchema, getMiscellaneousSchema} from '../../../pgadmin/tools/backup/static/js/backup.ui'; import Theme from '../../../pgadmin/static/js/Theme'; @@ -29,7 +29,6 @@ describe('BackupSchema', ()=>{ ()=> getSectionSchema(), ()=> getTypeObjSchema(), ()=> getSaveOptSchema({nodeInfo: {server: {version: 11000}}}), - ()=> getQueryOptionSchema({nodeInfo: {server: {version: 11000}}}), ()=> getDisabledOptionSchema({nodeInfo: {server: {version: 11000}}}), ()=> getMiscellaneousSchema({nodeInfo: {server: {version: 11000}}}), { @@ -66,7 +65,6 @@ describe('BackupSchema', ()=>{ ()=> getSectionSchema(), ()=> getTypeObjSchema(), ()=> getSaveOptSchema({nodeInfo: {server: {version: 11000}}}), - ()=> getQueryOptionSchema({nodeInfo: {server: {version: 11000}}}), ()=> getDisabledOptionSchema({nodeInfo: {server: {version: 11000}}}), ()=> getMiscellaneousSchema({nodeInfo: {server: {version: 11000}}}), {