From: Robbe Haesendonck Date: Wed, 20 Sep 2023 14:05:12 +0000 (+0200) Subject: Added version check for PostGis and Postgres X-Git-Tag: v4.4.0~68 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/8e71ff329ca574a50ff03e1cec0f121b0410fbfb Added version check for PostGis and Postgres --- diff --git a/nominatim/clicmd/setup.py b/nominatim/clicmd/setup.py index 5114db83..d93a118f 100644 --- a/nominatim/clicmd/setup.py +++ b/nominatim/clicmd/setup.py @@ -99,6 +99,8 @@ class SetupAll: return 0 if not args.prepare_database or args.no_superuser or complete_import: + # Check if the correct plugins are installed + database_import.check_existing_database_plugins(args.config.get_libpq_dsn()) LOG.warning('Setting up country tables') country_info.setup_country_tables(args.config.get_libpq_dsn(), args.config.lib_dir.data, diff --git a/nominatim/tools/database_import.py b/nominatim/tools/database_import.py index cb620d41..7251329c 100644 --- a/nominatim/tools/database_import.py +++ b/nominatim/tools/database_import.py @@ -38,6 +38,16 @@ def _require_version(module: str, actual: Tuple[int, int], expected: Tuple[int, raise UsageError(f'{module} is too old.') +def check_existing_database_plugins(dsn: str): + with connect(dsn) as conn: + _require_version('PostgreSQL server', + conn.server_version_tuple(), + POSTGRESQL_REQUIRED_VERSION) + _require_version('PostGIS', + conn.postgis_version_tuple(), + POSTGIS_REQUIRED_VERSION) + + def setup_database_skeleton(dsn: str, rouser: Optional[str] = None) -> None: """ Create a new database for Nominatim and populate it with the essential extensions.