X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/e14e7c6235a40dbec451146bcb3aaec013d659c9..e82de99e5aac77947bc4b43423c7ab2f09ef7a05:/nominatim/clicmd/setup.py diff --git a/nominatim/clicmd/setup.py b/nominatim/clicmd/setup.py index f8229b39..92d06943 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. @@ -38,11 +39,11 @@ class SetupAll: group.add_argument('--reverse-only', action='store_true', help='Do not create tables and indexes for searching') group.add_argument('--no-partitions', action='store_true', - help="""Do not partition search indices - (speeds up import of single country extracts)""") + help=("Do not partition search indices " + "(speeds up import of single country extracts)")) group.add_argument('--no-updates', action='store_true', - help="""Do not keep tables that are only needed for - updating the database later""") + help="Do not keep tables that are only needed for " + "updating the database later") group = parser.add_argument_group('Expert options') group.add_argument('--ignore-errors', action='store_true', help='Continue import even when errors in SQL are present') @@ -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) + LOG.warning('Create search index for default country names.') + database_import.create_country_names(conn, args.config) 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