Skip to content

Commit d15d502

Browse files
authored
refactor: use slices.Equal to simplify code (#62601)
1 parent 1ea1db4 commit d15d502

4 files changed

Lines changed: 19 additions & 48 deletions

File tree

dumpling/export/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"encoding/json"
99
"fmt"
1010
"net"
11+
"slices"
1112
"strconv"
1213
"strings"
1314
"text/template"
@@ -634,7 +635,7 @@ func ParseTableFilter(tablesList, filters []string) (filter.Filter, error) {
634635
}
635636

636637
// only parse -T when -f is default value. otherwise bail out.
637-
if !sameStringArray(filters, []string{"*.*", DefaultTableFilter}) {
638+
if !slices.Equal(filters, []string{"*.*", DefaultTableFilter}) {
638639
return nil, errors.New("cannot pass --tables-list and --filter together")
639640
}
640641

dumpling/export/util.go

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,7 @@ func checkSameCluster(tctx *tcontext.Context, db *sql.DB, pdAddrs []string) (boo
5353
slices.Sort(tidbDDLIDs)
5454
slices.Sort(pdDDLIDs)
5555

56-
return sameStringArray(tidbDDLIDs, pdDDLIDs), nil
57-
}
58-
59-
func sameStringArray(a, b []string) bool {
60-
if len(a) != len(b) {
61-
return false
62-
}
63-
for i := range a {
64-
if a[i] != b[i] {
65-
return false
66-
}
67-
}
68-
return true
56+
return slices.Equal(tidbDDLIDs, pdDDLIDs), nil
6957
}
7058

7159
func string2Map(a, b []string) map[string]string {

pkg/planner/core/partition_pruning_test.go

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package core
1616

1717
import (
1818
"math"
19+
"slices"
1920
"strconv"
2021
"strings"
2122
"testing"
@@ -45,11 +46,11 @@ func TestCanBePrune(t *testing.T) {
4546

4647
queryExpr := tc.expr("d < '2000-03-08 00:00:00'")
4748
result := partitionRangeForCNFExpr(tc.sctx, []expression.Expression{queryExpr}, pruner, fullRange(len(lessThan.data)))
48-
require.True(t, equalPartitionRangeOR(result, partitionRangeOR{{0, 1}}))
49+
require.True(t, slices.Equal(result, partitionRangeOR{{0, 1}}))
4950

5051
queryExpr = tc.expr("d > '2018-03-08 00:00:00'")
5152
result = partitionRangeForCNFExpr(tc.sctx, []expression.Expression{queryExpr}, pruner, fullRange(len(lessThan.data)))
52-
require.True(t, equalPartitionRangeOR(result, partitionRangeOR{}))
53+
require.True(t, slices.Equal(result, partitionRangeOR{}))
5354

5455
// For the following case:
5556
// CREATE TABLE quarterly_report_status (
@@ -68,12 +69,12 @@ func TestCanBePrune(t *testing.T) {
6869

6970
queryExpr = tc.expr("report_updated > '2008-05-01 00:00:00'")
7071
result = partitionRangeForCNFExpr(tc.sctx, []expression.Expression{queryExpr}, pruner, fullRange(len(lessThan.data)))
71-
require.True(t, equalPartitionRangeOR(result, partitionRangeOR{{2, 4}}))
72+
require.True(t, slices.Equal(result, partitionRangeOR{{2, 4}}))
7273

7374
queryExpr = tc.expr("report_updated > unix_timestamp('2008-05-01 00:00:00')")
7475
partitionRangeForCNFExpr(tc.sctx, []expression.Expression{queryExpr}, pruner, fullRange(len(lessThan.data)))
7576
// TODO: Uncomment the check after fixing issue https://github.com/pingcap/tidb/issues/12028
76-
// require.True(t, equalPartitionRangeOR(result, partitionRangeOR{{2, 4}}))
77+
// require.True(t, slices.Equal(result, partitionRangeOR{{2, 4}}))
7778
// report_updated > unix_timestamp('2008-05-01 00:00:00') is converted to gt(t.t.report_updated, <nil>)
7879
// Because unix_timestamp('2008-05-01 00:00:00') is fold to constant int 1564761600, and compare it with timestamp (report_updated)
7980
// need to convert 1564761600 to a timestamp, during that step, an error happen and the result is set to <nil>
@@ -265,22 +266,10 @@ func TestPartitionRangeForExpr(t *testing.T) {
265266
require.NoError(t, err)
266267
result := fullRange(lessThan.length())
267268
result = partitionRangeForExpr(tc.sctx, expr, pruner, result)
268-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v", ca.input)
269+
require.Truef(t, slices.Equal(ca.result, result), "unexpected: %v", ca.input)
269270
}
270271
}
271272

272-
func equalPartitionRangeOR(x, y partitionRangeOR) bool {
273-
if len(x) != len(y) {
274-
return false
275-
}
276-
for i := range x {
277-
if x[i] != y[i] {
278-
return false
279-
}
280-
}
281-
return true
282-
}
283-
284273
func TestPartitionRangeOperation(t *testing.T) {
285274
testIntersectionRange := []struct {
286275
input1 partitionRangeOR
@@ -299,7 +288,7 @@ func TestPartitionRangeOperation(t *testing.T) {
299288
}
300289
for i, ca := range testIntersectionRange {
301290
result := ca.input1.intersectionRange(ca.input2.start, ca.input2.end)
302-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "fail = %d", i)
291+
require.Truef(t, slices.Equal(ca.result, result), "fail = %d", i)
303292
}
304293

305294
testIntersection := []struct {
@@ -319,7 +308,7 @@ func TestPartitionRangeOperation(t *testing.T) {
319308
}
320309
for i, ca := range testIntersection {
321310
result := ca.input1.intersection(ca.input2)
322-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "fail = %d", i)
311+
require.Truef(t, slices.Equal(ca.result, result), "fail = %d", i)
323312
}
324313

325314
testUnion := []struct {
@@ -339,7 +328,7 @@ func TestPartitionRangeOperation(t *testing.T) {
339328
}
340329
for i, ca := range testUnion {
341330
result := ca.input1.union(ca.input2)
342-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "fail = %d", i)
331+
require.Truef(t, slices.Equal(ca.result, result), "fail = %d", i)
343332
}
344333
}
345334

@@ -384,7 +373,7 @@ func TestPartitionRangePruner2VarChar(t *testing.T) {
384373
require.NoError(t, err)
385374
result := fullRange(len(lessThan))
386375
result = partitionRangeForExpr(tc.sctx, expr, pruner, result)
387-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v", ca.input)
376+
require.Truef(t, slices.Equal(ca.result, result), "unexpected: %v", ca.input)
388377
}
389378
}
390379

@@ -434,7 +423,7 @@ func TestPartitionRangePruner2CharWithCollation(t *testing.T) {
434423
require.NoError(t, err)
435424
result := fullRange(len(lessThan))
436425
result = partitionRangeForExpr(tc.sctx, expr, pruner, result)
437-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result)
426+
require.Truef(t, slices.Equal(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result)
438427
}
439428
}
440429

@@ -490,7 +479,7 @@ func TestPartitionRangePruner2Date(t *testing.T) {
490479
require.NoError(t, err)
491480
result := fullRange(len(lessThan))
492481
result = partitionRangeForExpr(tc.sctx, expr, pruner, result)
493-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v, %v != %v", ca.input, ca.result, result)
482+
require.Truef(t, slices.Equal(ca.result, result), "unexpected: %v, %v != %v", ca.input, ca.result, result)
494483
}
495484
}
496485

@@ -570,7 +559,7 @@ func TestPartitionRangeColumnsForExpr(t *testing.T) {
570559
result := fullRange(len(lessThan))
571560
e := expression.SplitCNFItems(expr)
572561
result = partitionRangeForCNFExpr(tc.sctx, e, pruner, result)
573-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result)
562+
require.Truef(t, slices.Equal(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result)
574563
}
575564
}
576565

@@ -624,7 +613,7 @@ func TestPartitionRangeColumnsForExprWithSpecialCollation(t *testing.T) {
624613
result := fullRange(len(lessThan))
625614
e := expression.SplitCNFItems(expr)
626615
result = partitionRangeForCNFExpr(tc.sctx, e, pruner, result)
627-
require.Truef(t, equalPartitionRangeOR(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result)
616+
require.Truef(t, slices.Equal(ca.result, result), "unexpected: %v %v != %v", ca.input, ca.result, result)
628617
}
629618
}
630619

pkg/store/mockstore/unistore/cophandler/cop_handler_test.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"math"
2121
"os"
2222
"path/filepath"
23+
"slices"
2324
"testing"
2425

2526
"github.com/pingcap/badger"
@@ -166,15 +167,7 @@ func convertToPrefixNext(key []byte) []byte {
166167
// return whether these two keys are equal.
167168
func isPrefixNext(key []byte, expected []byte) bool {
168169
key = convertToPrefixNext(key)
169-
if len(key) != len(expected) {
170-
return false
171-
}
172-
for i := range key {
173-
if key[i] != expected[i] {
174-
return false
175-
}
176-
}
177-
return true
170+
return slices.Equal(key, expected)
178171
}
179172

180173
// return a dag context according to dagReq and key ranges.

0 commit comments

Comments
 (0)