diff --git a/README b/README index 926d089..cacc015 100644 --- a/README +++ b/README @@ -20,7 +20,7 @@ This does not imply the goal is to be what you want. -- build It should be sufficient to type make after unpacking a release. -You'll need a go compiler version 1.13 or later. And libsqlite3. +You'll need a go compiler version 1.16 or later. And libsqlite3. Even on a fast machine, building from source can take several seconds. @@ -42,7 +42,7 @@ Then run honk. -- upgrade -cp honk.db backup.db +old-honk backup `date +backup-%F` ./honk upgrade ./honk diff --git a/database.go b/database.go index c1374c3..d2f10c6 100644 --- a/database.go +++ b/database.go @@ -19,8 +19,8 @@ import ( "bytes" "crypto/sha512" "database/sql" - "encoding/json" _ "embed" + "encoding/json" "fmt" "html/template" "sort" diff --git a/docs/changelog.txt b/docs/changelog.txt index 19b8d99..b9601fe 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -2,6 +2,8 @@ changelog === next ++ Switch database to WAL mode. + - go version 1.16 required. + Specify banner: image in profile. diff --git a/upgradedb.go b/upgradedb.go index 8853f0d..533ff9c 100644 --- a/upgradedb.go +++ b/upgradedb.go @@ -22,7 +22,7 @@ import ( "time" ) -var myVersion = 40 +var myVersion = 41 type dbexecer interface { Exec(query string, args ...interface{}) (sql.Result, error) @@ -200,6 +200,12 @@ func upgradedb() { doordie(db, "update config set value = 40 where key = 'dbversion'") fallthrough case 40: + doordie(db, "PRAGMA journal_mode=WAL") + blobdb := openblobdb() + doordie(blobdb, "PRAGMA journal_mode=WAL") + doordie(db, "update config set value = 41 where key = 'dbversion'") + fallthrough + case 41: default: elog.Fatalf("can't upgrade unknown version %d", dbversion) diff --git a/util.go b/util.go index 85647d9..fe804a3 100644 --- a/util.go +++ b/util.go @@ -100,6 +100,11 @@ func initdb() { os.Exit(1) }() + _, err = db.Exec("PRAGMA journal_mode=WAL") + if err != nil { + elog.Print(err) + return + } for _, line := range strings.Split(sqlSchema, ";") { _, err = db.Exec(line) if err != nil { @@ -176,6 +181,11 @@ func initblobdb() { elog.Print(err) return } + _, err = blobdb.Exec("PRAGMA journal_mode=WAL") + if err != nil { + elog.Print(err) + return + } _, err = blobdb.Exec("create table filedata (xid text, media text, hash text, content blob)") if err != nil { elog.Print(err)