言うほどハマっていないです。
前提条件
- Ubuntu 16.04
- GitBucket 4.15.0
- MariaDB 10.2.7
ISSUE_OUTLINE_VIEWがおかしいだの何だの怒られる
MySQLのバグ(というか仕様)で、ビューのFROM句でサブクエリを使えない、というのが原因。普段、仕事でもビューを使うことがないのでそんなこと全く知りませんでした(情弱
どうしましょうと思いググってみると、本家GitBucketのissueに解決法が載っていました。
4.14.0でビューを作成するSQLが変更になっているので、上記に書いてあるSQLでは対応できません。といっても、サブクエリ部分を別のビューに切り出しているだけなので、ソースと見比べながら作業すれば修正自体は数秒で終わります。
ということで、最新の4.15.0対応版が以下のSQL。
CREATE OR REPLACE VIEW ISSUE_OUTLINE_VIEW_SUB1 AS SELECT USER_NAME , REPOSITORY_NAME , ISSUE_ID , COUNT(COMMENT_ID) AS COMMENT_COUNT FROM ISSUE_COMMENT WHERE ACTION IN ('comment', 'close_comment', 'reopen_comment') GROUP BY USER_NAME , REPOSITORY_NAME , ISSUE_ID; CREATE OR REPLACE VIEW ISSUE_OUTLINE_VIEW_SUB2 AS SELECT USER_NAME , REPOSITORY_NAME , ISSUE_ID , COUNT(COMMENT_ID) AS COMMENT_COUNT FROM COMMIT_COMMENT GROUP BY USER_NAME , REPOSITORY_NAME , ISSUE_ID; CREATE OR REPLACE VIEW ISSUE_OUTLINE_VIEW AS SELECT A.USER_NAME , A.REPOSITORY_NAME , A.ISSUE_ID , COALESCE(B.COMMENT_COUNT, 0) + COALESCE(C.COMMENT_COUNT, 0) AS COMMENT_COUNT , COALESCE(D.ORDERING, 9999) AS PRIORITY FROM ISSUE A LEFT OUTER JOIN ISSUE_OUTLINE_VIEW_SUB1 B ON (A.USER_NAME = B.USER_NAME AND A.REPOSITORY_NAME = B.REPOSITORY_NAME AND A.ISSUE_ID = B.ISSUE_ID) LEFT OUTER JOIN ISSUE_OUTLINE_VIEW_SUB2 C ON (A.USER_NAME = C.USER_NAME AND A.REPOSITORY_NAME = C.REPOSITORY_NAME AND A.ISSUE_ID = C.ISSUE_ID) LEFT OUTER JOIN PRIORITY D ON (A.PRIORITY_ID = D.PRIORITY_ID);
マリア様がみてない
PostgreSQLに移行したいです。