Skip to content

Commit 05dce25

Browse files
committed
Fix server version parsing when it contains trailing data
Some distros (e.g Debian) like may inject their branding into the numeric version string, so make sure to only look at stuff before the first space. Fixes: #250.
1 parent 803c115 commit 05dce25

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

asyncpg/serverversion.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ def split_server_version_string(version_string):
1313
if version_string.startswith('PostgreSQL '):
1414
version_string = version_string[len('PostgreSQL '):]
1515
if version_string.startswith('Postgres-XL'):
16-
version_string = version_string[len('Postgre-XL '):]
16+
version_string = version_string[len('Postgres-XL '):]
1717

18+
# Some distros (e.g Debian) like may inject their branding
19+
# into the numeric version string, so make sure to only look
20+
# at stuff before the first space.
21+
version_string = version_string.split(' ')[0]
1822
parts = version_string.strip().split('.')
1923
if not parts[-1].isdigit():
2024
# release level specified

tests/test_connect.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,15 @@ async def test_server_version_01(self):
4949
def test_server_version_02(self):
5050
versions = [
5151
("9.2", (9, 2, 0, 'final', 0),),
52-
("9.2.1", (9, 2, 1, 'final', 0),),
52+
("Postgres-XL 9.2.1", (9, 2, 1, 'final', 0),),
5353
("9.4beta1", (9, 4, 0, 'beta', 1),),
5454
("10devel", (10, 0, 0, 'devel', 0),),
5555
("10beta2", (10, 0, 0, 'beta', 2),),
5656
# For PostgreSQL versions >=10 we always
5757
# set version.minor to 0.
5858
("10.1", (10, 0, 1, 'final', 0),),
5959
("11.1.2", (11, 0, 1, 'final', 0),),
60+
("PostgreSQL 10.1 (Debian 10.1-3)", (10, 0, 1, 'final', 0),),
6061
]
6162
for version, expected in versions:
6263
result = split_server_version_string(version)

0 commit comments

Comments
 (0)