X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/4e1e166c6a3f4b83c114eb22babca0a4eee3f96e..58ab8319b96c5d408a033c62a8a5e197af3a6875:/nominatim/tools/migration.py diff --git a/nominatim/tools/migration.py b/nominatim/tools/migration.py index 290016ad..8cb1a355 100644 --- a/nominatim/tools/migration.py +++ b/nominatim/tools/migration.py @@ -7,8 +7,11 @@ """ Functions for database migration to newer software versions. """ +from typing import List, Tuple, Callable import logging +from psycopg2 import sql as pysql + from nominatim.db import properties from nominatim.db.connection import connect from nominatim.version import NOMINATIM_VERSION, version_str @@ -18,7 +21,7 @@ from nominatim.errors import UsageError LOG = logging.getLogger() -_MIGRATION_FUNCTIONS = [] +_MIGRATION_FUNCTIONS : List[Tuple[str, Callable]] = [] def migrate(config, paths): """ Check for the current database version and execute migrations, @@ -47,7 +50,7 @@ def migrate(config, paths): for version, func in _MIGRATION_FUNCTIONS: if db_version <= version: LOG.warning("Runnning: %s (%s)", func.__doc__.split('\n', 1)[0], - '{}.{}.{}-{}'.format(*version)) + version_str(version)) kwargs = dict(conn=conn, config=config, paths=paths) func(**kwargs) conn.commit() @@ -124,11 +127,11 @@ def add_nominatim_property_table(conn, config, **_): """ if not conn.table_exists('nominatim_properties'): with conn.cursor() as cur: - cur.execute("""CREATE TABLE nominatim_properties ( - property TEXT, - value TEXT); - GRANT SELECT ON TABLE nominatim_properties TO "{}"; - """.format(config.DATABASE_WEBUSER)) + cur.execute(pysql.SQL("""CREATE TABLE nominatim_properties ( + property TEXT, + value TEXT); + GRANT SELECT ON TABLE nominatim_properties TO {}; + """).format(pysql.Identifier(config.DATABASE_WEBUSER))) @_migration(3, 6, 0, 0) def change_housenumber_transliteration(conn, **_): @@ -193,7 +196,8 @@ def install_legacy_tokenizer(conn, config, **_): and column_name = 'token_info'""", (table, )) if has_column == 0: - cur.execute('ALTER TABLE {} ADD COLUMN token_info JSONB'.format(table)) + cur.execute(pysql.SQL('ALTER TABLE {} ADD COLUMN token_info JSONB') + .format(pysql.Identifier(table))) tokenizer = tokenizer_factory.create_tokenizer(config, init_db=False, module_name='legacy')