diff --git a/go.mod b/go.mod index a03b4d52dc61cda17fd727b473286e62814b48b4..6c3c91afc4bde522c8d0c17ef3765c9686a59772 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/gofrs/flock v0.8.0 // indirect github.com/google/go-cmp v0.5.8 github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 - github.com/mattn/go-sqlite3 v1.14.7 + github.com/mattn/go-sqlite3 v1.14.14 github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 github.com/prometheus/client_golang v1.12.2 github.com/russross/blackfriday/v2 v2.1.0 diff --git a/go.sum b/go.sum index 14ab45000eed1178bfe6e052d9e9f0802aa2d0ef..2cc4a8895f29f46e55bf0b02a2ac81325a573bc4 100644 --- a/go.sum +++ b/go.sum @@ -554,6 +554,8 @@ github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lL github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA= github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= diff --git a/sqlutil/db_test.go b/sqlutil/db_test.go index a91b7e2c66be6259070469890272ab512b888850..e6da51c8e485570aa61c488b7f51ca266bc0dd60 100644 --- a/sqlutil/db_test.go +++ b/sqlutil/db_test.go @@ -141,3 +141,41 @@ func TestOpenDB_Write(t *testing.T) { checkTestValue(t, db) } + +func TestOpenDB_Migrations_Legacy(t *testing.T) { + dir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + + db, err := sql.Open("sqlite3", dir+"/test.db") + if err != nil { + t.Fatal(err) + } + for _, stmt := range []string{ + "CREATE TABLE schema_migrations (version uint64,dirty bool)", + "INSERT INTO schema_migrations (version, dirty) VALUES (2, 0)", + "CREATE TABLE test (id INTEGER PRIMARY KEY NOT NULL, value TEXT)", + "CREATE INDEX idx_test_value ON test(value)", + } { + if _, err := db.Exec(stmt); err != nil { + t.Fatalf("statement '%s': %v", stmt, err) + } + } + db.Close() + + migrations := []func(*sql.Tx) error{ + Statement("CREATE TABLE test (id INTEGER PRIMARY KEY NOT NULL, value TEXT)"), + Statement("CREATE INDEX idx_test_value ON test(value)"), + Statement("INSERT INTO test (id, value) VALUES (1, 'test')"), + } + + db, err = OpenDB(dir+"/test.db", WithMigrations(migrations)) + if err != nil { + t.Fatal("first open: ", err) + } + defer db.Close() + + checkTestValue(t, db) +}