Commit ced3e6b1 authored by Anssi Kääriäinen's avatar Anssi Kääriäinen Committed by Andrew Godwin
Browse files

Fixed test failure caused by different NULL ordering between backends

parent cea72045
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -599,6 +599,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

+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
    can_distinct_on_fields = True
    can_rollback_ddl = True
    supports_combined_alters = True
    nulls_order_largest = True


class DatabaseWrapper(BaseDatabaseWrapper):
+4 −0
Original line number Diff line number Diff line
@@ -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)

+6 −2
Original line number Diff line number Diff line
@@ -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
        )