mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Added a flag for the ability to introspect nullable fields.
Previously this was conflated with another Oracle-specific behavior.
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| 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 | ||||
|  | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user