You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CeActivityMapper.xml 8.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
  3. <mapper namespace="org.sonar.db.ce.CeActivityMapper">
  4. <!--assumes query includes an left left outer join on table ce_scanner_context with alias csc -->
  5. <sql id="hasScannerContextColumn" databaseId="mssql">
  6. cast(case when csc.task_uuid is null then 0 else 1 end as bit) as hasScannerContext
  7. </sql>
  8. <sql id="hasScannerContextColumn" databaseId="oracle">
  9. case when csc.task_uuid is null then 0 else 1 end as hasScannerContext
  10. </sql>
  11. <sql id="hasScannerContextColumn">
  12. csc.task_uuid is not null as hasScannerContext
  13. </sql>
  14. <sql id="countWarnings">
  15. (select count(1) from ce_task_message ctm where ctm.task_uuid = ca.uuid) as warningCount
  16. </sql>
  17. <sql id="columns">
  18. ca.id,
  19. ca.uuid,
  20. ca.task_type as taskType,
  21. ca.component_uuid as componentUuid,
  22. ca.main_component_uuid as mainComponentUuid,
  23. ca.analysis_uuid as analysisUuid,
  24. ca.status as status,
  25. ca.submitter_uuid as submitterUuid,
  26. ca.submitted_at as submittedAt,
  27. ca.worker_uuid as workerUuid,
  28. ca.started_at as startedAt,
  29. ca.executed_at as executedAt,
  30. ca.created_at as createdAt,
  31. ca.updated_at as updatedAt,
  32. ca.is_last as isLast,
  33. ca.is_last_key as isLastKey,
  34. ca.main_is_last as mainIsLast,
  35. ca.main_is_last_key as mainIsLastKey,
  36. ca.execution_time_ms as executionTimeMs,
  37. ca.error_message as errorMessage,
  38. ca.error_type as errorType,
  39. <include refid="hasScannerContextColumn"/>
  40. </sql>
  41. <select id="selectByUuid" parameterType="String" resultType="org.sonar.db.ce.CeActivityDto">
  42. select
  43. <include refid="columns"/>,
  44. ca.error_stacktrace as errorStacktrace,
  45. <include refid="countWarnings"/>
  46. from ce_activity ca
  47. left outer join ce_scanner_context csc on
  48. ca.uuid = csc.task_uuid
  49. where
  50. ca.uuid=#{uuid,jdbcType=VARCHAR}
  51. </select>
  52. <select id="selectByQuery" parameterType="map" resultType="org.sonar.db.ce.CeActivityDto">
  53. select
  54. <include refid="columns"/>,
  55. <include refid="countWarnings"/>
  56. <include refid="sqlSelectByQuery" />
  57. order by
  58. ca.created_at desc, id desc
  59. limit #{pagination.pageSize,jdbcType=INTEGER} offset #{pagination.offset,jdbcType=INTEGER}
  60. </select>
  61. <select id="selectByQuery" parameterType="map" resultType="org.sonar.db.ce.CeActivityDto" databaseId="mssql">
  62. select * from (
  63. select row_number() over(order by id desc) as number,
  64. <include refid="columns"/>,
  65. <include refid="countWarnings"/>
  66. <include refid="sqlSelectByQuery" />
  67. ) as query
  68. where
  69. query.number between #{pagination.startRowNumber,jdbcType=INTEGER} and #{pagination.endRowNumber,jdbcType=INTEGER}
  70. order by created_at desc, id desc
  71. </select>
  72. <select id="selectByQuery" parameterType="map" resultType="org.sonar.db.ce.CeActivityDto" databaseId="oracle">
  73. select * from (
  74. select rownum as rn, t.* from (
  75. select
  76. <include refid="columns"/>,
  77. <include refid="countWarnings"/>
  78. <include refid="sqlSelectByQuery" />
  79. order by ca.created_at desc, ca.id desc
  80. ) t
  81. ) t
  82. where
  83. t.rn between #{pagination.startRowNumber,jdbcType=INTEGER} and #{pagination.endRowNumber,jdbcType=INTEGER}
  84. </select>
  85. <sql id="sqlSelectByQuery">
  86. from ce_activity ca
  87. left outer join ce_scanner_context csc on csc.task_uuid = ca.uuid
  88. <where>
  89. <if test="query.onlyCurrents">
  90. and ca.main_is_last=${_true}
  91. </if>
  92. <if test="query.mainComponentUuids != null and query.mainComponentUuids.size()>0">
  93. and ca.main_component_uuid in
  94. <foreach collection="query.mainComponentUuids" open="(" close=")" item="cUuid" separator=",">
  95. #{cUuid,jdbcType=VARCHAR}
  96. </foreach>
  97. </if>
  98. <if test="query.statuses != null and !query.statuses.isEmpty()">
  99. and ca.status in
  100. <foreach collection="query.statuses" open="(" close=")" item="status" separator=",">
  101. #{status,jdbcType=VARCHAR}
  102. </foreach>
  103. </if>
  104. <if test="query.errorTypes != null and !query.errorTypes.isEmpty()">
  105. and ca.error_type in
  106. <foreach collection="query.errorTypes" open="(" close=")" item="errorType" separator=",">
  107. #{errorType,jdbcType=VARCHAR}
  108. </foreach>
  109. </if>
  110. <if test="query.type != null">
  111. and ca.task_type=#{query.type,jdbcType=VARCHAR}
  112. </if>
  113. <if test="query.minSubmittedAt != null">
  114. and ca.submitted_at &gt;= #{query.minSubmittedAt,jdbcType=BIGINT}
  115. </if>
  116. <if test="query.maxExecutedAt != null">
  117. and ca.executed_at &lt;= #{query.maxExecutedAt,jdbcType=BIGINT}
  118. </if>
  119. <if test="query.minExecutedAt != null">
  120. and ca.executed_at &gt;= #{query.minExecutedAt,jdbcType=BIGINT}
  121. </if>
  122. </where>
  123. </sql>
  124. <select id="selectOlderThan" parameterType="long" resultType="org.sonar.db.ce.CeActivityDto">
  125. select
  126. <include refid="columns"/>
  127. from ce_activity ca
  128. left outer join ce_scanner_context csc on csc.task_uuid = ca.uuid
  129. where
  130. ca.created_at &lt; #{beforeDate,jdbcType=BIGINT}
  131. </select>
  132. <select id="countLastByStatusAndMainComponentUuid" resultType="int">
  133. select
  134. count(1)
  135. from
  136. ce_activity
  137. where
  138. main_is_last=${_true}
  139. and status=#{status,jdbcType=VARCHAR}
  140. <if test="mainComponentUuid!=null">
  141. and main_component_uuid=#{mainComponentUuid,jdbcType=VARCHAR}
  142. </if>
  143. </select>
  144. <insert id="insert" parameterType="org.sonar.db.ce.CeActivityDto" useGeneratedKeys="false">
  145. insert into ce_activity (
  146. uuid,
  147. component_uuid,
  148. main_component_uuid,
  149. analysis_uuid,
  150. status,
  151. task_type,
  152. is_last,
  153. is_last_key,
  154. main_is_last,
  155. main_is_last_key,
  156. submitter_uuid,
  157. submitted_at,
  158. worker_uuid,
  159. execution_count,
  160. started_at,
  161. executed_at,
  162. created_at,
  163. updated_at,
  164. execution_time_ms,
  165. error_message,
  166. error_stacktrace,
  167. error_type
  168. )
  169. values (
  170. #{uuid,jdbcType=VARCHAR},
  171. #{componentUuid,jdbcType=VARCHAR},
  172. #{mainComponentUuid,jdbcType=VARCHAR},
  173. #{analysisUuid,jdbcType=VARCHAR},
  174. #{status,jdbcType=VARCHAR},
  175. #{taskType,jdbcType=VARCHAR},
  176. #{isLast,jdbcType=BOOLEAN},
  177. #{isLastKey,jdbcType=VARCHAR},
  178. #{mainIsLast,jdbcType=BOOLEAN},
  179. #{mainIsLastKey,jdbcType=VARCHAR},
  180. #{submitterUuid,jdbcType=VARCHAR},
  181. #{submittedAt,jdbcType=BIGINT},
  182. #{workerUuid,jdbcType=VARCHAR},
  183. 0,
  184. #{startedAt,jdbcType=BIGINT},
  185. #{executedAt,jdbcType=BIGINT},
  186. #{createdAt,jdbcType=BIGINT},
  187. #{updatedAt,jdbcType=BIGINT},
  188. #{executionTimeMs,jdbcType=BIGINT},
  189. #{errorMessage,jdbcType=VARCHAR},
  190. #{errorStacktrace,jdbcType=CLOB},
  191. #{errorType,jdbcType=VARCHAR}
  192. )
  193. </insert>
  194. <update id="clearIsLast" parameterType="map">
  195. update ce_activity set
  196. is_last=${_false},
  197. updated_at=#{updatedAt,jdbcType=BIGINT}
  198. where
  199. is_last=${_true}
  200. and is_last_key=#{isLastKey,jdbcType=VARCHAR}
  201. </update>
  202. <update id="clearMainIsLast" parameterType="map">
  203. update ce_activity set
  204. main_is_last=${_false},
  205. updated_at=#{updatedAt,jdbcType=BIGINT}
  206. where
  207. main_is_last=${_true}
  208. and main_is_last_key=#{mainIsLastKey,jdbcType=VARCHAR}
  209. </update>
  210. <delete id="deleteByUuids" parameterType="string">
  211. delete
  212. from ce_activity
  213. where
  214. uuid in
  215. <foreach collection="uuids" open="(" close=")" item="uuid" separator=",">
  216. #{uuid,jdbcType=VARCHAR}
  217. </foreach>
  218. </delete>
  219. <select id="selectLastByComponentUuidAndTaskType" parameterType="map" resultType="org.sonar.db.ce.CeActivityDto">
  220. select
  221. <include refid="columns"/>
  222. from ce_activity ca
  223. left outer join ce_scanner_context csc on
  224. ca.uuid = csc.task_uuid
  225. where
  226. ca.component_uuid = #{componentUuid,jdbcType=VARCHAR}
  227. and ca.task_type = #{taskType,jdbcType=VARCHAR}
  228. and ca.is_last = ${_true}
  229. </select>
  230. </mapper>