perf: Allow preparing pre-request SQL statement

This will prepare the pre-request statement (if prepared statements
are enabled) with a possible minor performance benefit -- the load
test is not entirely conclusive.
This commit is contained in:
Robert Vollmert
2023-03-20 13:40:43 +01:00
committed by Robert
parent cae1c67b00
commit a8e02f766b
+8 -2
View File
@@ -23,6 +23,8 @@ import qualified Data.Text.Encoding as T
import qualified Hasql.Decoders as HD
import qualified Hasql.DynamicStatements.Snippet as SQL (Snippet)
import qualified Hasql.DynamicStatements.Statement as SQL
import qualified Hasql.Encoders as HE
import qualified Hasql.Statement as SQL
import qualified Hasql.Transaction as SQL
import qualified PostgREST.Error as Error
@@ -268,6 +270,10 @@ setPgLocals conf claims role req actualPgVersion = lift $
-- | Runs the pre-request function.
runPreReq :: AppConfig -> DbHandler ()
runPreReq conf = lift $ traverse_ SQL.sql preReqSql
runPreReq conf = lift $ traverse_ (SQL.statement mempty . stmt) (configDbPreRequest conf)
where
preReqSql = (\f -> "select " <> fromQi f <> "();") <$> configDbPreRequest conf
stmt req = SQL.Statement
("select " <> fromQi req <> "()")
HE.noParams
HD.noResult
(configDbPreparedStatements conf)