|
|
@ -60,29 +60,34 @@ function makeFillQuery(withDependencies) { |
|
|
|
SELECT item_id FROM tag_candidates |
|
|
|
` |
|
|
|
} |
|
|
|
), |
|
|
|
tasks AS NOT MATERIALIZED ( |
|
|
|
SELECT |
|
|
|
item_id, |
|
|
|
is_successful, |
|
|
|
( |
|
|
|
results.is_successful = FALSE |
|
|
|
OR ( |
|
|
|
results.is_successful = TRUE |
|
|
|
AND results.is_invalidated = FALSE |
|
|
|
AND ( |
|
|
|
results.expires_at > NOW() |
|
|
|
OR results.expires_at IS NULL |
|
|
|
) |
|
|
|
) |
|
|
|
) AS is_completed |
|
|
|
FROM srap_task_results AS results |
|
|
|
WHERE |
|
|
|
results.task = :task |
|
|
|
AND results.task_version = :taskVersion |
|
|
|
) |
|
|
|
SELECT |
|
|
|
:task AS task, |
|
|
|
item_id |
|
|
|
full_candidates.item_id |
|
|
|
FROM full_candidates |
|
|
|
WHERE NOT EXISTS ( |
|
|
|
SELECT item_id FROM srap_task_results AS results |
|
|
|
WHERE |
|
|
|
item_id = full_candidates.item_id |
|
|
|
AND results.task = :task |
|
|
|
AND results.task_version = :taskVersion |
|
|
|
AND ( |
|
|
|
results.is_successful = FALSE |
|
|
|
OR ( |
|
|
|
results.is_successful = TRUE |
|
|
|
AND results.is_invalidated = FALSE |
|
|
|
AND ( |
|
|
|
results.expires_at > NOW() |
|
|
|
OR results.expires_at IS NULL |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
LEFT JOIN tasks ON full_candidates.item_id = tasks.item_id |
|
|
|
WHERE tasks.is_completed IS NOT TRUE |
|
|
|
ORDER BY tasks.is_successful NULLS FIRST |
|
|
|
`;
|
|
|
|
} |
|
|
|
|
|
|
|