Merge pull request #1922 from dolthub/andy/read-empty-conflicts

[no-release-notes] Andy/read empty conflicts
This commit is contained in:
AndyA
2021-07-15 14:57:52 -07:00
committed by GitHub
3 changed files with 11 additions and 8 deletions

View File

@@ -154,23 +154,19 @@ func (t *Table) SetConflicts(ctx context.Context, schemas Conflict, conflictData
func (t *Table) GetConflicts(ctx context.Context) (Conflict, types.Map, error) {
schemasVal, ok, err := t.tableStruct.MaybeGet(conflictSchemasKey)
if err != nil {
return Conflict{}, types.EmptyMap, err
}
if !ok {
return Conflict{}, types.EmptyMap, ErrNoConflicts
}
schemas, err := ConflictFromTuple(schemasVal.(types.Tuple))
if err != nil {
return Conflict{}, types.EmptyMap, err
}
conflictsVal, _, err := t.tableStruct.MaybeGet(conflictsKey)
if err != nil {
return Conflict{}, types.EmptyMap, err
}

View File

@@ -47,7 +47,10 @@ type ConflictReader struct {
// NewConflictReader returns a new conflict reader for a given table
func NewConflictReader(ctx context.Context, tbl *doltdb.Table) (*ConflictReader, error) {
base, sch, mergeSch, err := tbl.GetConflictSchemas(ctx)
if err == doltdb.ErrNoConflicts {
base, err = tbl.GetSchema(ctx)
sch, mergeSch = base, base
}
if err != nil {
return nil, err
}
@@ -63,19 +66,19 @@ func NewConflictReader(ctx context.Context, tbl *doltdb.Table) (*ConflictReader,
theirsStr: func(colName string) string { return theirsStr + "_" + colName },
},
)
if err != nil {
return nil, err
}
_, confData, err := tbl.GetConflicts(ctx)
if err == doltdb.ErrNoConflicts {
confData, err = types.NewMap(ctx, tbl.ValueReadWriter())
}
if err != nil {
return nil, err
}
confItr, err := confData.Iterator(ctx)
if err != nil {
return nil, err
}

View File

@@ -30,6 +30,10 @@ teardown() {
teardown_common
}
@test "sql-conflicts: read from empty table" {
dolt sql -q "SELECT * FROM dolt_conflicts_empty"
}
@test "sql-conflicts: add conflict" {
dolt branch feature_branch master
dolt SQL -q "INSERT INTO one_pk (pk1,c1,c2) VALUES (0,0,0)"