Skip to content

Commit 2a97fc5

Browse files
authored
Merge pull request #165 from unisoncomputing/cp/fix-doc-caching
Correctly insert already cached docs
2 parents 5979e64 + bf2ed7b commit 2a97fc5

File tree

1 file changed

+14
-6
lines changed
  • share-api/src/Share/Postgres/Definitions

1 file changed

+14
-6
lines changed

share-api/src/Share/Postgres/Definitions/Queries.hs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -800,9 +800,17 @@ _localizeTermAndType tm typ = do
800800
-- variable names.
801801
saveCachedEvalResult :: forall m. (QueryM m) => CodebaseEnv -> Reference.Id -> V2.Term Symbol -> m ()
802802
saveCachedEvalResult (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

Comments
 (0)