aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao/src/main/resources/org/sonar/db/telemetry/TelemetryMetricsSentMapper.xml
blob: 40ca25232d4bf7271199266b070d7aa1e5ec6dbc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">

<mapper namespace="org.sonar.db.telemetry.TelemetryMetricsSentMapper">

  <sql id="columns">
    m.metric_key as metricKey,
    m.dimension as dimension,
    m.last_sent as lastSent
  </sql>

  <select id="selectAll" resultType="org.sonar.db.telemetry.TelemetryMetricsSentDto">
    SELECT
    <include refid="columns"/>
    FROM telemetry_metrics_sent m
  </select>

  <insert id="upsert" parameterType="org.sonar.db.telemetry.TelemetryMetricsSentDto" useGeneratedKeys="false" databaseId="postgresql">
    INSERT INTO telemetry_metrics_sent (
      metric_key, dimension, last_sent
    ) VALUES (
      #{metricKey, jdbcType=VARCHAR}, #{dimension, jdbcType=VARCHAR}, #{lastSent, jdbcType=BIGINT}
    )
    ON CONFLICT (metric_key, dimension) DO UPDATE SET
      last_sent = EXCLUDED.last_sent
  </insert>

  <insert id="upsert" parameterType="org.sonar.db.telemetry.TelemetryMetricsSentDto" useGeneratedKeys="false" databaseId="h2">
    MERGE INTO telemetry_metrics_sent AS target
    USING (VALUES (
      #{metricKey, jdbcType=VARCHAR}, #{dimension, jdbcType=VARCHAR}, #{lastSent, jdbcType=BIGINT}
    )) AS source (metric_key, dimension, last_sent)
    ON target.metric_key = source.metric_key AND target.dimension = source.dimension
    WHEN MATCHED THEN
      UPDATE SET last_sent = source.last_sent
    WHEN NOT MATCHED THEN
      INSERT (metric_key, dimension, last_sent)
      VALUES (source.metric_key, source.dimension, source.last_sent)
  </insert>

  <insert id="upsert" parameterType="org.sonar.db.telemetry.TelemetryMetricsSentDto" useGeneratedKeys="false" databaseId="oracle">
    MERGE INTO telemetry_metrics_sent target
    USING (
      SELECT #{metricKey} AS metric_key,
             #{dimension} AS dimension,
             #{lastSent} AS last_sent
      FROM dual
    ) source
    ON (target.metric_key = source.metric_key AND target.dimension = source.dimension)
    WHEN MATCHED THEN
      UPDATE SET target.last_sent = source.last_sent
    WHEN NOT MATCHED THEN
      INSERT (metric_key, dimension, last_sent)
      VALUES (source.metric_key, source.dimension, source.last_sent)
  </insert>

  <insert id="upsert" parameterType="org.sonar.db.telemetry.TelemetryMetricsSentDto" useGeneratedKeys="false" databaseId="mssql">
    MERGE INTO telemetry_metrics_sent AS target
    USING (
      SELECT
        #{metricKey} AS metric_key,
        #{dimension} AS dimension,
        #{lastSent} AS last_sent
    ) AS source (metric_key, dimension, last_sent)
    ON (target.metric_key = source.metric_key AND target.dimension = source.dimension)
    WHEN MATCHED THEN
      UPDATE SET target.last_sent = source.last_sent
    WHEN NOT MATCHED THEN
      INSERT (metric_key, dimension, last_sent)
      VALUES (source.metric_key, source.dimension, source.last_sent);
  </insert>

</mapper>