[1.7.x] Fixed #22816 -- Corrected Oracle feature flag and fixed introspection test
Backport of 6122904
from master
This commit is contained in:
parent
1cb5dfe05f
commit
4b922b8094
|
@ -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):
|
||||||
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):
|
||||||
[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
|
||||||
|
|
Loading…
Reference in New Issue