Kaydet (Commit) 4b922b80 authored tarafından Shai Berger's avatar Shai Berger

[1.7.x] Fixed #22816 -- Corrected Oracle feature flag and fixed introspection test

Backport of 61229040 from master
üst 1cb5dfe0
...@@ -666,6 +666,10 @@ class BaseDatabaseFeatures(object): ...@@ -666,6 +666,10 @@ class BaseDatabaseFeatures(object):
can_introspect_max_length = True can_introspect_max_length = True
# Can the backend determine reliably if a field is nullable? # 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 can_introspect_null = True
# Confirm support for introspected foreign keys # Confirm support for introspected foreign keys
......
...@@ -111,7 +111,6 @@ class DatabaseFeatures(BaseDatabaseFeatures): ...@@ -111,7 +111,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_tablespaces = True supports_tablespaces = True
supports_sequence_reset = False supports_sequence_reset = False
can_introspect_max_length = False can_introspect_max_length = False
can_introspect_null = False
can_introspect_time_field = False can_introspect_time_field = False
atomic_transactions = False atomic_transactions = False
supports_combined_alters = False supports_combined_alters = False
......
...@@ -73,15 +73,14 @@ class IntrospectionTests(TestCase): ...@@ -73,15 +73,14 @@ class IntrospectionTests(TestCase):
[30, 30, 75] [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') @skipUnlessDBFeature('can_introspect_null')
def test_get_table_description_nullable(self): def test_get_table_description_nullable(self):
with connection.cursor() as cursor: with connection.cursor() as cursor:
desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table) desc = connection.introspection.get_table_description(cursor, Reporter._meta.db_table)
nullable_by_backend = connection.features.interprets_empty_strings_as_nulls
self.assertEqual( self.assertEqual(
[r[6] for r in desc], [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 # Regression test for #9991 - 'real' types in postgres
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment