diff options
| author | Shai Berger <shai@platonix.com> | 2015-02-18 00:50:45 +0200 |
|---|---|---|
| committer | Shai Berger <shai@platonix.com> | 2015-02-19 02:44:08 +0200 |
| commit | 66d37e593c8fa22be226b34b4fc1f60f85dcdc26 (patch) | |
| tree | 35217077ad554d2e466a0cff5246fec18c4be14c /tests | |
| parent | e2a3be1e4d9a85aa30f1b7d9064b5abb1569eea6 (diff) | |
[1.8.x] Fixed #24307: Avoided redundant column nullability modifications on Oracle
Thanks Joris Benschop for the report, and Tim Graham for the tests.
Backport of ceadc94f09 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/schema/tests.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 7961ffa36a..901397e391 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -1,6 +1,7 @@ import datetime import itertools import unittest +from copy import copy from django.db import ( DatabaseError, IntegrityError, OperationalError, connection, @@ -411,7 +412,7 @@ class SchemaTests(TransactionTestCase): # Ensure the field is right afterwards columns = self.column_classes(Author) self.assertEqual(columns['name'][0], "TextField") - self.assertEqual(bool(columns['name'][1][6]), False) + self.assertEqual(bool(columns['name'][1][6]), bool(connection.features.interprets_empty_strings_as_nulls)) def test_alter_text_field(self): # Regression for "BLOB/TEXT column 'info' can't have a default value") @@ -454,6 +455,36 @@ class SchemaTests(TransactionTestCase): self.assertEqual(Author.objects.get(name='Not null author').height, 12) self.assertEqual(Author.objects.get(name='Null author').height, 42) + def test_alter_charfield_to_null(self): + """ + #24307 - Should skip an alter statement on databases with + interprets_empty_strings_as_null when changing a CharField to null. + """ + # Create the table + with connection.schema_editor() as editor: + editor.create_model(Author) + # Change the CharField to null + old_field = Author._meta.get_field('name') + new_field = copy(old_field) + new_field.null = True + with connection.schema_editor() as editor: + editor.alter_field(Author, old_field, new_field) + + def test_alter_textfield_to_null(self): + """ + #24307 - Should skip an alter statement on databases with + interprets_empty_strings_as_null when changing a TextField to null. + """ + # Create the table + with connection.schema_editor() as editor: + editor.create_model(Note) + # Change the TextField to null + old_field = Note._meta.get_field('info') + new_field = copy(old_field) + new_field.null = True + with connection.schema_editor() as editor: + editor.alter_field(Note, old_field, new_field) + @unittest.skipUnless(connection.features.supports_combined_alters, "No combined ALTER support") def test_alter_null_to_not_null_keeping_default(self): """ |
