mirror of
https://github.com/ent/ent.git
synced 2026-04-28 13:40:56 +03:00
dialect/sql/sqlgraph: ignore ORDER BY clauses in COUNT queries (#3226)
This commit is contained in:
@@ -645,6 +645,11 @@ func (q *query) count(ctx context.Context, drv dialect.Driver) (int, error) {
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
// Remove any ORDER BY clauses present in the COUNT query as
|
||||
// they are not allowed in some databases, such as PostgreSQL.
|
||||
if q.Order != nil {
|
||||
selector.ClearOrder()
|
||||
}
|
||||
// If no columns were selected in count,
|
||||
// the default selection is by node ids.
|
||||
columns := q.Node.Columns
|
||||
|
||||
@@ -2198,11 +2198,11 @@ func TestQueryNodes(t *testing.T) {
|
||||
AddRow(1, 10, nil, nil, nil).
|
||||
AddRow(2, 20, "", 0, 0).
|
||||
AddRow(3, 30, "a8m", 1, 1))
|
||||
mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`id`) FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
|
||||
mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`id`) FROM `users` WHERE `age` < ? LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
|
||||
WithArgs(40).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"COUNT"}).
|
||||
AddRow(3))
|
||||
mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`name`) FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
|
||||
mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`name`) FROM `users` WHERE `age` < ? LIMIT 3 OFFSET 4 FOR UPDATE NOWAIT")).
|
||||
WithArgs(40).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"COUNT"}).
|
||||
AddRow(3))
|
||||
|
||||
Reference in New Issue
Block a user