summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShai Berger <shai@platonix.com>2014-08-22 05:08:53 +0300
committerShai Berger <shai@platonix.com>2014-08-22 05:08:53 +0300
commit56252e7f46afce36fd112971c28188a3fd509a43 (patch)
tree23e60d39cd30c4de1379b0206a6263e9beb994a9
parentb902be798e4a2b760fa6bc86dac5af1c127e5e58 (diff)
Fixed schema test for Oracle 11.2.0.1 which is used in Django Project's CI.
Refs #23073 Workaround. Refs #22738 Repeats the mysql "offense". When the issue is solved, the Oracle special case should be made to play with the solution (that is, Oracle should be fixed the same way that mysql and the 3rd-party backneds are).
-rw-r--r--django/db/backends/oracle/base.py13
-rw-r--r--tests/schema/tests.py3
2 files changed, 13 insertions, 3 deletions
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py
index 6711626dcb..7a152ea018 100644
--- a/django/db/backends/oracle/base.py
+++ b/django/db/backends/oracle/base.py
@@ -704,14 +704,21 @@ class DatabaseWrapper(BaseDatabaseWrapper):
return True
@cached_property
- def oracle_version(self):
+ def oracle_full_version(self):
with self.temporary_connection():
- version = self.connection.version
+ return self.connection.version
+
+ @cached_property
+ def oracle_version(self):
try:
- return int(version.split('.')[0])
+ return int(self.oracle_full_version.split('.')[0])
except ValueError:
return None
+ @cached_property
+ def version_has_default_introspection_bug(self):
+ return self.oracle_full_version < '11.2.0.2'
+
class OracleParam(object):
"""
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 4222510040..17aab038c9 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -318,6 +318,9 @@ class SchemaTests(TransactionTestCase):
if connection.vendor == 'mysql':
self.assertEqual(field_type, 'IntegerField')
self.assertEqual(field_info.precision, 1)
+ elif connection.vendor == 'oracle' and connection.version_has_default_introspection_bug:
+ self.assertEqual(field_type, 'IntegerField')
+ self.assertEqual(field_info.precision, 0)
else:
self.assertEqual(field_type, 'BooleanField')