Skip to content

Three Way Merging won't detect a data conflict in a dropped column. #6747

@nicktobey

Description

@nicktobey

Steps to reproduce:

git checkout nicktobey/schemamergetests
go test libraries/doltcore/merge/schema_merge_test.go -run "^\QTestSchemaMerge\E$/^\Qcolumn_add\E$/^\Qdrop_tests\E$/^\Qmerge_left_to_right\E$/^\Qleft_side_column_drop\E$/^\Qone_side_sets_to_non-NULL,_other_drops_non-NULL\E$"

In the test in question, the base of the merge has one value for a column (3), the left branch drops the column, and the right branch sets it to a different values (4). This should be a data conflict.

However, when the merge is performed, no data conflict is detected. The column is silently dropped. This happens because the function for attempting to auto-resolve data conflicts (and reporting when they can't be resolved) is merge.processColumn, which is called once for each column in the merged schema. If the column isn't present in the merged schema, processColumn doesn't get called for it. Any data merges in that column get ignored.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmergeIssues relating to merge

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions