]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Raise cx_Oracle minimum version to 5.2
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 7 Mar 2018 21:27:26 +0000 (16:27 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 7 Mar 2018 21:27:26 +0000 (16:27 -0500)
The minimum cx_Oracle version supported is 5.2 (June 2015).  Previously,
the dialect asserted against version 5.0 but as of 1.2.2 we are using some
symbols that did not appear until 5.2.

Change-Id: I6fa4238f1722789924f4a6473fdce6f524333825
Fixes: #4211
doc/build/changelog/unreleased_12/4211.rst [new file with mode: 0644]
lib/sqlalchemy/dialects/oracle/cx_oracle.py
test/dialect/oracle/test_dialect.py

diff --git a/doc/build/changelog/unreleased_12/4211.rst b/doc/build/changelog/unreleased_12/4211.rst
new file mode 100644 (file)
index 0000000..9de8bb6
--- /dev/null
@@ -0,0 +1,8 @@
+.. change::
+    :tags: bug, oracle
+    :tickets: 4211
+    :versions: 1.3.0b1
+
+    The minimum cx_Oracle version supported is 5.2 (June 2015).  Previously,
+    the dialect asserted against version 5.0 but as of 1.2.2 we are using some
+    symbols that did not appear until 5.2.
index 5f07e869ee68413b614194a32068526f33b75665..9ae7101f85e390c99a8d2171cfd8214c3fdf1f70 100644 (file)
@@ -614,9 +614,9 @@ class OracleDialect_cx_oracle(OracleDialect):
             self.cx_oracle_ver = (0, 0, 0)
         else:
             self.cx_oracle_ver = self._parse_cx_oracle_ver(cx_Oracle.version)
-            if self.cx_oracle_ver < (5, 0) and self.cx_oracle_ver > (0, 0, 0):
+            if self.cx_oracle_ver < (5, 2) and self.cx_oracle_ver > (0, 0, 0):
                 raise exc.InvalidRequestError(
-                    "cx_Oracle version 5.0 and above are supported")
+                    "cx_Oracle version 5.2 and above are supported")
 
             self._has_native_int = hasattr(cx_Oracle, "NATIVE_INT")
 
index 83a875c2e78db612892dd67e32f672b2ec441400..fc6eba89a717654c089e9a4bea4c79b809ac3026 100644 (file)
@@ -28,7 +28,8 @@ import datetime
 import os
 from sqlalchemy import sql
 from sqlalchemy.testing.mock import Mock
-
+from sqlalchemy.testing import mock
+from sqlalchemy import exc
 
 class DialectTest(fixtures.TestBase):
     def test_cx_oracle_version_parse(self):
@@ -49,6 +50,22 @@ class DialectTest(fixtures.TestBase):
             (6, 0)
         )
 
+    def test_minimum_version(self):
+        with mock.patch(
+                "sqlalchemy.dialects.oracle.cx_oracle.OracleDialect_cx_oracle."
+                "_parse_cx_oracle_ver", lambda self, vers: (5, 1, 5)):
+            assert_raises_message(
+                exc.InvalidRequestError,
+                "cx_Oracle version 5.2 and above are supported",
+                cx_oracle.OracleDialect_cx_oracle,
+                dbapi=Mock()
+            )
+
+        with mock.patch(
+                "sqlalchemy.dialects.oracle.cx_oracle.OracleDialect_cx_oracle."
+                "_parse_cx_oracle_ver", lambda self, vers: (5, 3, 1)):
+            cx_oracle.OracleDialect_cx_oracle(dbapi=Mock())
+
 
 class OutParamTest(fixtures.TestBase, AssertsExecutionResults):
     __only_on__ = 'oracle+cx_oracle'