Loading django/db/backends/__init__.py +3 −0 Original line number Diff line number Diff line Loading @@ -571,6 +571,9 @@ class BaseDatabaseFeatures(object): # Can the backend determine reliably the length of a CharField? can_introspect_max_length = True # Can the backend determine reliably if a field is nullable? can_introspect_null = True # Confirm support for introspected foreign keys # Every database can do this reliably, except MySQL, # which can't do it for MyISAM tables Loading django/db/backends/oracle/base.py +1 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ 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 Loading tests/introspection/tests.py +4 −5 Original line number Diff line number Diff line from __future__ import unicode_literals from django.db import connection from django.test import TestCase, skipUnlessDBFeature, skipIfDBFeature from django.test import TestCase, skipUnlessDBFeature from .models import Reporter, Article Loading Loading @@ -73,10 +73,9 @@ class IntrospectionTests(TestCase): [30, 30, 75] ) # Oracle forces null=True under the hood in some cases (see # https://docs.djangoproject.com/en/dev/ref/databases/#null-and-empty-strings) # so its idea about null_ok in cursor.description is different from ours. @skipIfDBFeature('interprets_empty_strings_as_nulls') # 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) Loading Loading
django/db/backends/__init__.py +3 −0 Original line number Diff line number Diff line Loading @@ -571,6 +571,9 @@ class BaseDatabaseFeatures(object): # Can the backend determine reliably the length of a CharField? can_introspect_max_length = True # Can the backend determine reliably if a field is nullable? can_introspect_null = True # Confirm support for introspected foreign keys # Every database can do this reliably, except MySQL, # which can't do it for MyISAM tables Loading
django/db/backends/oracle/base.py +1 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ 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 Loading
tests/introspection/tests.py +4 −5 Original line number Diff line number Diff line from __future__ import unicode_literals from django.db import connection from django.test import TestCase, skipUnlessDBFeature, skipIfDBFeature from django.test import TestCase, skipUnlessDBFeature from .models import Reporter, Article Loading Loading @@ -73,10 +73,9 @@ class IntrospectionTests(TestCase): [30, 30, 75] ) # Oracle forces null=True under the hood in some cases (see # https://docs.djangoproject.com/en/dev/ref/databases/#null-and-empty-strings) # so its idea about null_ok in cursor.description is different from ours. @skipIfDBFeature('interprets_empty_strings_as_nulls') # 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) Loading