mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #29500 -- Fixed SQLite function crashes on null values.
Co-authored-by: Srinivas Reddy Thatiparthy <thatiparthysreenivas@gmail.com> Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
This commit is contained in:
committed by
Tim Graham
parent
76dfa834e7
commit
34d6bceec4
@@ -1249,6 +1249,12 @@ class FTimeDeltaTests(TestCase):
|
||||
]
|
||||
self.assertEqual(delta_math, ['e4'])
|
||||
|
||||
queryset = Experiment.objects.annotate(shifted=ExpressionWrapper(
|
||||
F('start') + Value(None, output_field=models.DurationField()),
|
||||
output_field=models.DateTimeField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().shifted)
|
||||
|
||||
@skipUnlessDBFeature('supports_temporal_subtraction')
|
||||
def test_date_subtraction(self):
|
||||
queryset = Experiment.objects.annotate(
|
||||
@@ -1266,6 +1272,18 @@ class FTimeDeltaTests(TestCase):
|
||||
less_than_5_days = {e.name for e in queryset.filter(completion_duration__lt=datetime.timedelta(days=5))}
|
||||
self.assertEqual(less_than_5_days, {'e0', 'e1', 'e2'})
|
||||
|
||||
queryset = Experiment.objects.annotate(difference=ExpressionWrapper(
|
||||
F('completed') - Value(None, output_field=models.DateField()),
|
||||
output_field=models.DurationField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().difference)
|
||||
|
||||
queryset = Experiment.objects.annotate(shifted=ExpressionWrapper(
|
||||
F('completed') - Value(None, output_field=models.DurationField()),
|
||||
output_field=models.DateField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().shifted)
|
||||
|
||||
@skipUnlessDBFeature('supports_temporal_subtraction')
|
||||
def test_time_subtraction(self):
|
||||
Time.objects.create(time=datetime.time(12, 30, 15, 2345))
|
||||
@@ -1280,6 +1298,18 @@ class FTimeDeltaTests(TestCase):
|
||||
datetime.timedelta(hours=1, minutes=15, seconds=15, microseconds=2345)
|
||||
)
|
||||
|
||||
queryset = Time.objects.annotate(difference=ExpressionWrapper(
|
||||
F('time') - Value(None, output_field=models.TimeField()),
|
||||
output_field=models.DurationField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().difference)
|
||||
|
||||
queryset = Time.objects.annotate(shifted=ExpressionWrapper(
|
||||
F('time') - Value(None, output_field=models.DurationField()),
|
||||
output_field=models.TimeField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().shifted)
|
||||
|
||||
@skipUnlessDBFeature('supports_temporal_subtraction')
|
||||
def test_datetime_subtraction(self):
|
||||
under_estimate = [
|
||||
@@ -1292,6 +1322,18 @@ class FTimeDeltaTests(TestCase):
|
||||
]
|
||||
self.assertEqual(over_estimate, ['e4'])
|
||||
|
||||
queryset = Experiment.objects.annotate(difference=ExpressionWrapper(
|
||||
F('start') - Value(None, output_field=models.DateTimeField()),
|
||||
output_field=models.DurationField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().difference)
|
||||
|
||||
queryset = Experiment.objects.annotate(shifted=ExpressionWrapper(
|
||||
F('start') - Value(None, output_field=models.DurationField()),
|
||||
output_field=models.DateTimeField(),
|
||||
))
|
||||
self.assertIsNone(queryset.first().shifted)
|
||||
|
||||
@skipUnlessDBFeature('supports_temporal_subtraction')
|
||||
def test_datetime_subtraction_microseconds(self):
|
||||
delta = datetime.timedelta(microseconds=8999999999999999)
|
||||
|
||||
Reference in New Issue
Block a user