summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2013-08-20 11:33:44 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2013-08-20 11:33:44 +0300
commit8dc76c4b9108f49afc5db07a23f34ad259a7642b (patch)
treed2bbfb4b7019c834e1de309350d4c7d50ff3c51b
parent905409855c6b69f613190fcc2d8bd8bf5e1580b5 (diff)
Fixed test failure caused by different NULL ordering between backends
-rw-r--r--django/db/backends/__init__.py3
-rw-r--r--django/db/backends/postgresql_psycopg2/base.py1
-rw-r--r--tests/queries/models.py4
-rw-r--r--tests/queries/tests.py8
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
)