Fixed #1824: Bug with adding index on merge

This commit is contained in:
Daylon Wilkins
2021-06-15 03:32:15 -07:00
committed by Daylon Wilkins
parent bb3d6266ee
commit 151ca17cb2
2 changed files with 20 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ import (
"context"
"errors"
"fmt"
"strings"
"golang.org/x/sync/errgroup"
@@ -183,6 +184,25 @@ func (merger *Merger) MergeTable(ctx context.Context, tblName string, sess *edit
return nil, nil, err
}
// If any indexes were added during the merge, then we need to generate their row data to add to our updated table.
addedIndexesSet := make(map[string]string)
for _, index := range postMergeSchema.Indexes().AllIndexes() {
addedIndexesSet[strings.ToLower(index.Name())] = index.Name()
}
for _, index := range tblSchema.Indexes().AllIndexes() {
delete(addedIndexesSet, strings.ToLower(index.Name()))
}
for _, addedIndex := range addedIndexesSet {
newIndexData, err := editor.RebuildIndex(ctx, updatedTbl, addedIndex)
if err != nil {
return nil, nil, err
}
updatedTbl, err = updatedTbl.SetIndexRowData(ctx, addedIndex, newIndexData)
if err != nil {
return nil, nil, err
}
}
err = sess.UpdateRoot(ctx, func(ctx context.Context, root *doltdb.RootValue) (*doltdb.RootValue, error) {
return root.PutTable(ctx, tblName, updatedTbl)
})

View File

@@ -2386,9 +2386,6 @@ SQL
dolt add -A
dolt commit -m "added index"
dolt checkout master
skip "https://github.com/dolthub/dolt/issues/1824"
dolt merge other
run dolt sql -q "select * from test where v1 = 2" -r=csv
[ "$status" -eq "0" ]