Skip to content

Commit e1db914

Browse files
committed
fix: workaround for non-usual PG_VERSION string
1 parent 37ddafe commit e1db914

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

mamonsu/plugins/pgsql/driver/pg8000/core.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1416,7 +1416,12 @@ def handle_PARAMETER_STATUS(self, data, ps):
14161416
pass
14171417

14181418
elif key == b"server_version":
1419-
self._server_version = packaging.version.parse(value.decode('ascii'))
1419+
# LooseVersion() from distutils was able to handle non-relevant strings
1420+
# in version (like "16.2 (Ubuntu 16.2-1.pgdg20.04+1)")
1421+
# since distutils became deprecated we need this hack hoping that
1422+
# postgres package maintainers won't come up with something more exotic
1423+
string_version = value.decode('ascii').split(' ')[0]
1424+
self._server_version = packaging.version.parse(string_version)
14201425
if self._server_version < packaging.version.parse('8.2.0'):
14211426
self._commands_with_count = (
14221427
b"INSERT", b"DELETE", b"UPDATE", b"MOVE")

mamonsu/plugins/pgsql/driver/pool.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,10 @@ def server_version(self, db=None):
124124
db = self._normalize_db(db)
125125
if db in self._cache["server_version"]["storage"]:
126126
return self._cache["server_version"]["storage"][db]
127+
128+
version_string = self.query("show server_version", db)[0][0]
127129
result = bytes(
128-
self.query("show server_version", db)[0][0], "utf-8")
130+
version_string.split(" ")[0], "utf-8")
129131
self._cache["server_version"]["storage"][db] = "{0}".format(
130132
result.decode("ascii"))
131133
return self._cache["server_version"]["storage"][db]

0 commit comments

Comments
 (0)