#3209 MetricsAsJson escape the SQL string content

This commit is contained in:
Rob Bygrave
2023-10-04 23:15:14 +13:00
parent eab4f9c739
commit 429843c358
2 changed files with 37 additions and 1 deletions
@@ -187,11 +187,22 @@ final class MetricsAsJson implements ServerMetricsAsJson {
}
if (isIncludeDetail(metric)) {
append("loc", metric.location());
append("sql", metric.sql());
append("sql", escape(metric.sql()));
}
metricEnd();
}
static String escape(String sql) {
return sql == null ? null : sql
.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\b", "\\b")
.replace("\f", "\\f")
.replace("\n", "\\n")
.replace("\r", "\\r")
.replace("\t", "\\t");
}
private boolean isIncludeDetail(MetaTimedMetric metric) {
return includeExtraAttributes == 2 || includeExtraAttributes == 1 && metric.initialCollection();
}