From a8e02f766b93d4fcc2fed56a47a7b728b820c816 Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 28 Feb 2023 14:40:52 +0100 Subject: [PATCH] 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. --- src/PostgREST/Query.hs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/PostgREST/Query.hs b/src/PostgREST/Query.hs index 81842b576..a2fa37ca8 100644 --- a/src/PostgREST/Query.hs +++ b/src/PostgREST/Query.hs @@ -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)