Skip to content

Commit e5adeee

Browse files
committed
BUG25519251: SelectStatement does not implement order_by() method
The SelectStatement object returned by Table.select() does not provide the order_by() method. This patch adds the order_by() method to SelectStatement by creating an alias of sort() inherited from FilterableStatement. Tests were changed accordingly.
1 parent 84adac8 commit e5adeee

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

lib/mysqlx/statement.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,18 @@ def __init__(self, table, *fields):
536536
super(SelectStatement, self).__init__(table, False)
537537
self._projection(*fields)
538538

539+
def order_by(self, *clauses):
540+
"""Sets the order by criteria.
541+
542+
Args:
543+
*clauses: The expression strings defining the order by criteria.
544+
545+
Returns:
546+
mysqlx.SelectStatement: SelectStatement object.
547+
"""
548+
self.sort(*clauses)
549+
return self
550+
539551
def group_by(self, *fields):
540552
"""Sets a grouping criteria for the resultset.
541553

tests/test_mysqlx_crud.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,7 @@ def test_select(self):
11031103
"".format(table_name)).execute()
11041104

11051105
table = self.schema.get_table("test")
1106-
result = table.select().sort("age DESC").execute()
1106+
result = table.select().order_by("age DESC").execute()
11071107
rows = result.fetch_all()
11081108
self.assertEqual(4, len(rows))
11091109
self.assertEqual(67, rows[0]["age"])
@@ -1114,7 +1114,7 @@ def test_select(self):
11141114
self.assertEqual(1, len(rows))
11151115

11161116
# test flexible params
1117-
result = table.select(['age', 'name']).sort("age DESC").execute()
1117+
result = table.select(['age', 'name']).order_by("age DESC").execute()
11181118
rows = result.fetch_all()
11191119
self.assertEqual(4, len(rows))
11201120

@@ -1199,20 +1199,21 @@ def test_having(self):
11991199
"".format(table_name)).execute()
12001200

12011201
table = self.schema.get_table("test")
1202-
result = table.select().group_by("gender").sort("age ASC").execute()
1202+
result = table.select().group_by("gender").order_by("age ASC").execute()
12031203
rows = result.fetch_all()
12041204
self.assertEqual(2, len(rows))
12051205
self.assertEqual(21, rows[0]["age"])
12061206
self.assertEqual(42, rows[1]["age"])
12071207

12081208
result = table.select().group_by("gender").having("gender = 'F'") \
1209-
.sort("age ASC").execute()
1209+
.order_by("age ASC").execute()
12101210
rows = result.fetch_all()
12111211
self.assertEqual(1, len(rows))
12121212
self.assertEqual(42, rows[0]["age"])
12131213

12141214
# test flexible params
1215-
result = table.select().group_by(["gender"]).sort(["name DESC", "age ASC"]).execute()
1215+
result = table.select().group_by(["gender"]) \
1216+
.order_by(["name DESC", "age ASC"]).execute()
12161217
rows = result.fetch_all()
12171218
self.assertEqual(2, len(rows))
12181219
self.assertEqual(42, rows[0]["age"])
@@ -1467,7 +1468,7 @@ def test_select(self):
14671468
view = self.schema.create_view(self.view_name) \
14681469
.defined_as(defined_as) \
14691470
.execute()
1470-
result = view.select().sort("age DESC").execute()
1471+
result = view.select().order_by("age DESC").execute()
14711472
rows = result.fetch_all()
14721473
self.assertEqual(4, len(rows))
14731474
self.assertEqual(67, rows[0]["age"])
@@ -1478,7 +1479,7 @@ def test_select(self):
14781479
self.assertEqual(1, len(rows))
14791480

14801481
# test flexible params
1481-
result = view.select(['age', 'name']).sort("age DESC").execute()
1482+
result = view.select(['age', 'name']).order_by("age DESC").execute()
14821483
rows = result.fetch_all()
14831484
self.assertEqual(4, len(rows))
14841485

@@ -1500,21 +1501,21 @@ def test_having(self):
15001501
view = self.schema.create_view(self.view_name) \
15011502
.defined_as(defined_as) \
15021503
.execute()
1503-
result = view.select().group_by("gender").sort("age ASC").execute()
1504+
result = view.select().group_by("gender").order_by("age ASC").execute()
15041505
rows = result.fetch_all()
15051506
self.assertEqual(2, len(rows))
15061507
self.assertEqual(21, rows[0]["age"])
15071508
self.assertEqual(42, rows[1]["age"])
15081509

15091510
result = view.select().group_by("gender").having("gender = 'F'") \
1510-
.sort("age ASC").execute()
1511+
.order_by("age ASC").execute()
15111512
rows = result.fetch_all()
15121513
self.assertEqual(1, len(rows))
15131514
self.assertEqual(42, rows[0]["age"])
15141515

15151516
# test flexible params
15161517
result = view.select().group_by(["gender"]) \
1517-
.sort(["name DESC", "age ASC"]).execute()
1518+
.order_by(["name DESC", "age ASC"]).execute()
15181519
rows = result.fetch_all()
15191520
self.assertEqual(2, len(rows))
15201521
self.assertEqual(42, rows[0]["age"])

0 commit comments

Comments
 (0)