From 6b164ea3666f10f1065c934da37273ca44339196 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 1 Jul 2013 09:26:01 +0200 Subject: SONAR-4449 Fix SQL returning issues with all columns --- .../java/org/sonar/core/issue/db/IssueDao.java | 10 +-- .../java/org/sonar/core/issue/db/IssueMapper.java | 12 +++- .../org/sonar/core/issue/db/IssueMapper.xml | 76 ++++++---------------- 3 files changed, 33 insertions(+), 65 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDao.java b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDao.java index 1fa8b6d024c..ca403f21a64 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDao.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDao.java @@ -101,25 +101,21 @@ public class IssueDao implements BatchComponent, ServerComponent { private List selectIssueIds(IssueQuery query, @Nullable Integer userId, Integer maxResults, SqlSession session){ IssueMapper mapper = session.getMapper(IssueMapper.class); - return mapper.selectIssues(query, query.componentRoots(), userId, query.requiredRole(), maxResults, true); + return mapper.selectIssueIds(query, query.componentRoots(), userId, query.requiredRole(), maxResults); } public List selectIssues(IssueQuery query) { SqlSession session = mybatis.openSession(); try { - return selectIssues(query, null, Integer.MAX_VALUE, session); + return selectIssues(query, null, session); } finally { MyBatis.closeQuietly(session); } } public List selectIssues(IssueQuery query, @Nullable Integer userId, SqlSession session){ - return selectIssues(query, userId, query.maxResults(), session); - } - - public List selectIssues(IssueQuery query, @Nullable Integer userId, Integer maxResults, SqlSession session){ IssueMapper mapper = session.getMapper(IssueMapper.class); - return mapper.selectIssues(query, query.componentRoots(), userId, query.requiredRole(), maxResults, false); + return mapper.selectIssues(query, query.componentRoots(), userId, query.requiredRole()); } @VisibleForTesting diff --git a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java index d8ea5863a07..31339c7e920 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java @@ -37,9 +37,17 @@ public interface IssueMapper { * Return a paginated list of authorized issue ids for a user. * If the role is null, then the authorisation check is disabled. */ + List selectIssueIds(@Param("query") IssueQuery query, @Param("componentRootKeys") Collection componentRootKeys, + @Nullable @Param("userId") Integer userId, @Nullable @Param("role") String role, + @Param("maxResults") Integer maxResult); + + /** + * Return a none paginated list of authorized issues for a user. + * If the role is null, then the authorisation check is disabled. + */ List selectIssues(@Param("query") IssueQuery query, @Param("componentRootKeys") Collection componentRootKeys, - @Nullable @Param("userId") Integer userId, @Nullable @Param("role") String role, - @Param("maxResults") Integer maxResult, @Param("returnOnlyIdAndSortColumns") boolean returnOnlyIdAndSortColumns); + @Nullable @Param("userId") Integer userId, @Nullable @Param("role") String role); + void insert(IssueDto issue); diff --git a/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml b/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml index 575f3d92e02..2cb15386ef9 100644 --- a/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml @@ -186,72 +186,36 @@ + + - + select top (#{maxResults}) i.id + from issues i - select * from (select - - - i.id - - from issues i - - - - from issues i - inner join rules r on r.id=i.rule_id - inner join projects p on p.id=i.component_id - inner join projects root on root.id=i.root_component_id - - - + i.id + from issues i + ) - - where rownum <= #{maxResults} - + where rownum <= #{maxResults} -- cgit v1.2.3