diff options
| author | Anssi Kääriäinen <akaariai@gmail.com> | 2013-08-20 11:33:44 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2013-08-20 11:33:44 +0300 |
| commit | 8dc76c4b9108f49afc5db07a23f34ad259a7642b (patch) | |
| tree | d2bbfb4b7019c834e1de309350d4c7d50ff3c51b | |
| parent | 905409855c6b69f613190fcc2d8bd8bf5e1580b5 (diff) | |
Fixed test failure caused by different NULL ordering between backends
| -rw-r--r-- | django/db/backends/__init__.py | 3 | ||||
| -rw-r--r-- | django/db/backends/postgresql_psycopg2/base.py | 1 | ||||
| -rw-r--r-- | tests/queries/models.py | 4 | ||||
| -rw-r--r-- | tests/queries/tests.py | 8 |
4 files changed, 14 insertions, 2 deletions
diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index 946c650c34..07d45c9175 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -595,6 +595,9 @@ class BaseDatabaseFeatures(object): # to remove any ordering? requires_explicit_null_ordering_when_grouping = False + # Does the backend order NULL values as largest or smallest? + nulls_order_largest = False + # Is there a 1000 item limit on query parameters? supports_1000_query_parameters = True diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index e676065578..f0a82c22d6 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -55,6 +55,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): supports_tablespaces = True supports_transactions = True can_distinct_on_fields = True + nulls_order_largest = True class DatabaseWrapper(BaseDatabaseWrapper): diff --git a/tests/queries/models.py b/tests/queries/models.py index 71346d8be9..3a638b2867 100644 --- a/tests/queries/models.py +++ b/tests/queries/models.py @@ -262,9 +262,13 @@ class ReservedName(models.Model): return self.name # A simpler shared-foreign-key setup that can expose some problems. +@python_2_unicode_compatible class SharedConnection(models.Model): data = models.CharField(max_length=10) + def __str__(self): + return self.data + class PointerA(models.Model): connection = models.ForeignKey(SharedConnection) diff --git a/tests/queries/tests.py b/tests/queries/tests.py index bb4e9eee8f..91d4b17d0b 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -2984,7 +2984,11 @@ class Ticket14056Tests(TestCase): s2 = SharedConnection.objects.create(data='s2') s3 = SharedConnection.objects.create(data='s3') PointerA.objects.create(connection=s2) + expected_ordering = ( + [s1, s3, s2] if connection.features.nulls_order_largest + else [s2, s1, s3] + ) self.assertQuerysetEqual( - SharedConnection.objects.order_by('pointera__connection', 'pk'), - [s1, s3, s2], lambda x: x + SharedConnection.objects.order_by('-pointera__connection', 'pk'), + expected_ordering, lambda x: x ) |
