This is an automated email from the ASF dual-hosted git repository.

luky116 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 6bf7b943 fix: bypassing modifying the primary key (#727)
6bf7b943 is described below

commit 6bf7b943886ca15bad1869049b2b9aa871f91d55
Author: FinnTew <nanomo...@gmail.com>
AuthorDate: Sat Dec 14 16:51:50 2024 +0800

    fix: bypassing modifying the primary key (#727)
    
    * adjust unit tests to verify the issue of "bypassing modifying the primary 
key"
    
    * fix: bypass modify the primary key
---
 .../builder/mysql_insertonduplicate_update_undo_log_builder.go | 10 +++++-----
 .../mysql_insertonduplicate_update_undo_log_builder_test.go    |  8 ++++----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git 
a/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder.go
 
b/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder.go
index 4a23dedd..6b82d537 100644
--- 
a/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder.go
+++ 
b/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder.go
@@ -128,7 +128,7 @@ func (u *MySQLInsertOnDuplicateUndoLogBuilder) 
buildBeforeImageSQL(insertStmt *a
                        columnIsNull := true
                        uniqueList := make([]string, 0)
                        for _, columnMeta := range index.Columns {
-                               columnName := columnMeta.ColumnName
+                               columnName := 
strings.ToLower(columnMeta.ColumnName)
                                imageParameters, ok := paramMap[columnName]
                                if !ok && columnMeta.ColumnDef != nil {
                                        if strings.EqualFold("PRIMARY", 
index.Name) {
@@ -222,7 +222,7 @@ func (u *MySQLInsertOnDuplicateUndoLogBuilder) 
buildAfterImageSQL(ctx context.Co
 func checkDuplicateKeyUpdate(insert *ast.InsertStmt, metaData types.TableMeta) 
error {
        duplicateColsMap := make(map[string]bool)
        for _, v := range insert.OnDuplicate {
-               duplicateColsMap[v.Column.Name.L] = true
+               duplicateColsMap[strings.ToLower(v.Column.Name.L)] = true
        }
        if len(duplicateColsMap) == 0 {
                return nil
@@ -254,7 +254,7 @@ func (u *MySQLInsertOnDuplicateUndoLogBuilder) 
buildImageParameters(insert *ast.
                        return nil, fmt.Errorf("insert row's column size not 
equal to insert column size")
                }
                for i, col := range insertColumns {
-                       columnName := executor.DelEscape(col, types.DBTypeMySQL)
+                       columnName := strings.ToLower(executor.DelEscape(col, 
types.DBTypeMySQL))
                        val := row[i]
                        rStr, ok := val.(string)
                        if ok && strings.EqualFold(rStr, SqlPlaceholder) {
@@ -279,14 +279,14 @@ func getInsertColumns(insertStmt *ast.InsertStmt) 
[]string {
        }
        var list []string
        for _, col := range colList {
-               list = append(list, col.Name.L)
+               list = append(list, strings.ToLower(col.Name.L))
        }
        return list
 }
 
 func isIndexValueNotNull(indexMeta types.IndexMeta, imageParameterMap 
map[string][]driver.Value, rowIndex int) bool {
        for _, colMeta := range indexMeta.Columns {
-               columnName := colMeta.ColumnName
+               columnName := strings.ToLower(colMeta.ColumnName)
                imageParameters := imageParameterMap[columnName]
                if imageParameters == nil && colMeta.ColumnDef == nil {
                        return false
diff --git 
a/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder_test.go
 
b/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder_test.go
index 03e028fe..59e673f7 100644
--- 
a/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder_test.go
+++ 
b/pkg/datasource/sql/undo/builder/mysql_insertonduplicate_update_undo_log_builder_test.go
@@ -46,7 +46,7 @@ func TestInsertOnDuplicateBuildBeforeImageSQL(t *testing.T) {
        )
        columnId := types.ColumnMeta{
                ColumnDef:  nil,
-               ColumnName: "id",
+               ColumnName: "ID",
        }
        columnName := types.ColumnMeta{
                ColumnDef:  nil,
@@ -56,12 +56,12 @@ func TestInsertOnDuplicateBuildBeforeImageSQL(t *testing.T) 
{
                ColumnDef:  nil,
                ColumnName: "age",
        }
-       columns["id"] = columnId
+       columns["ID"] = columnId
        columns["name"] = columnName
        columns["age"] = columnAge
        columnMeta1 = append(columnMeta1, columnId)
        columnMeta2 = append(columnMeta2, columnName, columnAge)
-       index["id"] = types.IndexMeta{
+       index["ID"] = types.IndexMeta{
                Name:    "PRIMARY",
                IType:   types.IndexTypePrimaryKey,
                Columns: columnMeta1,
@@ -72,7 +72,7 @@ func TestInsertOnDuplicateBuildBeforeImageSQL(t *testing.T) {
                Columns: columnMeta2,
        }
 
-       ColumnNames = []string{"id", "name", "age"}
+       ColumnNames = []string{"ID", "name", "age"}
        tableMeta1 = types.TableMeta{
                TableName:   "t_user",
                Columns:     columns,


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org
For additional commands, e-mail: notifications-h...@seata.apache.org

Reply via email to