mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-25 10:19:24 -06:00
go/doltcore/schema: Set primary key ordinals on schema migration
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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 <<SQL
|
||||
CREATE TABLE t (
|
||||
pk2 varchar(20) NOT NULL,
|
||||
pk1 varchar(20) NOT NULL,
|
||||
PRIMARY KEY (pk1, pk2));
|
||||
INSERT INTO t (pk2, pk1) VALUES ("z","a"),("y","b"),("x","c");
|
||||
SQL
|
||||
dolt commit -Am "added table t"
|
||||
|
||||
run dolt schema show t
|
||||
[[ "$output" =~ "PRIMARY KEY (\`pk1\`,\`pk2\`)" ]] || false
|
||||
|
||||
dolt migrate
|
||||
|
||||
run dolt schema show t
|
||||
[[ "$output" =~ "PRIMARY KEY (\`pk1\`,\`pk2\`)" ]] || false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user