Skip to content

Commit

Permalink
Development: Speed up build statistics query by using an index column
Browse files Browse the repository at this point in the history
  • Loading branch information
krusche committed Feb 17, 2025
1 parent 696d645 commit e3eaaa2
Showing 1 changed file with 4 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ public interface BuildJobRepository extends ArtemisJpaRepository<BuildJob, Long>
LEFT JOIN Course c ON b.courseId = c.id
WHERE (:buildStatus IS NULL OR b.buildStatus = :buildStatus)
AND (:buildAgentAddress IS NULL OR b.buildAgentAddress = :buildAgentAddress)
AND (CAST(:startDate AS string) IS NULL OR b.buildSubmissionDate >= :startDate)
AND (CAST(:endDate AS string) IS NULL OR b.buildSubmissionDate <= :endDate)
AND (CAST(:startDate AS string) IS NULL OR b.buildStartDate >= :startDate)
AND (CAST(:endDate AS string) IS NULL OR b.buildCompletionDate <= :endDate)
AND (:searchTerm IS NULL OR (b.repositoryName LIKE %:searchTerm% OR c.title LIKE %:searchTerm%))
AND (:courseId IS NULL OR b.courseId = :courseId)
AND (:durationLower IS NULL OR (b.buildCompletionDate - b.buildStartDate) >= :durationLower)
Expand Down Expand Up @@ -74,13 +74,14 @@ Page<Long> findIdsByFilterCriteria(@Param("buildStatus") BuildStatus buildStatus
""")
Set<ResultBuildJob> findBuildJobIdsForResultIds(@Param("resultIds") List<Long> resultIds);

// NOTE: we explicitly use buildStartDate here because it has an index in the database
@Query("""
SELECT new de.tum.cit.aet.artemis.buildagent.dto.BuildJobResultCountDTO(
b.buildStatus,
COUNT(b.buildStatus)
)
FROM BuildJob b
WHERE b.buildSubmissionDate >= :fromDateTime
WHERE b.buildStartDate >= :fromDateTime
AND (:courseId IS NULL OR b.courseId = :courseId)
GROUP BY b.buildStatus
""")
Expand Down

0 comments on commit e3eaaa2

Please sign in to comment.