Skip to content

Commit cdbcb2b

Browse files
committed
Fix position of order_by parameters in Select query
The order_by must come after the parameters of having and windows. Closes #94
1 parent 5cb7f91 commit cdbcb2b

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

CHANGELOG

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
* Fix position of order_by parameters in Select query
12
* Add support for weak reference on SQL objects
23
* Add support for Python 3.13
34

sql/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -692,13 +692,13 @@ def params(self):
692692
if self.group_by:
693693
for expression in self.group_by:
694694
p.extend(expression.params)
695-
if self.order_by:
696-
for expression in self.order_by:
697-
p.extend(expression.params)
698695
if self.having:
699696
p.extend(self.having.params)
700697
for window in self.windows:
701698
p.extend(window.params)
699+
if self.order_by:
700+
for expression in self.order_by:
701+
p.extend(expression.params)
702702
p.extend(self._limit_offset_params)
703703
return tuple(p)
704704

sql/tests/test_select.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -531,14 +531,24 @@ def test_select_invalid_window(self):
531531
def test_order_params(self):
532532
with_ = With(query=self.table.select(self.table.c,
533533
where=(self.table.c > 1)))
534-
w = Window([Literal(8)])
534+
w = Window([Literal(7)])
535535
query = Select([Literal(2), Min(self.table.c, window=w)],
536536
from_=self.table.select(where=self.table.c > 3),
537537
with_=with_,
538538
where=self.table.c > 4,
539539
group_by=[Literal(5)],
540-
order_by=[Literal(6)],
541-
having=Literal(7))
540+
having=Literal(6),
541+
order_by=[Literal(8)])
542+
self.assertEqual(
543+
str(query),
544+
'WITH "c" AS (SELECT "a"."c" FROM "t" AS "a" WHERE ("a"."c" > %s))'
545+
' SELECT %s, MIN("a"."c") OVER "b" '
546+
'FROM SELECT * FROM "t" AS "a" WHERE ("a"."c" > %s) '
547+
'WHERE ("a"."c" > %s) '
548+
'GROUP BY %s '
549+
'HAVING %s '
550+
'WINDOW "b" AS (PARTITION BY %s) '
551+
'ORDER BY %s')
542552
self.assertEqual(tuple(query.params), (1, 2, 3, 4, 5, 6, 7, 8))
543553

544554
def test_no_as(self):

0 commit comments

Comments
 (0)