mirror of
https://github.com/dolthub/dolt.git
synced 2026-04-21 11:29:51 -05:00
Handle removed tables in //.../doltcore/migrate (#4647)
* handle removed tables in //.../doltcore/migrate * fix migration-integration.bats * [ga-format-pr] Run go/utils/repofmt/format_repo.sh and go/Godeps/update.sh Co-authored-by: druvv <druvv@users.noreply.github.com>
This commit is contained in:
@@ -27,6 +27,7 @@ import (
|
||||
"github.com/dolthub/dolt/go/libraries/doltcore/ref"
|
||||
"github.com/dolthub/dolt/go/libraries/doltcore/schema"
|
||||
"github.com/dolthub/dolt/go/libraries/doltcore/schema/typeinfo"
|
||||
"github.com/dolthub/dolt/go/libraries/utils/set"
|
||||
"github.com/dolthub/dolt/go/store/chunks"
|
||||
"github.com/dolthub/dolt/go/store/datas"
|
||||
"github.com/dolthub/dolt/go/store/hash"
|
||||
@@ -277,6 +278,16 @@ func migrateRoot(ctx context.Context, oldParent, oldRoot, newParent *doltdb.Root
|
||||
return nil, err
|
||||
}
|
||||
|
||||
removedTables, err := getRemovedTableNames(ctx, oldParent, oldRoot)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
migrated, err = migrated.RemoveTables(ctx, true, false, removedTables...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = oldRoot.IterTables(ctx, func(name string, oldTbl *doltdb.Table, sch schema.Schema) (bool, error) {
|
||||
ok, err := oldTbl.HasConflicts(ctx)
|
||||
if err != nil {
|
||||
@@ -345,6 +356,21 @@ func migrateRoot(ctx context.Context, oldParent, oldRoot, newParent *doltdb.Root
|
||||
return migrated, nil
|
||||
}
|
||||
|
||||
// renames also get returned here
|
||||
func getRemovedTableNames(ctx context.Context, prev, curr *doltdb.RootValue) ([]string, error) {
|
||||
prevNames, err := prev.GetTableNames(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tblNameSet := set.NewStrSet(prevNames)
|
||||
currNames, err := curr.GetTableNames(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tblNameSet.Remove(currNames...)
|
||||
return tblNameSet.AsSlice(), nil
|
||||
}
|
||||
|
||||
func migrateTable(ctx context.Context, newSch schema.Schema, oldParentTbl, oldTbl, newParentTbl *doltdb.Table) (*doltdb.Table, error) {
|
||||
idx, err := oldParentTbl.GetRowData(ctx)
|
||||
if err != nil {
|
||||
|
||||
@@ -248,3 +248,21 @@ SQL
|
||||
run dolt schema show t
|
||||
[[ "$output" =~ "PRIMARY KEY (\`pk1\`,\`pk2\`)" ]] || false
|
||||
}
|
||||
|
||||
@test "migrate: removed tables stay removed" {
|
||||
dolt sql -q "create table alpha (pk int primary key);"
|
||||
dolt sql -q "create table beta (pk int primary key);"
|
||||
dolt commit -Am "create tables"
|
||||
|
||||
dolt sql -q "alter table alpha rename to zulu;"
|
||||
dolt sql -q "drop table beta"
|
||||
dolt commit -Am "rename table alpha to zeta, drop table beta"
|
||||
|
||||
dolt migrate
|
||||
|
||||
run dolt ls
|
||||
[ $status -eq 0 ]
|
||||
[[ "$output" =~ "zulu" ]] || false
|
||||
[[ ! "$output" =~ "alpha" ]] || false
|
||||
[[ ! "$output" =~ "beta" ]] || false
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ teardown() {
|
||||
}
|
||||
|
||||
@test "migration-integration: first-hour-db" {
|
||||
dolt clone dolthub/first-hour-db
|
||||
cd first-hour-db
|
||||
dolt clone https://doltremoteapi.dolthub.com/dolthub/first-hour-db-migration-int
|
||||
cd first-hour-db-migration-int
|
||||
|
||||
dolt tag -v
|
||||
run dolt tag -v
|
||||
@@ -39,8 +39,8 @@ teardown() {
|
||||
}
|
||||
|
||||
@test "migration-integration: first-hour-db after garbage collection" {
|
||||
dolt clone dolthub/first-hour-db
|
||||
cd first-hour-db
|
||||
dolt clone https://doltremoteapi.dolthub.com/dolthub/first-hour-db-migration-int
|
||||
cd first-hour-db-migration-int
|
||||
dolt gc
|
||||
|
||||
dolt tag -v
|
||||
@@ -65,8 +65,8 @@ teardown() {
|
||||
}
|
||||
|
||||
@test "migration-integration: us-jails" {
|
||||
dolt clone dolthub/us-jails
|
||||
cd us-jails
|
||||
dolt clone https://doltremoteapi.dolthub.com/dolthub/us-jails-migration-integration
|
||||
cd us-jails-migration-integration
|
||||
|
||||
dolt tag -v
|
||||
run dolt tag -v
|
||||
|
||||
Reference in New Issue
Block a user