@@ -800,9 +800,17 @@ _localizeTermAndType tm typ = do
800800-- variable names.
801801saveCachedEvalResult :: forall m . (QueryM m ) => CodebaseEnv -> Reference. Id -> V2. Term Symbol -> m ()
802802saveCachedEvalResult (CodebaseEnv {codebaseOwner}) (Reference. Id resultHash compI) term = do
803- ensureEvalResult >>= \ case
804- (True , _) -> pure () -- Already saved.
805- (False , evalResultId) -> doSave evalResultId
803+ evalResultId <- ensureEvalResult
804+ (alreadySaved :: Bool ) <-
805+ queryExpect1Col
806+ [sql |
807+ SELECT EXISTS (
808+ SELECT FROM sandboxed_eval_result
809+ WHERE user_id = #{codebaseOwner}
810+ AND eval_result_id = #{evalResultId}
811+ )
812+ |]
813+ when (not alreadySaved) $ doSave evalResultId
806814 where
807815 doSave :: EvalResultId -> m ()
808816 doSave evalResultId = do
@@ -837,11 +845,11 @@ saveCachedEvalResult (CodebaseEnv {codebaseOwner}) (Reference.Id resultHash comp
837845 FROM values
838846 |]
839847 -- Ensure there's a row for this eval result, returning whether it already exists.
840- ensureEvalResult :: m ( Bool , EvalResultId )
848+ ensureEvalResult :: m EvalResultId
841849 ensureEvalResult = do
842850 resultHashId <- HashQ. ensureComponentHashIdsOf id (ComponentHash resultHash)
843851 let compIndex = pgComponentIndex compI
844- queryExpect1Row @ ( Bool , EvalResultId )
852+ queryExpect1Col @ EvalResultId
845853 [sql |
846854 WITH values(component_hash_id, component_index) AS (
847855 SELECT * FROM (VALUES (#{resultHashId}, #{compIndex})) AS t(component_hash_id, component_index)
@@ -850,7 +858,7 @@ saveCachedEvalResult (CodebaseEnv {codebaseOwner}) (Reference.Id resultHash comp
850858 VALUES (#{resultHashId}, #{compIndex})
851859 ON CONFLICT DO NOTHING
852860 RETURNING component_hash_id, component_index, id
853- ) SELECT result.id IS NOT NULL, COALESCE(inserted.id, result.id)
861+ ) SELECT COALESCE(inserted.id, result.id)
854862 FROM values val
855863 LEFT JOIN eval_results result
856864 ON val.component_hash_id = result.component_hash_id AND val.component_index = result.component_index
0 commit comments