Skip to content

Commit 0dd4398

Browse files
Fix java.sqlTypes and setObject tests
1 parent fa3bb67 commit 0dd4398

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

instrumentation/jdbc/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jdbc/PreparedStatementInstrumentation.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public void transform(TypeTransformer transformer) {
9696
.and(takesArgument(2, int.class))
9797
.and(takesArguments(3))
9898
.and(isPublic()),
99-
PreparedStatementInstrumentation.class.getName() + "$SetParameter2Advice");
99+
PreparedStatementInstrumentation.class.getName() + "$SetParameter3Advice");
100100
transformer.applyAdviceToMethod(
101101
named("clearParameters").and(takesNoArguments()).and(isPublic()),
102102
PreparedStatementInstrumentation.class.getName() + "$ClearParametersAdvice");
@@ -200,6 +200,38 @@ public static void onExit(
200200
}
201201
}
202202

203+
@SuppressWarnings("unused")
204+
public static class SetParameter3Advice {
205+
@Advice.OnMethodExit(suppress = Throwable.class)
206+
public static void onExit(
207+
@Advice.This PreparedStatement statement,
208+
@Advice.Argument(0) int index,
209+
@Advice.Argument(1) Object value,
210+
@Advice.Argument(2) int targetSqlType) {
211+
if (!CAPTURE_QUERY_PARAMETERS) {
212+
return;
213+
}
214+
215+
String str = null;
216+
217+
if (value instanceof Boolean
218+
// Short, Int, Long, Float, Double, BigDecimal
219+
|| value instanceof Number
220+
|| value instanceof String
221+
|| value instanceof Date
222+
|| value instanceof Time
223+
|| value instanceof Timestamp
224+
|| value instanceof URL
225+
|| value instanceof RowId) {
226+
str = value.toString();
227+
}
228+
229+
if (str != null) {
230+
JdbcData.addParameter(statement, Integer.toString(index - 1), str);
231+
}
232+
}
233+
}
234+
203235
@SuppressWarnings("unused")
204236
public static class SetTimeParameter3Advice {
205237
@Advice.OnMethodExit(suppress = Throwable.class)

instrumentation/jdbc/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/jdbc/test/PreparedStatementParametersTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import java.math.BigDecimal;
2929
import java.sql.Connection;
3030
import java.sql.Date;
31-
import java.sql.JDBCType;
31+
import java.sql.Types;
3232
import java.sql.PreparedStatement;
3333
import java.sql.ResultSet;
3434
import java.sql.SQLException;
@@ -353,7 +353,7 @@ void testObjectWithTypePreparedStatementParameter(
353353
spanName,
354354
url,
355355
table,
356-
statement -> statement.setObject(1, "S", JDBCType.CHAR),
356+
statement -> statement.setObject(1, "S", Types.CHAR),
357357
"S");
358358
}
359359

0 commit comments

Comments
 (0)