Fix SQL for PostgreSQL

This commit is contained in:
Naoki Takezoe
2016-04-15 20:27:41 +09:00
parent 53cbc36a01
commit 0c50545cbd

View File

@@ -108,22 +108,38 @@ trait IssuesService {
} }
import gitbucket.core.model.Profile.commitStateColumnType import gitbucket.core.model.Profile.commitStateColumnType
val query = Q.query[Seq[(String, String, Int)], (String, String, Int, Int, Int, Option[String], Option[CommitState], Option[String], Option[String])](s""" val query = Q.query[Seq[(String, String, Int)], (String, String, Int, Int, Int, Option[String], Option[CommitState], Option[String], Option[String])](s"""
SELECT SUMM.USER_NAME, SUMM.REPOSITORY_NAME, SUMM.ISSUE_ID, CS_ALL, CS_SUCCESS SELECT
, CSD.CONTEXT, CSD.STATE, CSD.TARGET_URL, CSD.DESCRIPTION SUMM.USER_NAME,
FROM (SELECT SUMM.REPOSITORY_NAME,
PR.USER_NAME SUMM.ISSUE_ID,
, PR.REPOSITORY_NAME CS_ALL,
, PR.ISSUE_ID CS_SUCCESS,
, COUNT(CS.STATE) AS CS_ALL CSD.CONTEXT,
, COUNT(CS.STATE = 'success') AS CS_SUCCESS CSD.STATE,
, PR.COMMIT_ID_TO AS COMMIT_ID CSD.TARGET_URL,
CSD.DESCRIPTION
FROM (
SELECT
PR.USER_NAME,
PR.REPOSITORY_NAME,
PR.ISSUE_ID,
COUNT(CS.STATE) AS CS_ALL,
CSS.CS_SUCCESS AS CS_SUCCESS,
PR.COMMIT_ID_TO AS COMMIT_ID
FROM PULL_REQUEST PR FROM PULL_REQUEST PR
JOIN COMMIT_STATUS CS JOIN COMMIT_STATUS CS
ON PR.USER_NAME = CS.USER_NAME ON PR.USER_NAME = CS.USER_NAME AND PR.REPOSITORY_NAME = CS.REPOSITORY_NAME AND PR.COMMIT_ID_TO = CS.COMMIT_ID
AND PR.REPOSITORY_NAME = CS.REPOSITORY_NAME JOIN (
AND PR.COMMIT_ID_TO = CS.COMMIT_ID SELECT
WHERE $issueIdQuery COUNT(*) AS CS_SUCCESS,
GROUP BY PR.USER_NAME, PR.REPOSITORY_NAME, PR.ISSUE_ID) as SUMM USER_NAME,
REPOSITORY_NAME,
COMMIT_ID
FROM COMMIT_STATUS WHERE STATE = 'success' GROUP BY USER_NAME, REPOSITORY_NAME, COMMIT_ID
) CSS ON PR.USER_NAME = CSS.USER_NAME AND PR.REPOSITORY_NAME = CSS.REPOSITORY_NAME AND PR.COMMIT_ID_TO = CSS.COMMIT_ID
WHERE $issueIdQuery
GROUP BY PR.USER_NAME, PR.REPOSITORY_NAME, PR.ISSUE_ID
) as SUMM
LEFT OUTER JOIN COMMIT_STATUS CSD LEFT OUTER JOIN COMMIT_STATUS CSD
ON SUMM.CS_ALL = 1 AND SUMM.COMMIT_ID = CSD.COMMIT_ID"""); ON SUMM.CS_ALL = 1 AND SUMM.COMMIT_ID = CSD.COMMIT_ID""");
query(issueList).list.map { query(issueList).list.map {