summaryrefslogtreecommitdiff
path: root/test/dialect
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2018-03-30 11:22:30 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2018-03-30 11:22:30 -0400
commitf55c4f6bd2cb2f2b18e62159361ce7ecb5897396 (patch)
tree13dd4b79b15231c6558d392733d0a4db0e04ce40 /test/dialect
parentf9c4b5ea7deca071d38e89cbd5643b98f78dd25f (diff)
downloadsqlalchemy-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.py31
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