FinnTew commented on code in PR #928:
URL:
https://github.com/apache/incubator-seata-go/pull/928#discussion_r2462690766
##########
pkg/datasource/sql/undo/executor/executor.go:
##########
@@ -168,21 +168,21 @@ func (b *BaseExecutor) queryCurrentRecords(ctx
context.Context, conn *sql.Conn)
}
func (b *BaseExecutor) parsePkValues(rows []types.RowImage, pkNameList
[]string) map[string][]types.ColumnImage {
+ pkNameSet := make(map[string]struct{}, len(pkNameList))
+ for _, pk := range pkNameList {
+ pkNameSet[strings.ToUpper(pk)] = struct{}{}
+ }
+
pkValues := make(map[string][]types.ColumnImage)
- // todo optimize 3 fors
+
for _, row := range rows {
for _, column := range row.Columns {
- for _, pk := range pkNameList {
- if strings.EqualFold(pk, column.ColumnName) {
- values := pkValues[strings.ToUpper(pk)]
- if values == nil {
- values =
make([]types.ColumnImage, 0)
- }
- values = append(values, column)
- pkValues[pk] = values
- }
+ upperName := strings.ToUpper(column.ColumnName)
+ if _, exist := pkNameSet[upperName]; exist {
+ pkValues[upperName] =
append(pkValues[upperName], column)
Review Comment:
之前有一个类似的大小写问题,所以这里构造 pkNameSet 的时候全部转统一大写了,这里查 pkNameSet 的时候也需要转一下,追加
pkValues 用的是原本的 column 值,大写只用来查 map
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]