Skip to content

Commit f16df98

Browse files
committed
improve performance of the detection of semicolon in the SQL commenter
1 parent d17335d commit f16df98

File tree

1 file changed

+12
-7
lines changed
  • dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc

1 file changed

+12
-7
lines changed

dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/SQLCommenter.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,10 @@ public static String inject(
102102
Config config = Config.get();
103103

104104
StringBuilder sb = new StringBuilder(sql.length() + INJECTED_COMMENT_ESTIMATED_SIZE);
105+
int closingSemicolonIndex = indexOfClosingSemicolon(sql);
105106
if (appendComment) {
106-
if (queryEndsWithSemicolon(sql)) {
107-
sb.append(sql, 0, sql.lastIndexOf(";"));
107+
if (closingSemicolonIndex > -1) {
108+
sb.append(sql, 0, closingSemicolonIndex);
108109
} else {
109110
sb.append(sql);
110111
}
@@ -134,7 +135,7 @@ public static String inject(
134135
sb.append(sql);
135136
}
136137

137-
if (appendComment && sql.trim().endsWith(";")) {
138+
if (appendComment && closingSemicolonIndex > -1) {
138139
sb.append(';');
139140
}
140141

@@ -209,18 +210,22 @@ private static void append(StringBuilder sb, String key, String value, int initS
209210
sb.append(key).append(EQUALS).append(QUOTE).append(encodedValue).append(QUOTE);
210211
}
211212

212-
private static boolean queryEndsWithSemicolon(String query) {
213+
/**
214+
* @param query SQL query
215+
* @return index of the semicolon that ends the query, or -1 if none
216+
*/
217+
private static int indexOfClosingSemicolon(String query) {
213218
for (int i = query.length() - 1; i >= 0; i--) {
214219
char c = query.charAt(i);
215220
if (c == ';') {
216-
return true;
217-
} else if (c <= ' ') {
221+
return i;
222+
} else if (Character.isWhitespace(c)) {
218223
continue;
219224
}
220225

221226
break;
222227
}
223228

224-
return false;
229+
return -1;
225230
}
226231
}

0 commit comments

Comments
 (0)