From b6d3f60791834ead92564fc58afebc2c3eb4a2ff Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 7 Jun 2017 12:30:22 -0400 Subject: [PATCH] Parse for Postgresql version w/ "beta" Continuing with the fix that correctly handles Postgresql version string "10devel" released in 1.1.8, an additional regexp bump to handle version strings of the form "10beta1". While Postgresql now offers better ways to get this information, we are sticking w/ the regexp at least through 1.1.x for the least amount of risk to compatibility w/ older or alternate Postgresql databases. Change-Id: I12ddb06465f7dcf80563c27632441ef5963f60d4 Fixes: #4005 --- doc/build/changelog/changelog_11.rst | 13 +++++++++++++ lib/sqlalchemy/dialects/postgresql/base.py | 2 +- test/dialect/postgresql/test_dialect.py | 7 ++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/doc/build/changelog/changelog_11.rst b/doc/build/changelog/changelog_11.rst index cde9b45cce..c0e3c18d62 100644 --- a/doc/build/changelog/changelog_11.rst +++ b/doc/build/changelog/changelog_11.rst @@ -21,6 +21,19 @@ .. changelog:: :version: 1.1.11 + .. change:: 4005 + :tags: bug, postgresql + :tickets: 4005 + :versions: 1.2.0b1 + + Continuing with the fix that correctly handles Postgresql + version string "10devel" released in 1.1.8, an additional regexp + bump to handle version strings of the form "10beta1". While + Postgresql now offers better ways to get this information, we + are sticking w/ the regexp at least through 1.1.x for the least + amount of risk to compatibility w/ older or alternate Postgresql + databases. + .. change:: 3994 :tags: bug, mssql :tickets: 3994 diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 2510bc9752..e583bd5cff 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -2303,7 +2303,7 @@ class PGDialect(default.DefaultDialect): v = connection.execute("select version()").scalar() m = re.match( r'.*(?:PostgreSQL|EnterpriseDB) ' - r'(\d+)\.?(\d+)?(?:\.(\d+))?(?:\.\d+)?(?:devel)?', + r'(\d+)\.?(\d+)?(?:\.(\d+))?(?:\.\d+)?(?:devel|beta)?', v) if not m: raise AssertionError( diff --git a/test/dialect/postgresql/test_dialect.py b/test/dialect/postgresql/test_dialect.py index c79b186de0..376ba081cf 100644 --- a/test/dialect/postgresql/test_dialect.py +++ b/test/dialect/postgresql/test_dialect.py @@ -63,7 +63,12 @@ class MiscTest(fixtures.TestBase, AssertsExecutionResults, AssertsCompiledSQL): 'release build 1080137', (9, 2, 4)), ( 'PostgreSQL 10devel on x86_64-pc-linux-gnu' - 'compiled by gcc (GCC) 6.3.1 20170306, 64-bit', (10,))]: + 'compiled by gcc (GCC) 6.3.1 20170306, 64-bit', (10,)), + ( + 'PostgreSQL 10beta1 on x86_64-pc-linux-gnu, ' + 'compiled by gcc (GCC) 4.8.5 20150623 ' + '(Red Hat 4.8.5-11), 64-bit', (10,)) + ]: eq_(testing.db.dialect._get_server_version_info(mock_conn(string)), version) -- 2.47.2