diff --git a/go/libraries/doltcore/sqle/dtables/column_diff_table.go b/go/libraries/doltcore/sqle/dtables/column_diff_table.go index 36e959d491..0b650c004d 100644 --- a/go/libraries/doltcore/sqle/dtables/column_diff_table.go +++ b/go/libraries/doltcore/sqle/dtables/column_diff_table.go @@ -553,7 +553,12 @@ func calculateColDelta(ctx *sql.Context, ddb *doltdb.DoltDB, delta *diff.TableDe toIdx := diffTableCols.TagToIdx[toColTag] fromIdx := diffTableCols.TagToIdx[fromColTag] - if r[toIdx] != r[fromIdx] { + toCol := delta.ToSch.GetAllCols().GetByIndex(toIdx) + cmp, err := toCol.TypeInfo.ToSqlType().Compare(r[toIdx], r[fromIdx]) + if err != nil { + return nil, nil, err + } + if cmp != 0 { colNamesSet[col] = struct{}{} } } diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_queries_diff.go b/go/libraries/doltcore/sqle/enginetest/dolt_queries_diff.go index 5218d054cf..0d843019b7 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_queries_diff.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_queries_diff.go @@ -4623,6 +4623,29 @@ var ColumnDiffSystemTableScriptTests = []queries.ScriptTest{ }, }, }, + { + Name: "json column change", + SetUpScript: []string{ + "create table t (pk int primary key, j json);", + `insert into t values (1, '{"test": 123}');`, + "call dolt_add('.')", + "call dolt_commit('-m', 'commit1');", + + `update t set j = '{"nottest": 321}'`, + "call dolt_add('.')", + "call dolt_commit('-m', 'commit2');", + }, + Assertions: []queries.ScriptTestAssertion{ + { + Query: "select column_name, diff_type from dolt_column_diff;", + Expected: []sql.Row{ + {"j", "modified"}, + {"pk", "added"}, + {"j", "added"}, + }, + }, + }, + }, } var CommitDiffSystemTableScriptTests = []queries.ScriptTest{