]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
refactor(crdb): drop crdb_version; use server_version instead
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 7 Jun 2022 03:02:07 +0000 (05:02 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 12 Jul 2022 11:58:34 +0000 (12:58 +0100)
The server_version returned by CRDB is a misleading dummy. The version
tested is reported as 13.0 but certain features are more akin to
different versions (e.g. lack of range support and different behaviour
w.r.t. unknown/text adaptation).

psycopg/psycopg/crdb/connection.py
tests/crdb/test_conninfo.py
tests/test_conninfo.py
tools/update_oids.py

index a52bad03e5cfef205e7e3c28967cf76fb581e21f..998ba4720ef5a03fc2b50e392d9ff552859170f7 100644 (file)
@@ -157,15 +157,11 @@ class CrdbConnectionInfo(ConnectionInfo):
         return "CockroachDB"
 
     @property
-    def crdb_version(self) -> int:
+    def server_version(self) -> int:
         """
         Return the CockroachDB server version connected.
 
-        Return None if the server is not CockroachDB, else return a number in
-        the PostgreSQL format (e.g. 21.2.10 -> 200210)
-
-        Assume all the connections are on the same db: return a cached result on
-        following calls.
+        Return a number in the PostgreSQL format (e.g. 21.2.10 -> 200210)
         """
         sver = self.parameter_status("crdb_version")
         if not sver:
index 6fc36d0497acbc4c9712cec60b838f56eb752ff2..f1a5473ac389b67227ee2fe5a37aaab226d6a5b4 100644 (file)
@@ -7,8 +7,8 @@ def test_vendor(conn):
     assert conn.info.vendor == "CockroachDB"
 
 
-def test_crdb_version(conn):
-    assert conn.info.crdb_version > 200000
+def test_server_version(conn):
+    assert conn.info.server_version > 200000
 
 
 def test_backend_pid(conn):
index e9d959fb8db302aa60476d1cee851c6df891c0fe..a8111702e648340c8e5e71d8047571a9ca53a091 100644 (file)
@@ -212,6 +212,7 @@ class TestConnectionInfo:
         assert tz and isinstance(tz, str)
         assert tz == conn.execute("show timezone").fetchone()[0]
 
+    @pytest.mark.crdb("skip")
     def test_server_version(self, conn):
         assert conn.info.server_version == conn.pgconn.server_version
 
index 6812446f43b588140981a237911d41c73db6ad29..777f5e3a4591b543c4356211573c5a11307cbf71 100755 (executable)
@@ -75,7 +75,7 @@ def get_version_comment(conn: Connection) -> List[str]:
         version = f"{num // 10000}.{num % 100}"
     elif conn.info.vendor == "CockroachDB":
         assert isinstance(conn, CrdbConnection)
-        num = conn.info.crdb_version
+        num = conn.info.server_version
         version = f"{num // 10000}.{num % 10000 // 100}.{num % 100}"
     else:
         raise NotImplementedError(f"unexpected vendor: {conn.info.vendor}")