mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
fix parameter formatting in sqlite debug output
This commit is contained in:
@@ -90,26 +90,42 @@ class BaseLogger:
|
|||||||
params = dict(compiled.params)
|
params = dict(compiled.params)
|
||||||
if isinstance(extra_params, Mapping):
|
if isinstance(extra_params, Mapping):
|
||||||
for k, v in extra_params.items():
|
for k, v in extra_params.items():
|
||||||
params[k] = str(v)
|
if hasattr(v, 'to_wkt'):
|
||||||
|
params[k] = v.to_wkt()
|
||||||
|
elif isinstance(v, (int, float)):
|
||||||
|
params[k] = v
|
||||||
|
else:
|
||||||
|
params[k] = str(v)
|
||||||
elif isinstance(extra_params, Sequence) and extra_params:
|
elif isinstance(extra_params, Sequence) and extra_params:
|
||||||
for k in extra_params[0]:
|
for k in extra_params[0]:
|
||||||
params[k] = f':{k}'
|
params[k] = f':{k}'
|
||||||
|
|
||||||
sqlstr = str(compiled)
|
sqlstr = str(compiled)
|
||||||
|
|
||||||
if sa.__version__.startswith('1'):
|
if conn.dialect.name == 'postgresql':
|
||||||
try:
|
if sa.__version__.startswith('1'):
|
||||||
sqlstr = re.sub(r'__\[POSTCOMPILE_[^]]*\]', '%s', sqlstr)
|
try:
|
||||||
return sqlstr % tuple((repr(params.get(name, None))
|
sqlstr = re.sub(r'__\[POSTCOMPILE_[^]]*\]', '%s', sqlstr)
|
||||||
for name in compiled.positiontup)) # type: ignore
|
return sqlstr % tuple((repr(params.get(name, None))
|
||||||
except TypeError:
|
for name in compiled.positiontup)) # type: ignore
|
||||||
return sqlstr
|
except TypeError:
|
||||||
|
return sqlstr
|
||||||
|
|
||||||
# Fixes an odd issue with Python 3.7 where percentages are not
|
# Fixes an odd issue with Python 3.7 where percentages are not
|
||||||
# quoted correctly.
|
# quoted correctly.
|
||||||
sqlstr = re.sub(r'%(?!\()', '%%', sqlstr)
|
sqlstr = re.sub(r'%(?!\()', '%%', sqlstr)
|
||||||
sqlstr = re.sub(r'__\[POSTCOMPILE_([^]]*)\]', r'%(\1)s', sqlstr)
|
sqlstr = re.sub(r'__\[POSTCOMPILE_([^]]*)\]', r'%(\1)s', sqlstr)
|
||||||
return sqlstr % params
|
return sqlstr % params
|
||||||
|
|
||||||
|
assert conn.dialect.name == 'sqlite'
|
||||||
|
|
||||||
|
# params in positional order
|
||||||
|
pparams = (repr(params.get(name, None)) for name in compiled.positiontup) # type: ignore
|
||||||
|
|
||||||
|
sqlstr = re.sub(r'__\[POSTCOMPILE_([^]]*)\]', '?', sqlstr)
|
||||||
|
sqlstr = re.sub(r"\?", lambda m: next(pparams), sqlstr)
|
||||||
|
|
||||||
|
return sqlstr
|
||||||
|
|
||||||
class HTMLLogger(BaseLogger):
|
class HTMLLogger(BaseLogger):
|
||||||
""" Logger that formats messages in HTML.
|
""" Logger that formats messages in HTML.
|
||||||
|
|||||||
Reference in New Issue
Block a user