Browse Source

SONAR-16228 changing the query to not use coalesce()

tags/9.6.0.59041
Lukasz Jarocki 2 years ago
parent
commit
5d2cc92609

+ 38
- 6
server/sonar-db-dao/src/main/resources/org/sonar/db/component/SnapshotMapper.xml View File

@@ -54,15 +54,47 @@
</select>

<select id="selectLastAnalysisDateByProjects" resultType="org.sonar.db.component.ProjectLastAnalysisDateDto">
select coalesce(p.main_branch_project_uuid, p.project_uuid) as project_uuid, max(s.created_at) as last_analysis_date
from snapshots s
inner join components p on s.component_uuid = p.project_uuid
where s.islast=${_true}
and coalesce(p.main_branch_project_uuid, p.project_uuid) in
select
result_with_duplicates.project_uuid as project_uuid ,
max(result_with_duplicates.last_analysis_date) as last_analysis_date
from
(
select
c.main_branch_project_uuid as project_uuid,
max(s.created_at) as last_analysis_date
from
snapshots s
inner join components c on
s.component_uuid = c.project_uuid
where
s.islast = ${_true}
and c.main_branch_project_uuid in
<foreach collection="projectUuids" item="projectUuid" separator="," open="(" close=")">
#{projectUuid,jdbcType=VARCHAR}
</foreach>
group by coalesce(p.main_branch_project_uuid, p.project_uuid)
group by
c.main_branch_project_uuid
union
select
c.project_uuid as project_uuid,
max(s.created_at) as last_analysis_date
from
snapshots s
inner join components c on
s.component_uuid = c.project_uuid
where
s.islast = ${_true}
and c.main_branch_project_uuid is null
and c.project_uuid in
<foreach collection="projectUuids" item="projectUuid" separator="," open="(" close=")">
#{projectUuid,jdbcType=VARCHAR}
</foreach>
group by
c.project_uuid
) result_with_duplicates
group by
result_with_duplicates.project_uuid

</select>

<select id="selectLastSnapshotByRootComponentUuid" resultType="Snapshot">

Loading…
Cancel
Save