Commit 8dc76c4b authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Fixed test failure caused by different NULL ordering between backends

parent 90540985
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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

+1 −0
Original line number Diff line number Diff line
@@ -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):
+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
        )