diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-03-30 11:22:30 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-03-30 11:22:30 -0400 |
| commit | f55c4f6bd2cb2f2b18e62159361ce7ecb5897396 (patch) | |
| tree | 13dd4b79b15231c6558d392733d0a4db0e04ce40 /test/dialect | |
| parent | f9c4b5ea7deca071d38e89cbd5643b98f78dd25f (diff) | |
| download | sqlalchemy-f55c4f6bd2cb2f2b18e62159361ce7ecb5897396.tar.gz | |
Filter non-integer characters from pyodbc SQL Server version
Adjusted the SQL Server version detection for pyodbc to only allow for
numeric tokens, filtering out non-integers, since the dialect does tuple-
numeric comparisons with this value. This is normally true for all known
SQL Server / pyodbc drivers in any case.
Change-Id: I4ab18a07e19231091b5e877ba1fccd5eda72a992
Fixes: #4227
Diffstat (limited to 'test/dialect')
| -rw-r--r-- | test/dialect/mssql/test_engine.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/dialect/mssql/test_engine.py b/test/dialect/mssql/test_engine.py index b69e62572..db54381cf 100644 --- a/test/dialect/mssql/test_engine.py +++ b/test/dialect/mssql/test_engine.py @@ -271,3 +271,34 @@ class VersionDetectionTest(fixtures.TestBase): dialect._get_server_version_info(conn), (11, 0, 9216, 62) ) + + def test_pyodbc_version_productversion(self): + dialect = pyodbc.MSDialect_pyodbc() + + conn = Mock(scalar=Mock(return_value="11.0.9216.62")) + eq_( + dialect._get_server_version_info(conn), + (11, 0, 9216, 62) + ) + + def test_pyodbc_version_fallback(self): + dialect = pyodbc.MSDialect_pyodbc() + dialect.dbapi = Mock() + + for vers, expected in [ + ("11.0.9216.62", (11, 0, 9216, 62)), + ("notsqlserver.11.foo.0.9216.BAR.62", (11, 0, 9216, 62)), + ("Not SQL Server Version 10.5", (5, )) + ]: + conn = Mock( + scalar=Mock( + side_effect=exc.DBAPIError("stmt", "params", None)), + connection=Mock( + getinfo=Mock(return_value=vers) + ) + ) + + eq_( + dialect._get_server_version_info(conn), + expected + )
\ No newline at end of file |
