mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-26 10:37:04 -06:00
Fixed #1824: Bug with adding index on merge
This commit is contained in:
committed by
Daylon Wilkins
parent
bb3d6266ee
commit
151ca17cb2
@@ -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)
|
||||
})
|
||||
|
||||
@@ -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" ]
|
||||
|
||||
Reference in New Issue
Block a user