## Removing large deleted objects
-Command: `nominatim admin --clean-deleted --age <PostgreSQL Time Interval>`
+Command: `nominatim admin --clean-deleted <PostgreSQL Time Interval>`
Nominatim refuses to delete very large areas because often these deletions are
accidental and are reverted within hours. Instead the deletions are logged in
the `import_polygon_delete` table and left to the administrator to clean up.
-To run this command you will need to pass a PostgreSQL time interval to the age
-parameter. For example to delete any objects that have been deleted more than a
-month ago you would run:
-`nominatim admin --clean-deleted --age '1 month'`
+To run this command you will need to pass a PostgreSQL time interval. For example to
+delete any objects that have been deleted more than a month ago you would run:
+`nominatim admin --clean-deleted '1 month'`
help='Print performance analysis of the indexing process')
objs.add_argument('--collect-os-info', action="store_true",
help="Generate a report about the host system information")
- objs.add_argument('--clean-deleted', action='store_true',
+ objs.add_argument('--clean-deleted', action='store', metavar='AGE',
help='Clean up deleted relations')
group = parser.add_argument_group('Arguments for cache warming')
group.add_argument('--search-only', action='store_const', dest='target',
mgroup.add_argument('--place-id', type=int,
help='Analyse indexing of the given Nominatim object')
group = parser.add_argument_group('Arguments for cleaning deleted')
- group.add_argument('--age', type=str,
- help='Delete relations older than the given PostgreSQL time interval')
def run(self, args: NominatimArgs) -> int:
return 0
if args.clean_deleted:
- if not args.age:
- self.parser.error('Age is required for --clean-deleted command')
LOG.warning('Cleaning up deleted relations')
from ..tools import admin
- admin.clean_deleted_relations(args.config, age=args.age)
+ admin.clean_deleted_relations(args.config, age=args.clean_deleted)
return 0
return 1
check_database: bool
migrate: bool
collect_os_info: bool
- clean_deleted: bool
+ clean_deleted: str
analyse_indexing: bool
target: Optional[str]
osm_id: Optional[str]
place_id: Optional[int]
- age: str
# Arguments to 'import'
osm_file: List[str]
def test_admin_clean_deleted_relations(cli_call, mock_func_factory):
mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations')
- assert cli_call('admin', '--clean-deleted', '--age', '1 month') == 0
+ assert cli_call('admin', '--clean-deleted', '1 month') == 0
assert mock.called == 1
def test_admin_clean_deleted_relations_no_age(cli_call, mock_func_factory):
mock = mock_func_factory(nominatim.tools.admin, 'clean_deleted_relations')
- with pytest.raises(SystemExit):
- cli_call('admin', '--clean-deleted')
+ assert cli_call('admin', '--clean-deleted') == 1
class TestCliAdminWithDb: