diff --git a/relay-event-normalization/src/normalize/span/description/sql/mod.rs b/relay-event-normalization/src/normalize/span/description/sql/mod.rs index c1335b6a837..036d6802cfc 100644 --- a/relay-event-normalization/src/normalize/span/description/sql/mod.rs +++ b/relay-event-normalization/src/normalize/span/description/sql/mod.rs @@ -34,6 +34,8 @@ static NORMALIZER_REGEX: Lazy = Lazy::new(|| { # Capture ODBC escape sequence. ((?-x)(?P\{(?:ts?|d)\s+'.+'\})) | ((?-x)(?P(-?\b(?:[0-9]+\.)?[0-9]+(?:[eE][+-]?[0-9]+)?\b)(::\w+(\[\]?)?)?)) | + # Hex constants + ((?-x)(?P(\b0x[0-9a-f]+\b)(::\w+(\[\]?)?)?)) | # Capture booleans (as full tokens, not as substrings of other tokens). ((?-x)(?P(\b(?:true|false)\b))) "#, @@ -732,6 +734,12 @@ mod tests { "ALTER TABLE tmp RENAME TO bar" ); + scrub_sql_test!( + fallback_hex, + r#"SELECT {ts '2023-12-24 23:59'}, 0x123456789AbCdEf"#, + "SELECT %s, %s" + ); + scrub_sql_test!( clickhouse, "SELECT (toStartOfHour(finish_ts, 'Universal') AS _snuba_time), (uniqIf((nullIf(user, '') AS _snuba_user), greater(multiIf(equals(tupleElement(('duration', 300), 1), 'lcp'), (if(has(measurements.key, 'lcp'), arrayElement(measurements.value, indexOf(measurements.key, 'lcp')), NULL) AS `_snuba_measurements[lcp]`), (duration AS _snuba_duration)), multiply(tupleElement(('duration', 300), 2), 4))) AS _snuba_count_miserable_user), (ifNull(divide(plus(_snuba_count_miserable_user, 4.56), plus(nullIf(uniqIf(_snuba_user, greater(multiIf(equals(tupleElement(('duration', 300), 1), 'lcp'), `_snuba_measurements[lcp]`, _snuba_duration), 0)), 0), 113.45)), 0) AS _snuba_user_misery), _snuba_count_miserable_user, (divide(countIf(notEquals(transaction_status, 0) AND notEquals(transaction_status, 1) AND notEquals(transaction_status, 2)), count()) AS _snuba_failure_rate), (divide(count(), divide(3600.0, 60)) AS _snuba_tpm_3600) FROM transactions_dist WHERE equals(('transaction' AS _snuba_type), 'transaction') AND greaterOrEquals((finish_ts AS _snuba_finish_ts), toDateTime('2023-06-13T09:08:51', 'Universal')) AND less(_snuba_finish_ts, toDateTime('2023-07-11T09:08:51', 'Universal')) AND in((project_id AS _snuba_project_id), [123, 456, 789]) AND equals((environment AS _snuba_environment), 'production') GROUP BY _snuba_time ORDER BY _snuba_time ASC LIMIT 10000 OFFSET 0",