summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/changelog/unreleased_12/4211.rst8
-rw-r--r--lib/sqlalchemy/dialects/oracle/cx_oracle.py4
-rw-r--r--test/dialect/oracle/test_dialect.py19
3 files changed, 28 insertions, 3 deletions
diff --git a/doc/build/changelog/unreleased_12/4211.rst b/doc/build/changelog/unreleased_12/4211.rst
new file mode 100644
index 000000000..9de8bb64c
--- /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 5f07e869e..9ae7101f8 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 83a875c2e..fc6eba89a 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'