Skip to content
This repository has been archived by the owner on Apr 2, 2024. It is now read-only.

Commit

Permalink
Apply version upgrades in correct order
Browse files Browse the repository at this point in the history
Add tests to make sure order is correct and fix issue.
  • Loading branch information
cevian committed Aug 7, 2020
1 parent b13cf55 commit 4cb1b34
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
13 changes: 11 additions & 2 deletions pkg/pgmodel/end_to_end_tests/migrate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ func TestMigrationLib(t *testing.T) {
"idempotent 2",
"idempotent 1",
"idempotent 2",
"migration 0.9.0",
"migration 0.10.0=1",
"migration 0.10.0=2",
"idempotent 1",
Expand Down Expand Up @@ -143,16 +144,24 @@ func TestMigrationLib(t *testing.T) {
verifyLogs(t, db, expected[0:6])

//even if no version upgrades, idempotent files apply
err = mig.Migrate(semver.MustParse("0.9.0"))
err = mig.Migrate(semver.MustParse("0.8.0"))
if err != nil {
t.Fatal(err)
}
verifyLogs(t, db, expected[0:8])

//even if no version upgrades, idempotent files apply
err = mig.Migrate(semver.MustParse("0.8.0"))
if err != nil {
t.Fatal(err)
}
verifyLogs(t, db, expected[0:8])

//migrate two version 0.9.0 and 0.10.0 at once to make sure ordered correctly
err = mig.Migrate(semver.MustParse("0.10.0"))
if err != nil {
t.Fatal(err)
}
verifyLogs(t, db, expected[0:12])
verifyLogs(t, db, expected[0:13])
})
}
14 changes: 6 additions & 8 deletions pkg/pgmodel/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -355,15 +355,13 @@ func (t *Migrator) upgradeVersion(tx pgx.Tx, from, to semver.Version) error {

sort.Sort(versions)

for _, e := range entries {
version, err := semver.Make(e.Name())
if err != nil {
log.Warn("msg", "ignoring sql migration script version", "versionName", e.Name())
continue
}
for _, v := range versions {
dirname := fmt.Sprintf("%s", v.String())

if from.Compare(version) < 0 && to.Compare(version) >= 0 {
if err = t.execMigrationFiles(tx, filepath.Join("versions", e.Name())); err != nil {
//When comparing to the latest version use the post-<current> as well since at least
//for now we don't bump versions post-release (pbbl should)
if from.Compare(v) < 0 && to.Compare(v) >= 0 {
if err = t.execMigrationFiles(tx, filepath.Join("versions", dirname)); err != nil {
return err
}
}
Expand Down
13 changes: 13 additions & 0 deletions pkg/pgmodel/test_migrations/migration_files_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
INSERT INTO log VALUES('migration 0.9.0');

0 comments on commit 4cb1b34

Please sign in to comment.