use RawFilePath for opening sqlite databases
Fix a crash opening sqlite databases when run in a non-unicode locale, with a remote that uses a non-unicode filepath. In that situation converting to Text fails. The fix needs git-annex to be built with persistent-sqlite 2.13.3. Building against older versions still works, but that version is used when building with stack. Database.RawFilePath is a lot of code copied from persistent-sqlite and lightly modified, since only 1 function in persistent-sqlite was made to support RawFilePath. This is a bit of a pain, and I hope that persistent-sqlite will eventually switch to using OsPath, allowing this module to be removed from git-annex. Sponsored-by: k0ld on Patreon
This commit is contained in:
parent
6d789c9c81
commit
8a3beabf35
8 changed files with 138 additions and 8 deletions
|
@ -193,11 +193,13 @@ runSqliteRobustly tablename db a = do
|
|||
| otherwise -> rethrow $ errmsg "after successful open" ex
|
||||
|
||||
opensettle retries ic = do
|
||||
conn <- Sqlite.open tdb
|
||||
#if MIN_VERSION_persistent_sqlite(2,13,3)
|
||||
conn <- Sqlite.open' db
|
||||
#else
|
||||
conn <- Sqlite.open (T.pack (fromRawFilePath db))
|
||||
#endif
|
||||
settle conn retries ic
|
||||
|
||||
tdb = T.pack (fromRawFilePath db)
|
||||
|
||||
settle conn retries ic = do
|
||||
r <- try $ do
|
||||
stmt <- Sqlite.prepare conn nullselect
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue