diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_queries_schema_merge.go b/go/libraries/doltcore/sqle/enginetest/dolt_queries_schema_merge.go index 9881543aa7f..56763a2ad4e 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_queries_schema_merge.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_queries_schema_merge.go @@ -644,6 +644,41 @@ var SchemaChangeTestsBasicCases = []MergeScriptTest{ }, }, }, + { + // One branch adds a new column with NULL as default + // Other branch has new rows which need to be migrated. + // Created values are NULL, not "NULL". + Name: "creating new column to replace ancestor column", + AncSetUpScript: []string{ + "CREATE table t (pk int primary key);", + "INSERT into t values (1), (2);", + }, + RightSetUpScript: []string{ + "ALTER TABLE t ADD new_col LONGTEXT DEFAULT NULL", + "INSERT INTO t VALUES (3, 'three'), (4, 'four');", + }, + LeftSetUpScript: []string{ + // Put rows on main which are not in the right branch. + "INSERT INTO t VALUES (5), (6)", + }, + Assertions: []queries.ScriptTestAssertion{ + { + Query: "call dolt_merge('right');", + Expected: []sql.Row{{doltCommit, 0, 0, "merge successful"}}, + }, + { + Query: "select * from t;", + Expected: []sql.Row{ + {1, nil}, + {2, nil}, + {3, "three"}, + {4, "four"}, + {5, nil}, + {6, nil}, + }, + }, + }, + }, } var SchemaChangeTestsCollations = []MergeScriptTest{ diff --git a/go/libraries/doltcore/sqle/sqlfmt/schema_fmt.go b/go/libraries/doltcore/sqle/sqlfmt/schema_fmt.go index 9a29d57f1d0..e0fbd4218a1 100644 --- a/go/libraries/doltcore/sqle/sqlfmt/schema_fmt.go +++ b/go/libraries/doltcore/sqle/sqlfmt/schema_fmt.go @@ -193,7 +193,7 @@ func GenerateCreateTableIndentedColumnDefinition(col schema.Column, tableCollati var defaultVal, genVal, onUpdateVal *sql.ColumnDefaultValue if col.Default != "" { // hacky way to determine if column default is an expression - if col.Default[0] != '(' && col.Default[len(col.Default)-1] != ')' && col.Default[0] != '\'' && col.Default[len(col.Default)-1] != '\'' { + if col.Default[0] != '(' && col.Default[len(col.Default)-1] != ')' && col.Default[0] != '\'' && col.Default[len(col.Default)-1] != '\'' && col.Default != "NULL" { col.Default = fmt.Sprintf("'%s'", col.Default) } defaultVal = sql.NewUnresolvedColumnDefaultValue(col.Default)