vikunja/pkg/db
kolaente 98f2893ffe fix(db): use WAL mode for SQLite and temp file for ephemeral databases
Three SQLite connection issues are fixed:

1. The refactoring in 26c0f71 accidentally dropped _busy_timeout from
   the file-based SQLite connection string. Without it, concurrent
   transactions get instant SQLITE_BUSY errors instead of waiting.

2. _txlock=immediate forced ALL transactions (including reads) to
   acquire the write lock at BEGIN, serializing all database access.
   WAL mode makes this unnecessary: readers use snapshots and never
   block writers, so the SHARED-to-RESERVED deadlock cannot occur.

3. In-memory shared cache (file::memory:?cache=shared) uses table-level
   locking where _busy_timeout is ineffective (returns SQLITE_LOCKED,
   not SQLITE_BUSY) and concurrent connections deadlock. Replace with a
   temp file using WAL mode for proper concurrency.
2026-03-03 10:41:19 +01:00
..
fixtures test: add orphaned project fixture for repair-projects command 2026-02-25 11:56:25 +01:00
db.go fix(db): use WAL mode for SQLite and temp file for ephemeral databases 2026-03-03 10:41:19 +01:00
db_path_test.go refactor(db): extract testable ResolveDatabasePath function (#2193) 2026-02-08 10:47:57 +00:00
dump.go fix(db): validate table names and quote identifiers in raw SQL 2026-02-25 13:01:00 +01:00
helpers.go fix: MySQL constraint violations returning HTTP 500 instead of 400 for task bucket duplicates (#1154) 2025-07-22 08:59:12 +00:00
helpers_test.go fix: MySQL constraint violations returning HTTP 500 instead of 400 for task bucket duplicates (#1154) 2025-07-22 08:59:12 +00:00
test.go refactor: remove environment variable requirements for go test 2026-02-17 18:01:05 +01:00
test_fixtures.go refactor: remove environment variable requirements for go test 2026-02-17 18:01:05 +01:00