|
1 | 1 | [
|
| 2 | + { |
| 3 | + "input_cel": "alert.severity == null", |
| 4 | + "description": "Equality with null", |
| 5 | + "expected_sql_dialect_based": { |
| 6 | + "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"severity\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"severity\"'))) IS NULL", |
| 7 | + "postgresql": "COALESCE((alert_enrichments) ->> 'severity', (alert_event) ->> 'severity') IS NULL", |
| 8 | + "sqlite": "COALESCE(json_extract(alert_enrichments, '$.\"severity\"'), json_extract(alert_event, '$.\"severity\"')) IS NULL" |
| 9 | + } |
| 10 | + }, |
2 | 11 | {
|
3 | 12 | "input_cel": "alert.severity == 'HIGH'",
|
4 | 13 | "description": "Queried field refers to multiple JSON columns",
|
5 | 14 | "expected_sql_dialect_based": {
|
6 |
| - "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"severity\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"severity\"')), '__@NULL@__') = 'HIGH'", |
7 |
| - "postgresql": "COALESCE(((alert_enrichments) ->> 'severity')::TEXT, ((alert_event) ->> 'severity')::TEXT, '__@NULL@__') = 'HIGH'", |
8 |
| - "sqlite": "COALESCE(CAST(json_extract(alert_enrichments, '$.\"severity\"') as TEXT), CAST(json_extract(alert_event, '$.\"severity\"') as TEXT), '__@NULL@__') = 'HIGH'" |
| 15 | + "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"severity\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"severity\"'))) = 'HIGH'", |
| 16 | + "postgresql": "COALESCE(((alert_enrichments) ->> 'severity')::TEXT, ((alert_event) ->> 'severity')::TEXT) = 'HIGH'", |
| 17 | + "sqlite": "COALESCE(CAST(json_extract(alert_enrichments, '$.\"severity\"') as TEXT), CAST(json_extract(alert_event, '$.\"severity\"') as TEXT)) = 'HIGH'" |
9 | 18 | }
|
10 | 19 | },
|
11 | 20 | {
|
12 | 21 | "input_cel": "name != 'Payments incident'",
|
13 |
| - "description": "Queried field refers to multipl columns", |
| 22 | + "description": "Queried field refers to multiple columns", |
| 23 | + "expected_sql_dialect_based": { |
| 24 | + "mysql": "COALESCE(user_generated_name, ai_generated_name) != 'Payments incident'", |
| 25 | + "postgresql": "COALESCE(user_generated_name, ai_generated_name) != 'Payments incident'", |
| 26 | + "sqlite": "COALESCE(user_generated_name, ai_generated_name) != 'Payments incident'" |
| 27 | + } |
| 28 | + }, |
| 29 | + { |
| 30 | + "input_cel": "name in ['Payments incident', 'API incident', 'Network incident', null]", |
| 31 | + "description": "IN operator along with NULL", |
14 | 32 | "expected_sql_dialect_based": {
|
15 |
| - "mysql": "COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') != 'Payments incident'", |
16 |
| - "postgresql": "COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') != 'Payments incident'", |
17 |
| - "sqlite": "COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') != 'Payments incident'" |
| 33 | + "mysql": "(COALESCE(user_generated_name, ai_generated_name) in ('Payments incident', 'API incident', 'Network incident') OR COALESCE(user_generated_name, ai_generated_name) IS NULL)", |
| 34 | + "postgresql": "(COALESCE(user_generated_name, ai_generated_name) in ('Payments incident', 'API incident', 'Network incident') OR COALESCE(user_generated_name, ai_generated_name) IS NULL)", |
| 35 | + "sqlite": "(COALESCE(user_generated_name, ai_generated_name) in ('Payments incident', 'API incident', 'Network incident') OR COALESCE(user_generated_name, ai_generated_name) IS NULL)" |
18 | 36 | }
|
19 | 37 | },
|
20 | 38 | {
|
21 | 39 | "input_cel": "!(name in ['Payments incident', 'API incident', 'Network incident', null])",
|
22 |
| - "description": "IN operator along with NOT", |
| 40 | + "description": "IN operator along with NOT and NULL", |
23 | 41 | "expected_sql_dialect_based": {
|
24 |
| - "mysql": "NOT (COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') in ('Payments incident', 'API incident', 'Network incident', '__@NULL@__'))", |
25 |
| - "postgresql": "NOT (COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') in ('Payments incident', 'API incident', 'Network incident', '__@NULL@__'))", |
26 |
| - "sqlite": "NOT (COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') in ('Payments incident', 'API incident', 'Network incident', '__@NULL@__'))" |
| 42 | + "mysql": "NOT ((COALESCE(user_generated_name, ai_generated_name) in ('Payments incident', 'API incident', 'Network incident') OR COALESCE(user_generated_name, ai_generated_name) IS NULL))", |
| 43 | + "postgresql": "NOT ((COALESCE(user_generated_name, ai_generated_name) in ('Payments incident', 'API incident', 'Network incident') OR COALESCE(user_generated_name, ai_generated_name) IS NULL))", |
| 44 | + "sqlite": "NOT ((COALESCE(user_generated_name, ai_generated_name) in ('Payments incident', 'API incident', 'Network incident') OR COALESCE(user_generated_name, ai_generated_name) IS NULL))" |
27 | 45 | }
|
28 | 46 | },
|
29 | 47 | {
|
|
84 | 102 | "input_cel": "alert.randomDate >= '2025-01-30T10:00:09.553Z'",
|
85 | 103 | "description": "Comparison operator with dates for a JSON multiple columns",
|
86 | 104 | "expected_sql_dialect_based": {
|
87 |
| - "sqlite": "COALESCE(json_extract(alert_enrichments, '$.\"randomDate\"'), json_extract(alert_event, '$.\"randomDate\"'), NULL) >= datetime('2025-01-30 10:00:09')", |
88 |
| - "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"randomDate\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"randomDate\"')), NULL) >= CAST('2025-01-30 10:00:09' as DATETIME)", |
89 |
| - "postgresql": "COALESCE(((alert_enrichments) ->> 'randomDate')::TIMESTAMP, ((alert_event) ->> 'randomDate')::TIMESTAMP, NULL) >= CAST('2025-01-30 10:00:09' as TIMESTAMP)" |
| 105 | + "sqlite": "COALESCE(json_extract(alert_enrichments, '$.\"randomDate\"'), json_extract(alert_event, '$.\"randomDate\"')) >= datetime('2025-01-30 10:00:09')", |
| 106 | + "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"randomDate\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"randomDate\"'))) >= CAST('2025-01-30 10:00:09' as DATETIME)", |
| 107 | + "postgresql": "COALESCE(((alert_enrichments) ->> 'randomDate')::TIMESTAMP, ((alert_event) ->> 'randomDate')::TIMESTAMP) >= CAST('2025-01-30 10:00:09' as TIMESTAMP)" |
90 | 108 | }
|
91 | 109 | },
|
92 | 110 | {
|
93 | 111 | "input_cel": "alert.count > 7.84",
|
94 | 112 | "description": "Greater than with float",
|
95 | 113 | "expected_sql_dialect_based": {
|
96 |
| - "sqlite": "COALESCE(CAST(json_extract(alert_enrichments, '$.\"count\"') as REAL), CAST(json_extract(alert_event, '$.\"count\"') as REAL), NULL) > 7.84", |
97 |
| - "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"count\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"count\"')), NULL) > 7.84", |
98 |
| - "postgresql": "COALESCE(((alert_enrichments) ->> 'count')::FLOAT, ((alert_event) ->> 'count')::FLOAT, NULL) > 7.84" |
| 114 | + "sqlite": "COALESCE(CAST(json_extract(alert_enrichments, '$.\"count\"') as REAL), CAST(json_extract(alert_event, '$.\"count\"') as REAL)) > 7.84", |
| 115 | + "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"count\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"count\"'))) > 7.84", |
| 116 | + "postgresql": "COALESCE(((alert_enrichments) ->> 'count')::FLOAT, ((alert_event) ->> 'count')::FLOAT) > 7.84" |
99 | 117 | }
|
100 | 118 | },
|
101 | 119 | {
|
|
129 | 147 | "input_cel": "name == 'Payments incident' && severity <= 'critical'",
|
130 | 148 | "description": "AND with less than than comparison operator with enum when constat is the last value in enum",
|
131 | 149 | "expected_sql_dialect_based": {
|
132 |
| - "sqlite": "COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') = 'Payments incident'", |
133 |
| - "mysql": "COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') = 'Payments incident'", |
134 |
| - "postgresql": "COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') = 'Payments incident'" |
| 150 | + "sqlite": "COALESCE(user_generated_name, ai_generated_name) = 'Payments incident'", |
| 151 | + "mysql": "COALESCE(user_generated_name, ai_generated_name) = 'Payments incident'", |
| 152 | + "postgresql": "COALESCE(user_generated_name, ai_generated_name) = 'Payments incident'" |
135 | 153 | }
|
136 | 154 | },
|
137 | 155 | {
|
|
147 | 165 | "input_cel": "name == 'Payments incident' && severity > 'critical'",
|
148 | 166 | "description": "AND with greater than comparison operator with enum when constat is the last value in enum",
|
149 | 167 | "expected_sql_dialect_based": {
|
150 |
| - "sqlite": "(COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') = 'Payments incident' AND false)", |
151 |
| - "mysql": "(COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') = 'Payments incident' AND FALSE)", |
152 |
| - "postgresql": "(COALESCE(user_generated_name, ai_generated_name, '__@NULL@__') = 'Payments incident' AND false)" |
| 168 | + "sqlite": "(COALESCE(user_generated_name, ai_generated_name) = 'Payments incident' AND false)", |
| 169 | + "mysql": "(COALESCE(user_generated_name, ai_generated_name) = 'Payments incident' AND FALSE)", |
| 170 | + "postgresql": "(COALESCE(user_generated_name, ai_generated_name) = 'Payments incident' AND false)" |
153 | 171 | }
|
154 | 172 | },
|
155 | 173 | {
|
156 | 174 | "input_cel": "alert.count <= 100",
|
157 | 175 | "description": "Less than or equal with integer",
|
158 | 176 | "expected_sql_dialect_based": {
|
159 |
| - "sqlite": "COALESCE(CAST(json_extract(alert_enrichments, '$.\"count\"') as REAL), CAST(json_extract(alert_event, '$.\"count\"') as REAL), NULL) <= 100", |
160 |
| - "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"count\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"count\"')), NULL) <= 100", |
161 |
| - "postgresql": "COALESCE(((alert_enrichments) ->> 'count')::FLOAT, ((alert_event) ->> 'count')::FLOAT, NULL) <= 100" |
| 177 | + "sqlite": "COALESCE(CAST(json_extract(alert_enrichments, '$.\"count\"') as REAL), CAST(json_extract(alert_event, '$.\"count\"') as REAL)) <= 100", |
| 178 | + "mysql": "COALESCE(JSON_UNQUOTE(JSON_EXTRACT(alert_enrichments, '$.\"count\"')), JSON_UNQUOTE(JSON_EXTRACT(alert_event, '$.\"count\"'))) <= 100", |
| 179 | + "postgresql": "COALESCE(((alert_enrichments) ->> 'count')::FLOAT, ((alert_event) ->> 'count')::FLOAT) <= 100" |
162 | 180 | }
|
163 | 181 | },
|
164 | 182 | {
|
|
0 commit comments