From d510d89209180cff27a65e284e2bb4dff6c709e4 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Mon, 29 Jun 2026 11:04:48 +0300 Subject: [PATCH 1/2] fix(version): consider trial --- mamonsu/plugins/pgsql/driver/pool.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mamonsu/plugins/pgsql/driver/pool.py b/mamonsu/plugins/pgsql/driver/pool.py index 00ce38a..d70a9d1 100644 --- a/mamonsu/plugins/pgsql/driver/pool.py +++ b/mamonsu/plugins/pgsql/driver/pool.py @@ -155,6 +155,7 @@ def server_version(self, db=None): return self._cache["server_version"]["storage"][db] version_string = self.query("show server_version", db)[0][0] + version_string = version_string.split('-')[0] version_string = version_string.rstrip("devel") result = bytes( version_string.split(" ")[0], "utf-8") From b01dfdacb2768beaafba959a2cd30f05a8c4bb9d Mon Sep 17 00:00:00 2001 From: Alexandr Date: Mon, 29 Jun 2026 12:41:40 +0300 Subject: [PATCH 2/2] fix(version): add test --- mamonsu/plugins/pgsql/driver/pool.py | 5 +++-- mamonsu/plugins/pgsql/driver/version.py | 9 ++++++++ tests/tests/bash/test_pgsql/__init__.py | 0 tests/tests/bash/test_pgsql/test_version.py | 23 +++++++++++++++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 mamonsu/plugins/pgsql/driver/version.py create mode 100644 tests/tests/bash/test_pgsql/__init__.py create mode 100644 tests/tests/bash/test_pgsql/test_version.py diff --git a/mamonsu/plugins/pgsql/driver/pool.py b/mamonsu/plugins/pgsql/driver/pool.py index d70a9d1..a542587 100644 --- a/mamonsu/plugins/pgsql/driver/pool.py +++ b/mamonsu/plugins/pgsql/driver/pool.py @@ -1,4 +1,5 @@ from .connection import Connection, ConnectionInfo +from .version import extract_version from mamonsu.lib.version import parse import threading @@ -155,8 +156,8 @@ def server_version(self, db=None): return self._cache["server_version"]["storage"][db] version_string = self.query("show server_version", db)[0][0] - version_string = version_string.split('-')[0] - version_string = version_string.rstrip("devel") + version_string = extract_version(version_string) + result = bytes( version_string.split(" ")[0], "utf-8") self._cache["server_version"]["storage"][db] = "{0}".format( diff --git a/mamonsu/plugins/pgsql/driver/version.py b/mamonsu/plugins/pgsql/driver/version.py new file mode 100644 index 0000000..2d6b8dc --- /dev/null +++ b/mamonsu/plugins/pgsql/driver/version.py @@ -0,0 +1,9 @@ +import re + +def extract_version(raw_version): + match = re.search(r'\d+(?:\.\d+)*', raw_version) + + if match: + return match.group(0) + + return '' \ No newline at end of file diff --git a/tests/tests/bash/test_pgsql/__init__.py b/tests/tests/bash/test_pgsql/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/bash/test_pgsql/test_version.py b/tests/tests/bash/test_pgsql/test_version.py new file mode 100644 index 0000000..8815a1d --- /dev/null +++ b/tests/tests/bash/test_pgsql/test_version.py @@ -0,0 +1,23 @@ +import pytest + +from mamonsu.plugins.pgsql.driver.version import extract_version + +class TestVersion: + @pytest.mark.parametrize("raw, expected", [ + ("14.6", "14.6"), + ("17.2", "17.2"), + ("9.3.10", "9.3.10"), + ("15.1 (Debian 15.1-1.pgdg110+1)", "15.1"), + ("15.1 (Ubuntu 15.1-1.pgdg22.04+1)", "15.1"), + ("11.2-YB-2.17.3.0-b0", "11.2"), + ("1.2-xxx", "1.2"), + ("17.10 - TRIAL", "17.10"), + ("16.14-TRIAL", "16.14"), + ("16beta1", "16"), + ("17.1rc1", "17.1"), + ("12devel", "12"), + ("16.14/TRIAL", "16.14"), + ("", ""), + ]) + def test_extract_version(self, raw, expected): + assert extract_version(raw) == expected