X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/dd03aeb966c2a101759d447a0fa00340812c89da..7212fa863009747fad6fc86acccfed6043294e18:/nominatim/clicmd/setup.py diff --git a/nominatim/clicmd/setup.py b/nominatim/clicmd/setup.py index f8229b39..71980739 100644 --- a/nominatim/clicmd/setup.py +++ b/nominatim/clicmd/setup.py @@ -8,7 +8,8 @@ import psutil from ..tools.exec_utils import run_legacy_script from ..db.connection import connect -from ..db import status +from ..db import status, properties +from ..version import NOMINATIM_VERSION from ..errors import UsageError # Do not repeat documentation of subcommand classes. @@ -78,19 +79,22 @@ class SetupAll: drop=args.no_updates, ignore_errors=args.ignore_errors) - LOG.warning('Create functions (1st pass)') with connect(args.config.get_libpq_dsn()) as conn: + LOG.warning('Create functions (1st pass)') refresh.create_functions(conn, args.config, args.sqllib_dir, False, False) - - LOG.warning('Create tables') - params = ['setup.php', '--create-tables', '--create-partition-tables'] - if args.reverse_only: - params.append('--reverse-only') - run_legacy_script(*params, nominatim_env=args) - - LOG.warning('Create functions (2nd pass)') - with connect(args.config.get_libpq_dsn()) as conn: + LOG.warning('Create tables') + database_import.create_tables(conn, args.config, args.sqllib_dir, + reverse_only=args.reverse_only) + refresh.load_address_levels_from_file(conn, Path(args.config.ADDRESS_LEVEL_CONFIG)) + LOG.warning('Create functions (2nd pass)') + refresh.create_functions(conn, args.config, args.sqllib_dir, + False, False) + LOG.warning('Create table triggers') + database_import.create_table_triggers(conn, args.config, args.sqllib_dir) + LOG.warning('Create partition tables') + database_import.create_partition_tables(conn, args.config, args.sqllib_dir) + LOG.warning('Create functions (3rd pass)') refresh.create_functions(conn, args.config, args.sqllib_dir, False, False) @@ -112,7 +116,8 @@ class SetupAll: args.threads or psutil.cpu_count() or 1) LOG.warning('Calculate postcodes') - run_legacy_script('setup.php', '--calculate-postcodes', nominatim_env=args) + run_legacy_script('setup.php', '--calculate-postcodes', + nominatim_env=args, throw_on_fail=not args.ignore_errors) if args.continue_at is None or args.continue_at in ('load-data', 'indexing'): LOG.warning('Indexing places') @@ -121,10 +126,12 @@ class SetupAll: indexer.index_full(analyse=not args.index_noanalyse) LOG.warning('Post-process tables') - params = ['setup.php', '--create-search-indices', '--create-country-names'] - if args.no_updates: - params.append('--drop') - run_legacy_script(*params, nominatim_env=args) + with connect(args.config.get_libpq_dsn()) as conn: + database_import.create_search_indices(conn, args.config, + args.sqllib_dir, + drop=args.no_updates) + run_legacy_script('setup.php', '--create-country-names', + nominatim_env=args, throw_on_fail=not args.ignore_errors) webdir = args.project_dir / 'website' LOG.warning('Setup website at %s', webdir) @@ -138,4 +145,7 @@ class SetupAll: except Exception as exc: # pylint: disable=broad-except LOG.error('Cannot determine date of database: %s', exc) + properties.set_property(conn, 'database_version', + '{0[0]}.{0[1]}.{0[2]}-{0[3]}'.format(NOMINATIM_VERSION)) + return 0