diff --git a/go/libraries/doltcore/migrate/transform.go b/go/libraries/doltcore/migrate/transform.go index 357bea291b..93c253148c 100644 --- a/go/libraries/doltcore/migrate/transform.go +++ b/go/libraries/doltcore/migrate/transform.go @@ -481,10 +481,19 @@ func migrateSchema(ctx context.Context, tableName string, existing schema.Schema } } - if patched { - return schema.SchemaFromCols(schema.NewColCollection(cols...)) + if !patched { + return existing, nil } - return existing, nil + + sch, err := schema.SchemaFromCols(schema.NewColCollection(cols...)) + if err != nil { + return nil, err + } + + if err = sch.SetPkOrdinals(existing.GetPkOrdinals()); err != nil { + return nil, err + } + return sch, nil } func migrateIndexSet( diff --git a/integration-tests/bats/migrate.bats b/integration-tests/bats/migrate.bats index 3696927f1a..33f13fdd4f 100644 --- a/integration-tests/bats/migrate.bats +++ b/integration-tests/bats/migrate.bats @@ -229,3 +229,22 @@ SQL run dolt sql -q "SELECT * FROM t ORDER BY a LIMIT 1" -r csv [[ "$output" =~ "h&a,B" ]] || false } + +@test "migrate: database with inverted primary key order" { + dolt sql <