diff sql supports col renames

This commit is contained in:
Andy Arthur
2019-11-13 11:13:51 -08:00
parent 45901e1318
commit 3ffda7ff40
2 changed files with 36 additions and 30 deletions
+1 -1
View File
@@ -129,7 +129,7 @@ teardown() {
[[ "$output" = "" ]] || false
}
@test "diff sql output reconciles column rename" { skip
@test "diff sql output reconciles column rename" {
dolt checkout -b firstbranch
dolt table create -s=`batshelper 1pk5col-ints.schema` test
+35 -29
View File
@@ -441,36 +441,42 @@ func diffSchemas(tableName string, sch1 schema.Schema, sch2 schema.Schema, dArgs
cli.Println("ALTER TABLE", tableName, "DROP", sql.QuoteIdentifier(dff.Old.Name), ";")
}
case diff.SchDiffColModified:
// changed in sch2
oldType, err := dtypes.NomsKindToSqlTypeString(dff.Old.Kind)
if err != nil {
return errhand.BuildDError("error: failed to diff schemas").AddCause(err).Build()
if dArgs.diffOutput == SQLDiffOutput {
oldColName := sql.QuoteIdentifier(dff.Old.Name)
newColName := sql.QuoteIdentifier(dff.New.Name)
cli.Println("ALTER TABLE", tableName, "RENAME COLUMN", oldColName, "TO", newColName, ";")
} else {
// changed in sch2
oldType, err := dtypes.NomsKindToSqlTypeString(dff.Old.Kind)
if err != nil {
return errhand.BuildDError("error: failed to diff schemas").AddCause(err).Build()
}
newType, err := dtypes.NomsKindToSqlTypeString(dff.New.Kind)
if err != nil {
return errhand.BuildDError("error: failed to diff schemas").AddCause(err).Build()
}
n0, t0 := dff.Old.Name, oldType
n1, t1 := dff.New.Name, newType
nameLen := 0
typeLen := 0
if n0 != n1 {
n0 = color.YellowString(n0)
n1 = color.YellowString(n1)
nameLen = mathutil.Max(len(n0), len(n1))
}
if t0 != t1 {
t0 = color.YellowString(t0)
t1 = color.YellowString(t1)
typeLen = mathutil.Max(len(t0), len(t1))
}
cli.Println("< " + sql.FmtColWithNameAndType(2, nameLen, typeLen, n0, t0, *dff.Old))
cli.Println("> " + sql.FmtColWithNameAndType(2, nameLen, typeLen, n1, t1, *dff.New))
}
newType, err := dtypes.NomsKindToSqlTypeString(dff.New.Kind)
if err != nil {
return errhand.BuildDError("error: failed to diff schemas").AddCause(err).Build()
}
n0, t0 := dff.Old.Name, oldType
n1, t1 := dff.New.Name, newType
nameLen := 0
typeLen := 0
if n0 != n1 {
n0 = color.YellowString(n0)
n1 = color.YellowString(n1)
nameLen = mathutil.Max(len(n0), len(n1))
}
if t0 != t1 {
t0 = color.YellowString(t0)
t1 = color.YellowString(t1)
typeLen = mathutil.Max(len(t0), len(t1))
}
cli.Println("< " + sql.FmtColWithNameAndType(2, nameLen, typeLen, n0, t0, *dff.Old))
cli.Println("> " + sql.FmtColWithNameAndType(2, nameLen, typeLen, n1, t1, *dff.New))
}
}