This is an automated email from the ASF dual-hosted git repository.
zfeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/master by this push:
new 774046b2 optimize: optimize parsePkValues to reduce nested loops
(#1018)
774046b2 is described below
commit 774046b21a81259e56b8d2825276276e94a410fa
Author: EVERFID <[email protected]>
AuthorDate: Sat Dec 6 20:09:02 2025 +0800
optimize: optimize parsePkValues to reduce nested loops (#1018)
* optimize: optimize parsePkValues to reduce nested loops
* optimize parsePkValues primary key extraction
* fix
---
pkg/datasource/sql/undo/executor/executor.go | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/pkg/datasource/sql/undo/executor/executor.go
b/pkg/datasource/sql/undo/executor/executor.go
index eafab8e7..5b1b01f5 100644
--- a/pkg/datasource/sql/undo/executor/executor.go
+++ b/pkg/datasource/sql/undo/executor/executor.go
@@ -168,21 +168,28 @@ func (b *BaseExecutor) queryCurrentRecords(ctx
context.Context, conn *sql.Conn)
}
func (b *BaseExecutor) parsePkValues(rows []types.RowImage, pkNameList
[]string) map[string][]types.ColumnImage {
+ if len(rows) == 0 {
+ return make(map[string][]types.ColumnImage)
+ }
+
+ pkLookup := make(map[string]string, len(pkNameList))
+ for _, pk := range pkNameList {
+ pkLookup[strings.ToLower(pk)] = pk
+ }
+
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
+ columnNameLower := strings.ToLower(column.ColumnName)
+ if originalPk, exists := pkLookup[columnNameLower];
exists {
+ if pkValues[originalPk] == nil {
+ pkValues[originalPk] =
make([]types.ColumnImage, 0, len(rows))
}
+ pkValues[originalPk] =
append(pkValues[originalPk], column)
}
}
}
+
return pkValues
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]