From 2698382552608103958eb0a1b5ce40e23a1c43a8 Mon Sep 17 00:00:00 2001 From: Ayush Dhar Dubey Date: Fri, 9 Jan 2026 16:51:53 +0530 Subject: [PATCH] permit import of tiger after freeze --- src/nominatim_db/clicmd/add_data.py | 6 +++--- src/nominatim_db/tools/tiger_data.py | 14 ++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/nominatim_db/clicmd/add_data.py b/src/nominatim_db/clicmd/add_data.py index 580740f1..9d80a514 100644 --- a/src/nominatim_db/clicmd/add_data.py +++ b/src/nominatim_db/clicmd/add_data.py @@ -65,14 +65,14 @@ class UpdateAddData: def run(self, args: NominatimArgs) -> int: from ..tools import add_osm_data + if args.tiger_data: + return asyncio.run(self._add_tiger_data(args)) + with connect(args.config.get_libpq_dsn()) as conn: if is_frozen(conn): print('Database is marked frozen. New data can\'t be added.') return 1 - if args.tiger_data: - return asyncio.run(self._add_tiger_data(args)) - osm2pgsql_params = args.osm2pgsql_options(default_cache=1000, default_threads=1) if args.file or args.diff: return add_osm_data.add_data_from_file(args.config.get_libpq_dsn(), diff --git a/src/nominatim_db/tools/tiger_data.py b/src/nominatim_db/tools/tiger_data.py index 7b865570..b2f63839 100644 --- a/src/nominatim_db/tools/tiger_data.py +++ b/src/nominatim_db/tools/tiger_data.py @@ -17,13 +17,12 @@ import tarfile from psycopg.types.json import Json from ..config import Configuration -from ..db.connection import connect +from ..db.connection import connect, table_exists from ..db.sql_preprocessor import SQLPreprocessor from ..errors import UsageError from ..db.query_pool import QueryPool from ..data.place_info import PlaceInfo from ..tokenizer.base import AbstractTokenizer -from . import freeze LOG = logging.getLogger() @@ -90,16 +89,19 @@ async def add_tiger_data(data_dir: str, config: Configuration, threads: int, """ dsn = config.get_libpq_dsn() - with connect(dsn) as conn: - if freeze.is_frozen(conn): - raise UsageError("Tiger cannot be imported when database frozen (Github issue #3048)") - with TigerInput(data_dir) as tar: if not tar: return 1 with connect(dsn) as conn: sql = SQLPreprocessor(conn, config) + + if not table_exists(conn, 'search_name'): + raise UsageError( + "Cannot perform tiger import: required tables are missing. " + "See https://github.com/osm-search/Nominatim/issues/2463 for details." + ) + sql.run_sql_file(conn, 'tiger_import_start.sql') # Reading files and then for each file line handling