aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core/src
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-07-01 09:26:01 +0200
committerJulien Lancelot <julien.lancelot@gmail.com>2013-07-01 09:26:01 +0200
commit6b164ea3666f10f1065c934da37273ca44339196 (patch)
tree809c87d2a09686bdae047a6ca2d25ec6e57a12de /sonar-core/src
parentb319c87ecf00b6c95b5dcb7924bdc8689b5153a0 (diff)
downloadsonarqube-6b164ea3666f10f1065c934da37273ca44339196.tar.gz
sonarqube-6b164ea3666f10f1065c934da37273ca44339196.zip
SONAR-4449 Fix SQL returning issues with all columns
Diffstat (limited to 'sonar-core/src')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/db/IssueDao.java10
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java12
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml76
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<IssueDto> 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<IssueDto> 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<IssueDto> selectIssues(IssueQuery query, @Nullable Integer userId, SqlSession session){
- return selectIssues(query, userId, query.maxResults(), session);
- }
-
- public List<IssueDto> 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<IssueDto> selectIssueIds(@Param("query") IssueQuery query, @Param("componentRootKeys") Collection<String> 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<IssueDto> selectIssues(@Param("query") IssueQuery query, @Param("componentRootKeys") Collection<String> 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>
<select id="selectIssues" parameterType="map" resultType="Issue" fetchSize="100000">
- select
- <choose>
- <when test="returnOnlyIdAndSortColumns == true">
- i.id
- <include refid="sortColumn"/>
- from issues i
- </when>
- <otherwise>
- <include refid="issueColumns"/>
- 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
- </otherwise>
- </choose>
+ select <include refid="issueColumns"/>
+ 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
<include refid="selectQueryConditions"/>
- <if test="maxResults != null">
- limit #{maxResults}
- </if>
+ </select>
+
+ <select id="selectIssueIds" parameterType="map" resultType="Issue" fetchSize="100000">
+ select i.id <include refid="sortColumn"/>
+ from issues i
+ <include refid="selectQueryConditions"/>
+ limit #{maxResults}
</select>
<!-- SQL Server -->
- <select id="selectIssues" parameterType="map" resultType="Issue" fetchSize="100000" databaseId="mssql">
- select
- <if test="maxResults != null">
- top (#{maxResults})
- </if>
- <choose>
- <when test="returnOnlyIdAndSortColumns == true">
- i.id
- <include refid="sortColumn"/>
- from issues i
- </when>
- <otherwise>
- <include refid="issueColumns"/>
- 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
- </otherwise>
- </choose>
+ <select id="selectIssueIds" parameterType="map" resultType="Issue" fetchSize="100000" databaseId="mssql">
+ select top (#{maxResults}) i.id <include refid="sortColumn"/>
+ from issues i
<include refid="selectQueryConditions"/>
</select>
<!-- Oracle -->
- <select id="selectIssues" parameterType="map" resultType="Issue" fetchSize="100000" databaseId="oracle">
+ <select id="selectIssueIds" parameterType="map" resultType="Issue" fetchSize="100000" databaseId="oracle">
select * from (select
- <choose>
- <when test="returnOnlyIdAndSortColumns == true">
- i.id
- <include refid="sortColumn"/>
- from issues i
- </when>
- <otherwise>
- <include refid="issueColumns"/>
- 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
- </otherwise>
- </choose>
- <include refid="selectQueryConditions"/>
+ i.id <include refid="sortColumn"/>
+ from issues i
+ <include refid="selectQueryConditions"/>
)
- <if test="maxResults != null">
- where rownum &lt;= #{maxResults}
- </if>
+ where rownum &lt;= #{maxResults}
</select>
<sql id="selectQueryConditions">