]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/db/connection.py
Added check for hstore extension
[nominatim.git] / nominatim / db / connection.py
index fce897bc7250c814d6679188a5c6281a8ac3790c..12fc22d46841486c047cf341538ff81b5413cf3f 100644 (file)
@@ -174,6 +174,24 @@ class Connection(psycopg2.extensions.connection):
 
         return (int(version_parts[0]), int(version_parts[1]))
 
+    def hstore_version_tuple(self) -> Tuple[int, int]:
+        """ Return the hstore version installed in the database as a
+            tuple of (major, minor). Assumes that the hstore extension
+            has been installed already.
+        """
+        with self.cursor() as cur:
+            version = cur.scalar(
+                'SELECT extversion FROM pg_extension WHERE extname = %s',
+                ('hstore')
+            )
+
+        version_parts = version.split('.')
+        if len(version_parts) < 2:
+            raise UsageError(f"Error fetching hstore version. Bad format: {version}")
+
+        return (int(version_parts[0]), int(version_parts[1]))
+
+
 class ConnectionContext(ContextManager[Connection]):
     """ Context manager of the connection that also provides direct access
         to the underlying connection.