Skip to content

Commit 0de81e4

Browse files
committed
fix broken tests
1 parent d628a31 commit 0de81e4

File tree

3 files changed

+16
-18
lines changed

3 files changed

+16
-18
lines changed

enginetest/enginetests.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4901,10 +4901,6 @@ func TestSessionSelectLimit(t *testing.T, harness Harness) {
49014901
Query: "SELECT i FROM (SELECT i FROM mytable ORDER BY i DESC) t ORDER BY i LIMIT 3",
49024902
Expected: []sql.Row{{1}, {2}, {3}},
49034903
},
4904-
{
4905-
Query: "SELECT i FROM (SELECT i FROM mytable ORDER BY i DESC) t ORDER BY i LIMIT 3",
4906-
Expected: []sql.Row{{1}, {2}, {3}},
4907-
},
49084904
{
49094905
Query: "select count(*), y from a group by y;",
49104906
Expected: []sql.Row{{2, 1}, {3, 2}},

sql/analyzer/replace_sort.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ func replaceIdxSortHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, so
5252
if hasOverlapping(sfExprs, mysqlRanges) {
5353
return n, transform.SameTree, nil
5454
}
55+
56+
isReverse := sortNode.SortFields[0].Order == sql.Descending
5557
// if the lookup does not need any reversing, do nothing
56-
if sortNode.SortFields[0].Order != sql.Descending {
58+
if (isReverse && lookup.IsReverse) || (!isReverse && !lookup.IsReverse) {
5759
return n, transform.NewTree, nil
5860
}
5961

@@ -67,7 +69,7 @@ func replaceIdxSortHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, so
6769
lookup.IsPointLookup,
6870
lookup.IsEmptyRange,
6971
lookup.IsSpatialLookup,
70-
true,
72+
isReverse,
7173
)
7274
newIdxTbl, err := plan.NewStaticIndexedAccessForTableNode(ctx, n.TableNode, lookup)
7375
if err != nil {
@@ -158,7 +160,8 @@ func replaceIdxSortHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, so
158160
if sortNode == nil {
159161
continue
160162
}
161-
sortFields := sortNode.SortFields
163+
sortFields := make([]sql.SortField, len(sortNode.SortFields))
164+
sameSortFields := true
162165
for i, sortField := range sortNode.SortFields {
163166
col, sameExpr, _ := transform.Expr(sortField.Column, func(e sql.Expression) (sql.Expression, transform.TreeIdentity, error) {
164167
if gt, ok := e.(*expression.GetField); ok {
@@ -168,7 +171,10 @@ func replaceIdxSortHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, so
168171
}
169172
return e, transform.SameTree, nil
170173
})
171-
if !sameExpr {
174+
if sameExpr {
175+
sortFields[i] = sortField
176+
} else {
177+
sameSortFields = false
172178
col2, _ := col.(sql.Expression2)
173179
sortFields[i] = sql.SortField{
174180
Column: col,
@@ -178,10 +184,12 @@ func replaceIdxSortHelper(ctx *sql.Context, scope *plan.Scope, node sql.Node, so
178184
}
179185
}
180186
}
181-
newSort := sortNode.WithSortFields(sortFields)
182-
// The sort node is used to find table aliases and we need to get the table aliases inside the SubqueryAlias
183-
newSort.Child = c.Child
184-
newChildren[i], same, err = replaceIdxSortHelper(ctx, scope, child, newSort)
187+
if !sameSortFields {
188+
// The Sort node is used to find table aliases, but table aliases can't be found inside SubqueryAlias
189+
// nodes, so we need to construct a new Sort node with the SubqueryAlias's child
190+
newSort := plan.NewSort(sortFields, c.Child)
191+
newChildren[i], same, err = replaceIdxSortHelper(ctx, scope, child, newSort)
192+
}
185193
case *plan.JoinNode:
186194
// It's (probably) not possible to have Sort as child of Join without Subquery/SubqueryAlias,
187195
// and in the case where there is a Subq/SQA it's taken care of through finalizeSubqueries

sql/plan/sort.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,6 @@ func (s *Sort) WithExpressions(exprs ...sql.Expression) (sql.Node, error) {
115115
return NewSort(fields, s.Child), nil
116116
}
117117

118-
func (s *Sort) WithSortFields(sf sql.SortFields) *Sort {
119-
ret := *s
120-
ret.SortFields = sf
121-
return &ret
122-
}
123-
124118
func (s *Sort) GetSortFields() sql.SortFields {
125119
return s.SortFields
126120
}

0 commit comments

Comments
 (0)