]> git.openstreetmap.org Git - nominatim.git/commitdiff
band-aid for SQLAlchemy 1.4
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 26 Jun 2023 19:37:17 +0000 (21:37 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 1 Jul 2023 16:03:07 +0000 (18:03 +0200)
nominatim/api/logging.py
nominatim/db/sqlalchemy_types.py

index 8d9af10c81aceb57a2117a99ff28491b79c69665..202d7de9a5baf0abca6ed1807bfb488cb136de05 100644 (file)
@@ -93,6 +93,14 @@ class BaseLogger:
             for k in extra_params[0]:
                 params[k] = f':{k}'
 
+        sqlstr = str(compiled)
+
+        if '%s' in sqlstr:
+            try:
+                return sqlstr % tuple((repr(compiled.params[name]) for name in compiled.positiontup))
+            except TypeError:
+                return sqlstr
+
         return str(compiled) % params
 
 
index e34dc7c188106c8f031c6e53474264409664a324..c54d339e6d903b202ec1ad7e551ee881681c8856 100644 (file)
@@ -28,7 +28,7 @@ class Geometry(types.UserDefinedType[Any]):
         return f'GEOMETRY({self.subtype}, 4326)'
 
 
-    def bind_processor(self, dialect: sa.Dialect) -> Callable[[Any], str]:
+    def bind_processor(self, dialect: 'sa.Dialect') -> Callable[[Any], str]:
         def process(value: Any) -> str:
             if isinstance(value, str):
                 return 'SRID=4326;' + value
@@ -37,14 +37,14 @@ class Geometry(types.UserDefinedType[Any]):
         return process
 
 
-    def result_processor(self, dialect: sa.Dialect, coltype: object) -> Callable[[Any], str]:
+    def result_processor(self, dialect: 'sa.Dialect', coltype: object) -> Callable[[Any], str]:
         def process(value: Any) -> str:
             assert isinstance(value, str)
             return value
         return process
 
 
-    def bind_expression(self, bindvalue: sa.BindParameter[Any]) -> SaColumn:
+    def bind_expression(self, bindvalue: 'sa.BindParameter[Any]') -> SaColumn:
         return sa.func.ST_GeomFromText(bindvalue, type_=self)