1 # SPDX-License-Identifier: GPL-3.0-or-later
3 # This file is part of Nominatim. (https://nominatim.org)
5 # Copyright (C) 2024 by the Nominatim developer community.
6 # For a full list of authors see the git log.
8 Functions for removing unnecessary data from the database.
10 from typing import Optional
11 from pathlib import Path
13 from psycopg2 import sql as pysql
15 from nominatim_core.db.connection import Connection
31 def drop_update_tables(conn: Connection) -> None:
32 """ Drop all tables only necessary for updating the database from
35 parts = (pysql.SQL("(tablename LIKE {})").format(pysql.Literal(t)) for t in UPDATE_TABLES)
37 with conn.cursor() as cur:
38 cur.execute(pysql.SQL("SELECT tablename FROM pg_tables WHERE ")
39 + pysql.SQL(' or ').join(parts))
40 tables = [r[0] for r in cur]
43 cur.drop_table(table, cascade=True)
48 def drop_flatnode_file(fpath: Optional[Path]) -> None:
49 """ Remove the flatnode file if it exists.
51 if fpath and fpath.exists():
54 def is_frozen(conn: Connection) -> bool:
55 """ Returns true if database is in a frozen state
58 return conn.table_exists('place') is False