From: Mike Bayer Date: Wed, 7 Mar 2018 21:27:26 +0000 (-0500) Subject: Raise cx_Oracle minimum version to 5.2 X-Git-Tag: rel_1_3_0b1~226^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4982a250a9b22795b47caf5fc42225689c1da919;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Raise cx_Oracle minimum version to 5.2 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 --- diff --git a/doc/build/changelog/unreleased_12/4211.rst b/doc/build/changelog/unreleased_12/4211.rst new file mode 100644 index 0000000000..9de8bb64c2 --- /dev/null +++ b/doc/build/changelog/unreleased_12/4211.rst @@ -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. diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index 5f07e869ee..9ae7101f85 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -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") diff --git a/test/dialect/oracle/test_dialect.py b/test/dialect/oracle/test_dialect.py index 83a875c2e7..fc6eba89a7 100644 --- a/test/dialect/oracle/test_dialect.py +++ b/test/dialect/oracle/test_dialect.py @@ -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'