From abb3f20ed52665903bc17ddf6d499e405307f025 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Sun, 18 Sep 2022 13:25:06 +0100 Subject: [PATCH] replace TVar with IORef in execSQL (#531) --- src/Simplex/Messaging/Agent/Store/SQLite.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Simplex/Messaging/Agent/Store/SQLite.hs b/src/Simplex/Messaging/Agent/Store/SQLite.hs index fba59486f..e8188788b 100644 --- a/src/Simplex/Messaging/Agent/Store/SQLite.hs +++ b/src/Simplex/Messaging/Agent/Store/SQLite.hs @@ -118,6 +118,7 @@ import qualified Data.ByteString.Base64.URL as U import Data.Char (toLower) import Data.Function (on) import Data.Functor (($>)) +import Data.IORef import Data.Int (Int64) import Data.List (foldl', groupBy) import Data.List.NonEmpty (NonEmpty (..)) @@ -243,11 +244,11 @@ sqlString s = quote <> T.replace quote "''" (T.pack s) <> quote exexSQL :: DB.Connection -> Text -> IO [Text] exexSQL db query = do - rs <- newTVarIO [] + rs <- newIORef [] SQLite3.execWithCallback (DB.connectionHandle db) query (addRow rs) - reverse <$> readTVarIO rs + reverse <$> readIORef rs where - addRow rs _count names values = atomically . modifyTVar' rs $ \case + addRow rs _count names values = modifyIORef' rs $ \case [] -> [showValues values, T.intercalate "|" names] rs' -> showValues values : rs' showValues = T.intercalate "|" . map (fromMaybe "")