diff --git a/provider.go b/provider.go index 1c6c53c42..385447b3a 100644 --- a/provider.go +++ b/provider.go @@ -175,6 +175,9 @@ func (p *Provider) GetVersions(ctx context.Context) (current, target int64, err // which migrations were applied. For example, if migrations were applied out of order (1,4,2,3), // this method returns 4. If no migrations have been applied, it returns 0. func (p *Provider) GetDBVersion(ctx context.Context) (int64, error) { + if p.cfg.disableVersioning { + return -1, errors.New("getting database version not supported when versioning is disabled") + } return p.getDBMaxVersion(ctx, nil) } @@ -596,13 +599,17 @@ func (p *Provider) status(ctx context.Context) (_ []*MigrationStatus, retErr err }, State: StatePending, } - dbResult, err := p.store.GetMigration(ctx, conn, m.Version) - if err != nil && !errors.Is(err, database.ErrVersionNotFound) { - return nil, err - } - if dbResult != nil { - migrationStatus.State = StateApplied - migrationStatus.AppliedAt = dbResult.Timestamp + // If versioning is disabled, we can't check the database for applied migrations, so we + // assume all migrations are pending. + if !p.cfg.disableVersioning { + dbResult, err := p.store.GetMigration(ctx, conn, m.Version) + if err != nil && !errors.Is(err, database.ErrVersionNotFound) { + return nil, err + } + if dbResult != nil { + migrationStatus.State = StateApplied + migrationStatus.AppliedAt = dbResult.Timestamp + } } status = append(status, migrationStatus) } diff --git a/provider_run_test.go b/provider_run_test.go index 79829342b..604ba8695 100644 --- a/provider_run_test.go +++ b/provider_run_test.go @@ -506,10 +506,9 @@ func TestNoVersioning(t *testing.T) { upResult, err := p.Up(ctx) check.NoError(t, err) check.Number(t, len(upResult), 2) - // Confirm no changes to the versioned schema in the DB - currentVersion, err := p.GetDBVersion(ctx) - check.NoError(t, err) - check.Number(t, baseVersion, currentVersion) + // When versioning is disabled, we cannot track the version of the seed files. + _, err = p.GetDBVersion(ctx) + check.HasError(t, err) seedOwnerCount, err := countSeedOwners(db) check.NoError(t, err) check.Number(t, seedOwnerCount, wantSeedOwnerCount) @@ -519,10 +518,9 @@ func TestNoVersioning(t *testing.T) { downResult, err := p.DownTo(ctx, 0) check.NoError(t, err) check.Number(t, len(downResult), 2) - // Confirm no changes to the versioned schema in the DB - currentVersion, err := p.GetDBVersion(ctx) - check.NoError(t, err) - check.Number(t, baseVersion, currentVersion) + // When versioning is disabled, we cannot track the version of the seed files. + _, err = p.GetDBVersion(ctx) + check.HasError(t, err) seedOwnerCount, err := countSeedOwners(db) check.NoError(t, err) check.Number(t, seedOwnerCount, 0)