mirror of
https://github.com/django/django.git
synced 2025-10-26 07:06:08 +00:00
Fixed #35444 -- Added generic support for Aggregate.order_by.
This moves the behaviors of `order_by` used in Postgres aggregates into the `Aggregate` class. This allows for creating aggregate functions that support this behavior across all database engines. This is shown by moving the `StringAgg` class into the shared `aggregates` module and adding support for all databases. The Postgres `StringAgg` class is now a thin wrapper on the new shared `StringAgg` class. Thank you Simon Charette for the review.
This commit is contained in:
committed by
Sarah Boyce
parent
6d1cf5375f
commit
4b977a5d72
@@ -1720,14 +1720,14 @@ class WindowFunctionTests(TestCase):
|
||||
"""Window expressions can't be used in an INSERT statement."""
|
||||
msg = (
|
||||
"Window expressions are not allowed in this query (salary=<Window: "
|
||||
"Sum(Value(10000), order_by=OrderBy(F(pk), descending=False)) OVER ()"
|
||||
"Sum(Value(10000)) OVER ()"
|
||||
)
|
||||
with self.assertRaisesMessage(FieldError, msg):
|
||||
Employee.objects.create(
|
||||
name="Jameson",
|
||||
department="Management",
|
||||
hire_date=datetime.date(2007, 7, 1),
|
||||
salary=Window(expression=Sum(Value(10000), order_by=F("pk").asc())),
|
||||
salary=Window(expression=Sum(Value(10000))),
|
||||
)
|
||||
|
||||
def test_window_expression_within_subquery(self):
|
||||
@@ -2025,7 +2025,7 @@ class NonQueryWindowTests(SimpleTestCase):
|
||||
def test_invalid_order_by(self):
|
||||
msg = (
|
||||
"Window.order_by must be either a string reference to a field, an "
|
||||
"expression, or a list or tuple of them."
|
||||
"expression, or a list or tuple of them not {'-horse'}."
|
||||
)
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
Window(expression=Sum("power"), order_by={"-horse"})
|
||||
|
||||
Reference in New Issue
Block a user