X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/49e0d83d5d8e3008373ae99ae3f37788f4b9a80a..19cbb261b431088f82461749635b86f070b7444f:/nominatim/api/logging.py diff --git a/nominatim/api/logging.py b/nominatim/api/logging.py index 3160ede8..5b6d0e4d 100644 --- a/nominatim/api/logging.py +++ b/nominatim/api/logging.py @@ -12,6 +12,7 @@ from contextvars import ContextVar import datetime as dt import textwrap import io +import re import sqlalchemy as sa from sqlalchemy.ext.asyncio import AsyncConnection @@ -98,14 +99,18 @@ class BaseLogger: if sa.__version__.startswith('1'): try: + sqlstr = re.sub(r'__\[POSTCOMPILE_[^]]*\]', '%s', sqlstr) return sqlstr % tuple((repr(params.get(name, None)) for name in compiled.positiontup)) # type: ignore except TypeError: return sqlstr + # Fixes an odd issue with Python 3.7 where percentages are not + # quoted correctly. + sqlstr = re.sub(r'%(?!\()', '%%', sqlstr) + sqlstr = re.sub(r'__\[POSTCOMPILE_([^]]*)\]', r'%(\1)s', sqlstr) return sqlstr % params - class HTMLLogger(BaseLogger): """ Logger that formats messages in HTML. """