From 612290400f79fb2293a6a0b0cfa5743ab0cef6b1 Mon Sep 17 00:00:00 2001 From: Shai Berger Date: Sat, 14 Jun 2014 00:43:49 +0300 Subject: [PATCH] Fixed #22816 -- Corrected Oracle feature flag and fixed introspection test --- django/db/backends/__init__.py | 4 ++++ django/db/backends/oracle/base.py | 1 - tests/introspection/tests.py | 5 ++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index f4f2ba2fe0..911531a2cc 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -576,6 +576,10 @@ class BaseDatabaseFeatures(object): can_introspect_max_length = True # Can the backend determine reliably if a field is nullable? + # Note that this is separate from interprets_empty_strings_as_nulls, + # although the latter feature, when true, interferes with correct + # setting (and introspection) of CharFields' nullability. + # This is True for all core backends. can_introspect_null = True # Confirm support for introspected foreign keys diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index b0b9a5f5a1..8bd7f04086 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -111,7 +111,6 @@ class DatabaseFeatures(BaseDatabaseFeatures): supports_tablespaces = True supports_sequence_reset = False can_introspect_max_length = False - can_introspect_null = False can_introspect_time_field = False atomic_transactions = False supports_combined_alters = False diff --git a/tests/introspection/tests.py b/tests/introspection/tests.py index 432658c21f..03962b33bf 100644 --- a/tests/introspection/tests.py +++ b/tests/introspection/tests.py @@ -73,15 +73,14 @@ class IntrospectionTests(TestCase): [30, 30, 75] ) - # The following test fails on Oracle. Since it forces null=True under the - # hood in some cases, its idea about null_ok is different from ours. @skipUnlessDBFeature('can_introspect_null') def test_get_table_description_nullable(self): with connection.cursor() as cursor: desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table) + nullable_by_backend = connection.features.interprets_empty_strings_as_nulls self.assertEqual( [r[6] for r in desc], - [False, False, False, False, True, True] + [False, nullable_by_backend, nullable_by_backend, nullable_by_backend, True, True] ) # Regression test for #9991 - 'real' types in postgres