Skip to content

Commit 0228498

Browse files
author
Shlomi Noach
authored
Merge pull request #183 from github/fix-rename-insert
fix INSERT DML handling on renamed column
2 parents 7c792d3 + 9dc378f commit 0228498

File tree

4 files changed

+17
-17
lines changed

4 files changed

+17
-17
lines changed

build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
#
44

5-
RELEASE_VERSION="1.0.12"
5+
RELEASE_VERSION="1.0.13"
66

77
function build {
88
osname=$1

go/logic/applier.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ func (this *Applier) buildDMLEventQuery(dmlEvent *binlog.BinlogDMLEvent) (query
832832
}
833833
case binlog.InsertDML:
834834
{
835-
query, sharedArgs, err := sql.BuildDMLInsertQuery(dmlEvent.DatabaseName, this.migrationContext.GetGhostTableName(), this.migrationContext.OriginalTableColumns, this.migrationContext.MappedSharedColumns, dmlEvent.NewColumnValues.AbstractValues())
835+
query, sharedArgs, err := sql.BuildDMLInsertQuery(dmlEvent.DatabaseName, this.migrationContext.GetGhostTableName(), this.migrationContext.OriginalTableColumns, this.migrationContext.SharedColumns, this.migrationContext.MappedSharedColumns, dmlEvent.NewColumnValues.AbstractValues())
836836
return query, sharedArgs, 1, err
837837
}
838838
case binlog.UpdateDML:

go/sql/builder.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ func BuildDMLDeleteQuery(databaseName, tableName string, tableColumns, uniqueKey
354354
return result, uniqueKeyArgs, nil
355355
}
356356

357-
func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedColumns *ColumnList, args []interface{}) (result string, sharedArgs []interface{}, err error) {
357+
func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedColumns, mappedSharedColumns *ColumnList, args []interface{}) (result string, sharedArgs []interface{}, err error) {
358358
if len(args) != tableColumns.Len() {
359359
return result, args, fmt.Errorf("args count differs from table column count in BuildDMLInsertQuery")
360360
}
@@ -367,17 +367,17 @@ func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedCol
367367
databaseName = EscapeName(databaseName)
368368
tableName = EscapeName(tableName)
369369

370-
for _, column := range sharedColumns.Names {
370+
for _, column := range mappedSharedColumns.Names {
371371
tableOrdinal := tableColumns.Ordinals[column]
372-
arg := fixArgType(args[tableOrdinal], sharedColumns.IsUnsigned(column))
372+
arg := fixArgType(args[tableOrdinal], mappedSharedColumns.IsUnsigned(column))
373373
sharedArgs = append(sharedArgs, arg)
374374
}
375375

376-
sharedColumnNames := duplicateNames(sharedColumns.Names)
377-
for i := range sharedColumnNames {
378-
sharedColumnNames[i] = EscapeName(sharedColumnNames[i])
376+
mappedSharedColumnNames := duplicateNames(mappedSharedColumns.Names)
377+
for i := range mappedSharedColumnNames {
378+
mappedSharedColumnNames[i] = EscapeName(mappedSharedColumnNames[i])
379379
}
380-
preparedValues := buildPreparedValues(sharedColumns.Len())
380+
preparedValues := buildPreparedValues(mappedSharedColumns.Len())
381381

382382
result = fmt.Sprintf(`
383383
replace /* gh-ost %s.%s */ into
@@ -387,7 +387,7 @@ func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedCol
387387
(%s)
388388
`, databaseName, tableName,
389389
databaseName, tableName,
390-
strings.Join(sharedColumnNames, ", "),
390+
strings.Join(mappedSharedColumnNames, ", "),
391391
strings.Join(preparedValues, ", "),
392392
)
393393
return result, sharedArgs, nil

go/sql/builder_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ func TestBuildDMLInsertQuery(t *testing.T) {
442442
args := []interface{}{3, "testname", "first", 17, 23}
443443
{
444444
sharedColumns := NewColumnList([]string{"id", "name", "position", "age"})
445-
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
445+
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
446446
test.S(t).ExpectNil(err)
447447
expected := `
448448
replace /* gh-ost mydb.tbl */
@@ -456,7 +456,7 @@ func TestBuildDMLInsertQuery(t *testing.T) {
456456
}
457457
{
458458
sharedColumns := NewColumnList([]string{"position", "name", "age", "id"})
459-
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
459+
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
460460
test.S(t).ExpectNil(err)
461461
expected := `
462462
replace /* gh-ost mydb.tbl */
@@ -470,12 +470,12 @@ func TestBuildDMLInsertQuery(t *testing.T) {
470470
}
471471
{
472472
sharedColumns := NewColumnList([]string{"position", "name", "surprise", "id"})
473-
_, _, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
473+
_, _, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
474474
test.S(t).ExpectNotNil(err)
475475
}
476476
{
477477
sharedColumns := NewColumnList([]string{})
478-
_, _, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
478+
_, _, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
479479
test.S(t).ExpectNotNil(err)
480480
}
481481
}
@@ -489,7 +489,7 @@ func TestBuildDMLInsertQuerySignedUnsigned(t *testing.T) {
489489
// testing signed
490490
args := []interface{}{3, "testname", "first", int8(-1), 23}
491491
sharedColumns := NewColumnList([]string{"id", "name", "position", "age"})
492-
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
492+
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
493493
test.S(t).ExpectNil(err)
494494
expected := `
495495
replace /* gh-ost mydb.tbl */
@@ -505,7 +505,7 @@ func TestBuildDMLInsertQuerySignedUnsigned(t *testing.T) {
505505
// testing unsigned
506506
args := []interface{}{3, "testname", "first", int8(-1), 23}
507507
sharedColumns.SetUnsigned("position")
508-
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
508+
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
509509
test.S(t).ExpectNil(err)
510510
expected := `
511511
replace /* gh-ost mydb.tbl */
@@ -521,7 +521,7 @@ func TestBuildDMLInsertQuerySignedUnsigned(t *testing.T) {
521521
// testing unsigned
522522
args := []interface{}{3, "testname", "first", int32(-1), 23}
523523
sharedColumns.SetUnsigned("position")
524-
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, args)
524+
query, sharedArgs, err := BuildDMLInsertQuery(databaseName, tableName, tableColumns, sharedColumns, sharedColumns, args)
525525
test.S(t).ExpectNil(err)
526526
expected := `
527527
replace /* gh-ost mydb.tbl */

0 commit comments

Comments
 (0)