From 552fb16cb2b46d11f396dcf71f421073ae353c93 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Fri, 15 Oct 2021 15:07:43 +0200 Subject: [PATCH] fix template expressions for tablespaces --- nominatim/db/sql_preprocessor.py | 2 +- test/python/conftest.py | 9 +++++++-- test/python/test_db_sql_preprocessor.py | 15 +++++++++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/nominatim/db/sql_preprocessor.py b/nominatim/db/sql_preprocessor.py index a1bf5b7f..c8e07f6e 100644 --- a/nominatim/db/sql_preprocessor.py +++ b/nominatim/db/sql_preprocessor.py @@ -36,7 +36,7 @@ def _setup_tablespace_sql(config): tspace = getattr(config, 'TABLESPACE_{}_{}'.format(subset, kind)) if tspace: tspace = 'TABLESPACE "{}"'.format(tspace) - out['{}_{}'.format(subset.lower, kind.lower())] = tspace + out['{}_{}'.format(subset.lower(), kind.lower())] = tspace return out diff --git a/test/python/conftest.py b/test/python/conftest.py index 74d36339..4812e3f0 100644 --- a/test/python/conftest.py +++ b/test/python/conftest.py @@ -226,14 +226,19 @@ def osm2pgsql_options(temp_db): tablespaces=dict(slim_data='', slim_index='', main_data='', main_index='')) + @pytest.fixture -def sql_preprocessor(temp_db_conn, tmp_path, table_factory, temp_db_with_extensions): +def sql_preprocessor_cfg(tmp_path, table_factory, temp_db_with_extensions): table_factory('country_name', 'partition INT', ((0, ), (1, ), (2, ))) cfg = Configuration(None, SRC_DIR.resolve() / 'settings') cfg.set_libdirs(module='.', osm2pgsql='.', php=SRC_DIR / 'lib-php', sql=tmp_path, data=SRC_DIR / 'data') + return cfg - return SQLPreprocessor(temp_db_conn, cfg) + +@pytest.fixture +def sql_preprocessor(sql_preprocessor_cfg, temp_db_conn): + return SQLPreprocessor(temp_db_conn, sql_preprocessor_cfg) @pytest.fixture diff --git a/test/python/test_db_sql_preprocessor.py b/test/python/test_db_sql_preprocessor.py index 79f82dac..2ca0c661 100644 --- a/test/python/test_db_sql_preprocessor.py +++ b/test/python/test_db_sql_preprocessor.py @@ -3,6 +3,8 @@ Tests for SQL preprocessing. """ import pytest +from nominatim.db.sql_preprocessor import SQLPreprocessor + @pytest.fixture def sql_factory(tmp_path): def _mk_sql(sql_body): @@ -22,11 +24,20 @@ def sql_factory(tmp_path): ("'{{db.partitions|join}}'", '012'), ("{% if 'country_name' in db.tables %}'yes'{% else %}'no'{% endif %}", "yes"), ("{% if 'xxx' in db.tables %}'yes'{% else %}'no'{% endif %}", "no"), + ("'{{db.tablespace.address_data}}'", ""), + ("'{{db.tablespace.search_data}}'", 'TABLESPACE "dsearch"'), + ("'{{db.tablespace.address_index}}'", 'TABLESPACE "iaddress"'), + ("'{{db.tablespace.aux_data}}'", 'TABLESPACE "daux"') ]) -def test_load_file_simple(sql_preprocessor, sql_factory, temp_db_conn, temp_db_cursor, expr, ret): +def test_load_file_simple(sql_preprocessor_cfg, sql_factory, + temp_db_conn, temp_db_cursor, monkeypatch, + expr, ret): + monkeypatch.setenv('NOMINATIM_TABLESPACE_SEARCH_DATA', 'dsearch') + monkeypatch.setenv('NOMINATIM_TABLESPACE_ADDRESS_INDEX', 'iaddress') + monkeypatch.setenv('NOMINATIM_TABLESPACE_AUX_DATA', 'daux') sqlfile = sql_factory("RETURN {};".format(expr)) - sql_preprocessor.run_sql_file(temp_db_conn, sqlfile) + SQLPreprocessor(temp_db_conn, sql_preprocessor_cfg).run_sql_file(temp_db_conn, sqlfile) assert temp_db_cursor.scalar('SELECT test()') == ret -- 2.39.5