From 7bbf960a3d1fa0a808afc700e4d86ea3e2e79af3 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 (cherry picked from commit b6d3f60791834ead92564fc58afebc2c3eb4a2ff) --- 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 6f891c47cc..81c80abb85 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 1d6951c232..5f10ab9a9f 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -2291,7 +2291,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