convert instrument jdbc test from groovy to java (#12132)
Co-authored-by: Jay DeLuca <jaydeluca4@gmail.com>
This commit is contained in:
parent
201f7c7f9d
commit
72b6e2c268
|
@ -1,903 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import com.mchange.v2.c3p0.ComboPooledDataSource
|
||||
import com.zaxxer.hikari.HikariConfig
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import io.opentelemetry.api.trace.SpanKind
|
||||
import io.opentelemetry.instrumentation.jdbc.TestConnection
|
||||
import io.opentelemetry.instrumentation.jdbc.TestDriver
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import io.opentelemetry.javaagent.instrumentation.jdbc.test.ProxyStatementFactory
|
||||
import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes
|
||||
import io.opentelemetry.semconv.incubating.DbIncubatingAttributes
|
||||
import io.opentelemetry.semconv.ServerAttributes
|
||||
import org.apache.derby.jdbc.EmbeddedDataSource
|
||||
import org.apache.derby.jdbc.EmbeddedDriver
|
||||
import org.h2.Driver
|
||||
import org.h2.jdbcx.JdbcDataSource
|
||||
import org.hsqldb.jdbc.JDBCDriver
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Unroll
|
||||
|
||||
import javax.sql.DataSource
|
||||
import java.sql.CallableStatement
|
||||
import java.sql.Connection
|
||||
import java.sql.DatabaseMetaData
|
||||
import java.sql.PreparedStatement
|
||||
import java.sql.ResultSet
|
||||
import java.sql.SQLException
|
||||
import java.sql.Statement
|
||||
|
||||
import static io.opentelemetry.api.trace.SpanKind.CLIENT
|
||||
import static io.opentelemetry.api.trace.SpanKind.INTERNAL
|
||||
|
||||
@Unroll
|
||||
class JdbcInstrumentationTest extends AgentInstrumentationSpecification {
|
||||
|
||||
@Shared
|
||||
def dbName = "jdbcUnitTest"
|
||||
@Shared
|
||||
def dbNameLower = dbName.toLowerCase()
|
||||
|
||||
@Shared
|
||||
private Map<String, String> jdbcUrls = [
|
||||
"h2" : "jdbc:h2:mem:$dbName",
|
||||
"derby" : "jdbc:derby:memory:$dbName",
|
||||
"hsqldb": "jdbc:hsqldb:mem:$dbName",
|
||||
]
|
||||
|
||||
@Shared
|
||||
private Map<String, String> jdbcDriverClassNames = [
|
||||
"h2" : "org.h2.Driver",
|
||||
"derby" : "org.apache.derby.jdbc.EmbeddedDriver",
|
||||
"hsqldb": "org.hsqldb.jdbc.JDBCDriver",
|
||||
]
|
||||
|
||||
@Shared
|
||||
private Map<String, String> jdbcUserNames = [
|
||||
"h2" : null,
|
||||
"derby" : "APP",
|
||||
"hsqldb": "SA",
|
||||
]
|
||||
|
||||
@Shared
|
||||
private Properties connectionProps = {
|
||||
def props = new Properties()
|
||||
// props.put("user", "someUser")
|
||||
// props.put("password", "somePassword")
|
||||
props.put("databaseName", "someDb")
|
||||
props.put("OPEN_NEW", "true") // So H2 doesn't complain about username/password.
|
||||
return props
|
||||
}()
|
||||
|
||||
// JDBC Connection pool name (i.e. HikariCP) -> Map<dbName, Datasource>
|
||||
@Shared
|
||||
private Map<String, Map<String, DataSource>> cpDatasources = new HashMap<>()
|
||||
|
||||
def prepareConnectionPoolDatasources() {
|
||||
String[] connectionPoolNames = [
|
||||
"tomcat", "hikari", "c3p0",
|
||||
]
|
||||
connectionPoolNames.each {
|
||||
cpName ->
|
||||
Map<String, DataSource> dbDSMapping = new HashMap<>()
|
||||
jdbcUrls.each {
|
||||
dbType, jdbcUrl ->
|
||||
dbDSMapping.put(dbType, createDS(cpName, dbType, jdbcUrl))
|
||||
}
|
||||
cpDatasources.put(cpName, dbDSMapping)
|
||||
}
|
||||
}
|
||||
|
||||
def createTomcatDS(String dbType, String jdbcUrl) {
|
||||
DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource()
|
||||
def jdbcUrlToSet = dbType == "derby" ? jdbcUrl + ";create=true" : jdbcUrl
|
||||
ds.setUrl(jdbcUrlToSet)
|
||||
ds.setDriverClassName(jdbcDriverClassNames.get(dbType))
|
||||
String username = jdbcUserNames.get(dbType)
|
||||
if (username != null) {
|
||||
ds.setUsername(username)
|
||||
}
|
||||
ds.setPassword("")
|
||||
ds.setMaxActive(1) // to test proper caching, having > 1 max active connection will be hard to
|
||||
// determine whether the connection is properly cached
|
||||
return ds
|
||||
}
|
||||
|
||||
def createHikariDS(String dbType, String jdbcUrl) {
|
||||
HikariConfig config = new HikariConfig()
|
||||
def jdbcUrlToSet = dbType == "derby" ? jdbcUrl + ";create=true" : jdbcUrl
|
||||
config.setJdbcUrl(jdbcUrlToSet)
|
||||
String username = jdbcUserNames.get(dbType)
|
||||
if (username != null) {
|
||||
config.setUsername(username)
|
||||
}
|
||||
config.setPassword("")
|
||||
config.addDataSourceProperty("cachePrepStmts", "true")
|
||||
config.addDataSourceProperty("prepStmtCacheSize", "250")
|
||||
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048")
|
||||
config.setMaximumPoolSize(1)
|
||||
|
||||
return new HikariDataSource(config)
|
||||
}
|
||||
|
||||
def createC3P0DS(String dbType, String jdbcUrl) {
|
||||
DataSource ds = new ComboPooledDataSource()
|
||||
ds.setDriverClass(jdbcDriverClassNames.get(dbType))
|
||||
def jdbcUrlToSet = dbType == "derby" ? jdbcUrl + ";create=true" : jdbcUrl
|
||||
ds.setJdbcUrl(jdbcUrlToSet)
|
||||
String username = jdbcUserNames.get(dbType)
|
||||
if (username != null) {
|
||||
ds.setUser(username)
|
||||
}
|
||||
ds.setPassword("")
|
||||
ds.setMaxPoolSize(1)
|
||||
return ds
|
||||
}
|
||||
|
||||
def createDS(String connectionPoolName, String dbType, String jdbcUrl) {
|
||||
DataSource ds = null
|
||||
if (connectionPoolName == "tomcat") {
|
||||
ds = createTomcatDS(dbType, jdbcUrl)
|
||||
}
|
||||
if (connectionPoolName == "hikari") {
|
||||
ds = createHikariDS(dbType, jdbcUrl)
|
||||
}
|
||||
if (connectionPoolName == "c3p0") {
|
||||
ds = createC3P0DS(dbType, jdbcUrl)
|
||||
}
|
||||
return ds
|
||||
}
|
||||
|
||||
def setupSpec() {
|
||||
prepareConnectionPoolDatasources()
|
||||
}
|
||||
|
||||
def cleanupSpec() {
|
||||
cpDatasources.values().each {
|
||||
it.values().each {
|
||||
datasource ->
|
||||
if (datasource instanceof Closeable) {
|
||||
datasource.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation") // TODO DbIncubatingAttributes.DB_CONNECTION_STRING deprecation
|
||||
def "basic statement with #connection.getClass().getCanonicalName() on #system generates spans"() {
|
||||
setup:
|
||||
Statement statement = connection.createStatement()
|
||||
ResultSet resultSet = runWithSpan("parent") {
|
||||
return statement.executeQuery(query)
|
||||
}
|
||||
|
||||
expect:
|
||||
resultSet.next()
|
||||
resultSet.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbNameLower
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" sanitizedQuery
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
|
||||
where:
|
||||
system | connection | username | query | sanitizedQuery | spanName | url | table
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), null) | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), null) | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"hsqldb" | new JDBCDriver().connect(jdbcUrls.get("hsqldb"), null) | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT INFORMATION_SCHEMA.SYSTEM_USERS" | "hsqldb:mem:" | "INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), connectionProps) | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), connectionProps) | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"hsqldb" | new JDBCDriver().connect(jdbcUrls.get("hsqldb"), connectionProps) | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT INFORMATION_SCHEMA.SYSTEM_USERS" | "hsqldb:mem:" | "INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
"h2" | cpDatasources.get("tomcat").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("tomcat").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"hsqldb" | cpDatasources.get("tomcat").get("hsqldb").getConnection() | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT INFORMATION_SCHEMA.SYSTEM_USERS" | "hsqldb:mem:" | "INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
"h2" | cpDatasources.get("hikari").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("hikari").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"hsqldb" | cpDatasources.get("hikari").get("hsqldb").getConnection() | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT INFORMATION_SCHEMA.SYSTEM_USERS" | "hsqldb:mem:" | "INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
"h2" | cpDatasources.get("c3p0").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("c3p0").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"hsqldb" | cpDatasources.get("c3p0").get("hsqldb").getConnection() | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS" | "SELECT INFORMATION_SCHEMA.SYSTEM_USERS" | "hsqldb:mem:" | "INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
}
|
||||
|
||||
def "prepared statement execute on #system with #connection.getClass().getCanonicalName() generates a span"() {
|
||||
setup:
|
||||
PreparedStatement statement = connection.prepareStatement(query)
|
||||
ResultSet resultSet = runWithSpan("parent") {
|
||||
assert statement.execute()
|
||||
return statement.resultSet
|
||||
}
|
||||
|
||||
expect:
|
||||
resultSet.next()
|
||||
resultSet.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbNameLower
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" sanitizedQuery
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
|
||||
where:
|
||||
system | connection | username | query | sanitizedQuery | spanName | url | table
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), null) | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), null) | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("tomcat").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("tomcat").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("hikari").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("hikari").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("c3p0").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("c3p0").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
}
|
||||
|
||||
def "prepared statement query on #system with #connection.getClass().getCanonicalName() generates a span"() {
|
||||
setup:
|
||||
PreparedStatement statement = connection.prepareStatement(query)
|
||||
ResultSet resultSet = runWithSpan("parent") {
|
||||
return statement.executeQuery()
|
||||
}
|
||||
|
||||
expect:
|
||||
resultSet.next()
|
||||
resultSet.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbNameLower
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" sanitizedQuery
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
|
||||
where:
|
||||
system | connection | username | query | sanitizedQuery | spanName | url | table
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), null) | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), null) | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("tomcat").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("tomcat").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("hikari").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("hikari").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("c3p0").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("c3p0").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
}
|
||||
|
||||
def "prepared call on #system with #connection.getClass().getCanonicalName() generates a span"() {
|
||||
setup:
|
||||
CallableStatement statement = connection.prepareCall(query)
|
||||
ResultSet resultSet = runWithSpan("parent") {
|
||||
return statement.executeQuery()
|
||||
}
|
||||
|
||||
expect:
|
||||
resultSet.next()
|
||||
resultSet.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbName.toLowerCase()
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" sanitizedQuery
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
|
||||
where:
|
||||
system | connection | username | query | sanitizedQuery | spanName | url | table
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), null) | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), null) | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("tomcat").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("tomcat").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("hikari").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("hikari").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
"h2" | cpDatasources.get("c3p0").get("h2").getConnection() | null | "SELECT 3" | "SELECT ?" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
"derby" | cpDatasources.get("c3p0").get("derby").getConnection() | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
}
|
||||
|
||||
def "statement update on #system with #connection.getClass().getCanonicalName() generates a span"() {
|
||||
setup:
|
||||
Statement statement = connection.createStatement()
|
||||
def sql = connection.nativeSQL(query)
|
||||
|
||||
expect:
|
||||
runWithSpan("parent") {
|
||||
return !statement.execute(sql)
|
||||
}
|
||||
statement.updateCount == 0
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbNameLower
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" query
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "CREATE TABLE"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
|
||||
where:
|
||||
system | connection | username | query | spanName | url | table
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), null) | null | "CREATE TABLE S_H2 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_H2" | "h2:mem:" | "S_H2"
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), null) | "APP" | "CREATE TABLE S_DERBY (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_DERBY" | "derby:memory:" | "S_DERBY"
|
||||
"hsqldb" | new JDBCDriver().connect(jdbcUrls.get("hsqldb"), null) | "SA" | "CREATE TABLE PUBLIC.S_HSQLDB (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE PUBLIC.S_HSQLDB" | "hsqldb:mem:" | "PUBLIC.S_HSQLDB"
|
||||
"h2" | cpDatasources.get("tomcat").get("h2").getConnection() | null | "CREATE TABLE S_H2_TOMCAT (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_H2_TOMCAT" | "h2:mem:" | "S_H2_TOMCAT"
|
||||
"derby" | cpDatasources.get("tomcat").get("derby").getConnection() | "APP" | "CREATE TABLE S_DERBY_TOMCAT (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_DERBY_TOMCAT" | "derby:memory:" | "S_DERBY_TOMCAT"
|
||||
"hsqldb" | cpDatasources.get("tomcat").get("hsqldb").getConnection() | "SA" | "CREATE TABLE PUBLIC.S_HSQLDB_TOMCAT (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE PUBLIC.S_HSQLDB_TOMCAT" | "hsqldb:mem:" | "PUBLIC.S_HSQLDB_TOMCAT"
|
||||
"h2" | cpDatasources.get("hikari").get("h2").getConnection() | null | "CREATE TABLE S_H2_HIKARI (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_H2_HIKARI" | "h2:mem:" | "S_H2_HIKARI"
|
||||
"derby" | cpDatasources.get("hikari").get("derby").getConnection() | "APP" | "CREATE TABLE S_DERBY_HIKARI (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_DERBY_HIKARI" | "derby:memory:" | "S_DERBY_HIKARI"
|
||||
"hsqldb" | cpDatasources.get("hikari").get("hsqldb").getConnection() | "SA" | "CREATE TABLE PUBLIC.S_HSQLDB_HIKARI (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE PUBLIC.S_HSQLDB_HIKARI" | "hsqldb:mem:" | "PUBLIC.S_HSQLDB_HIKARI"
|
||||
"h2" | cpDatasources.get("c3p0").get("h2").getConnection() | null | "CREATE TABLE S_H2_C3P0 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_H2_C3P0" | "h2:mem:" | "S_H2_C3P0"
|
||||
"derby" | cpDatasources.get("c3p0").get("derby").getConnection() | "APP" | "CREATE TABLE S_DERBY_C3P0 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.S_DERBY_C3P0" | "derby:memory:" | "S_DERBY_C3P0"
|
||||
"hsqldb" | cpDatasources.get("c3p0").get("hsqldb").getConnection() | "SA" | "CREATE TABLE PUBLIC.S_HSQLDB_C3P0 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE PUBLIC.S_HSQLDB_C3P0" | "hsqldb:mem:" | "PUBLIC.S_HSQLDB_C3P0"
|
||||
}
|
||||
|
||||
def "prepared statement update on #system with #connection.getClass().getCanonicalName() generates a span"() {
|
||||
setup:
|
||||
def sql = connection.nativeSQL(query)
|
||||
PreparedStatement statement = connection.prepareStatement(sql)
|
||||
|
||||
expect:
|
||||
runWithSpan("parent") {
|
||||
return statement.executeUpdate() == 0
|
||||
}
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbName.toLowerCase()
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" query
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "CREATE TABLE"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
|
||||
where:
|
||||
system | connection | username | query | spanName | url | table
|
||||
"h2" | new Driver().connect(jdbcUrls.get("h2"), null) | null | "CREATE TABLE PS_H2 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_H2" | "h2:mem:" | "PS_H2"
|
||||
"derby" | new EmbeddedDriver().connect(jdbcUrls.get("derby"), null) | "APP" | "CREATE TABLE PS_DERBY (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_DERBY" | "derby:memory:" | "PS_DERBY"
|
||||
"h2" | cpDatasources.get("tomcat").get("h2").getConnection() | null | "CREATE TABLE PS_H2_TOMCAT (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_H2_TOMCAT" | "h2:mem:" | "PS_H2_TOMCAT"
|
||||
"derby" | cpDatasources.get("tomcat").get("derby").getConnection() | "APP" | "CREATE TABLE PS_DERBY_TOMCAT (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_DERBY_TOMCAT" | "derby:memory:" | "PS_DERBY_TOMCAT"
|
||||
"h2" | cpDatasources.get("hikari").get("h2").getConnection() | null | "CREATE TABLE PS_H2_HIKARI (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_H2_HIKARI" | "h2:mem:" | "PS_H2_HIKARI"
|
||||
"derby" | cpDatasources.get("hikari").get("derby").getConnection() | "APP" | "CREATE TABLE PS_DERBY_HIKARI (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_DERBY_HIKARI" | "derby:memory:" | "PS_DERBY_HIKARI"
|
||||
"h2" | cpDatasources.get("c3p0").get("h2").getConnection() | null | "CREATE TABLE PS_H2_C3P0 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_H2_C3P0" | "h2:mem:" | "PS_H2_C3P0"
|
||||
"derby" | cpDatasources.get("c3p0").get("derby").getConnection() | "APP" | "CREATE TABLE PS_DERBY_C3P0 (id INTEGER not NULL, PRIMARY KEY ( id ))" | "CREATE TABLE jdbcunittest.PS_DERBY_C3P0" | "derby:memory:" | "PS_DERBY_C3P0"
|
||||
}
|
||||
|
||||
def "connection constructor throwing then generating correct spans after recovery using #driver connection (prepare statement = #prepareStatement)"() {
|
||||
setup:
|
||||
Connection connection = null
|
||||
|
||||
when:
|
||||
try {
|
||||
connection = new TestConnection(true)
|
||||
connection.url = "jdbc:testdb://localhost"
|
||||
} catch (Exception ignored) {
|
||||
connection = driver.connect(jdbcUrl, null)
|
||||
}
|
||||
|
||||
def (Statement statement, ResultSet rs) = runWithSpan("parent") {
|
||||
if (prepareStatement) {
|
||||
def stmt = connection.prepareStatement(query)
|
||||
return new Tuple(stmt, stmt.executeQuery())
|
||||
}
|
||||
|
||||
def stmt = connection.createStatement()
|
||||
return new Tuple(stmt, stmt.executeQuery(query))
|
||||
}
|
||||
|
||||
then:
|
||||
rs.next()
|
||||
rs.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_NAME" dbNameLower
|
||||
if (username != null) {
|
||||
"$DbIncubatingAttributes.DB_USER" username
|
||||
}
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" url
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" sanitizedQuery
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement?.close()
|
||||
connection?.close()
|
||||
|
||||
where:
|
||||
prepareStatement | system | driver | jdbcUrl | username | query | sanitizedQuery | spanName | url | table
|
||||
true | "h2" | new Driver() | "jdbc:h2:mem:" + dbName | null | "SELECT 3;" | "SELECT ?;" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
true | "derby" | new EmbeddedDriver() | "jdbc:derby:memory:" + dbName + ";create=true" | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
false | "h2" | new Driver() | "jdbc:h2:mem:" + dbName | null | "SELECT 3;" | "SELECT ?;" | "SELECT $dbNameLower" | "h2:mem:" | null
|
||||
false | "derby" | new EmbeddedDriver() | "jdbc:derby:memory:" + dbName + ";create=true" | "APP" | "SELECT 3 FROM SYSIBM.SYSDUMMY1" | "SELECT ? FROM SYSIBM.SYSDUMMY1" | "SELECT SYSIBM.SYSDUMMY1" | "derby:memory:" | "SYSIBM.SYSDUMMY1"
|
||||
}
|
||||
|
||||
def "calling #datasource.class.simpleName getConnection generates a span when under existing trace"() {
|
||||
setup:
|
||||
assert datasource instanceof DataSource
|
||||
init?.call(datasource)
|
||||
|
||||
when:
|
||||
datasource.getConnection().close()
|
||||
|
||||
then:
|
||||
!traces.any { it.any { it.name == "database.connection" } }
|
||||
clearExportedData()
|
||||
|
||||
when:
|
||||
runWithSpan("parent") {
|
||||
datasource.getConnection().close()
|
||||
}
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, recursive ? 3 : 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
|
||||
span(1) {
|
||||
name "${datasource.class.simpleName}.getConnection"
|
||||
kind INTERNAL
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$CodeIncubatingAttributes.CODE_NAMESPACE" datasource.class.name
|
||||
"$CodeIncubatingAttributes.CODE_FUNCTION" "getConnection"
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_USER" { user == null | user == it }
|
||||
"$DbIncubatingAttributes.DB_NAME" "jdbcunittest"
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" connectionString
|
||||
}
|
||||
}
|
||||
if (recursive) {
|
||||
span(2) {
|
||||
name "${datasource.class.simpleName}.getConnection"
|
||||
kind INTERNAL
|
||||
childOf span(1)
|
||||
attributes {
|
||||
"$CodeIncubatingAttributes.CODE_NAMESPACE" datasource.class.name
|
||||
"$CodeIncubatingAttributes.CODE_FUNCTION" "getConnection"
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" system
|
||||
"$DbIncubatingAttributes.DB_USER" { user == null | user == it }
|
||||
"$DbIncubatingAttributes.DB_NAME" "jdbcunittest"
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" connectionString
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
where:
|
||||
datasource | init | system | user | connectionString
|
||||
new JdbcDataSource() | { ds -> ds.setURL(jdbcUrls.get("h2")) } | "h2" | null | "h2:mem:"
|
||||
new EmbeddedDataSource() | { ds -> ds.jdbcurl = jdbcUrls.get("derby") } | "derby" | "APP" | "derby:memory:"
|
||||
cpDatasources.get("hikari").get("h2") | null | "h2" | null | "h2:mem:"
|
||||
cpDatasources.get("hikari").get("derby") | null | "derby" | "APP" | "derby:memory:"
|
||||
cpDatasources.get("c3p0").get("h2") | null | "h2" | null | "h2:mem:"
|
||||
cpDatasources.get("c3p0").get("derby") | null | "derby" | "APP" | "derby:memory:"
|
||||
|
||||
// Tomcat's pool doesn't work because the getConnection method is
|
||||
// implemented in a parent class that doesn't implement DataSource
|
||||
|
||||
recursive = datasource instanceof EmbeddedDataSource
|
||||
}
|
||||
|
||||
def "test getClientInfo exception"() {
|
||||
setup:
|
||||
Connection connection = new TestConnection(false)
|
||||
connection.url = "jdbc:testdb://localhost"
|
||||
|
||||
when:
|
||||
Statement statement = null
|
||||
runWithSpan("parent") {
|
||||
statement = connection.createStatement()
|
||||
return statement.executeQuery(query)
|
||||
}
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name "DB Query"
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" "other_sql"
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" "testing ?"
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" "testdb://localhost"
|
||||
"$ServerAttributes.SERVER_ADDRESS" "localhost"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement?.close()
|
||||
connection?.close()
|
||||
|
||||
where:
|
||||
query = "testing 123"
|
||||
}
|
||||
|
||||
def "should produce proper span name #spanName"() {
|
||||
setup:
|
||||
def driver = new TestDriver()
|
||||
|
||||
when:
|
||||
def connection = driver.connect(url, null)
|
||||
runWithSpan("parent") {
|
||||
def statement = connection.createStatement()
|
||||
return statement.executeQuery(query)
|
||||
}
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name spanName
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" "other_sql"
|
||||
"$DbIncubatingAttributes.DB_NAME" databaseName
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" "testdb://localhost"
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" sanitizedQuery
|
||||
"$DbIncubatingAttributes.DB_OPERATION" operation
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" table
|
||||
"$ServerAttributes.SERVER_ADDRESS" "localhost"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
where:
|
||||
url | query | sanitizedQuery | spanName | databaseName | operation | table
|
||||
"jdbc:testdb://localhost?databaseName=test" | "SELECT * FROM table" | "SELECT * FROM table" | "SELECT test.table" | "test" | "SELECT" | "table"
|
||||
"jdbc:testdb://localhost?databaseName=test" | "SELECT 42" | "SELECT ?" | "SELECT test" | "test" | "SELECT" | null
|
||||
"jdbc:testdb://localhost" | "SELECT * FROM table" | "SELECT * FROM table" | "SELECT table" | null | "SELECT" | "table"
|
||||
"jdbc:testdb://localhost?databaseName=test" | "CREATE TABLE table" | "CREATE TABLE table" | "CREATE TABLE test.table" | "test" | "CREATE TABLE" | "table"
|
||||
"jdbc:testdb://localhost" | "CREATE TABLE table" | "CREATE TABLE table" | "CREATE TABLE table" | null | "CREATE TABLE" | "table"
|
||||
}
|
||||
|
||||
def "#connectionPoolName connections should be cached in case of wrapped connections"() {
|
||||
setup:
|
||||
String dbType = "hsqldb"
|
||||
DataSource ds = createDS(connectionPoolName, dbType, jdbcUrls.get(dbType))
|
||||
String query = "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
int numQueries = 5
|
||||
Connection connection = null
|
||||
int[] res = new int[numQueries]
|
||||
|
||||
when:
|
||||
for (int i = 0; i < numQueries; ++i) {
|
||||
try {
|
||||
connection = ds.getConnection()
|
||||
def statement = connection.prepareStatement(query)
|
||||
def rs = statement.executeQuery()
|
||||
if (rs.next()) {
|
||||
res[i] = rs.getInt(1)
|
||||
} else {
|
||||
res[i] = 0
|
||||
}
|
||||
} finally {
|
||||
connection.close()
|
||||
}
|
||||
}
|
||||
|
||||
then:
|
||||
for (int i = 0; i < numQueries; ++i) {
|
||||
res[i] == 3
|
||||
}
|
||||
assertTraces(numQueries) {
|
||||
for (int i = 0; i < numQueries; ++i) {
|
||||
trace(i, 1) {
|
||||
span(0) {
|
||||
name "SELECT INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" "hsqldb"
|
||||
"$DbIncubatingAttributes.DB_NAME" dbNameLower
|
||||
"$DbIncubatingAttributes.DB_USER" "SA"
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" "hsqldb:mem:"
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" "SELECT ? FROM INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" "INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if (ds instanceof Closeable) {
|
||||
ds.close()
|
||||
}
|
||||
|
||||
where:
|
||||
connectionPoolName | _
|
||||
"hikari" | _
|
||||
"tomcat" | _
|
||||
"c3p0" | _
|
||||
}
|
||||
|
||||
// regression test for https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2644
|
||||
def "should handle recursive Statements inside Connection.getMetaData(): #desc"() {
|
||||
given:
|
||||
def connection = new DbCallingConnection(usePreparedStatementInConnection)
|
||||
connection.url = "jdbc:testdb://localhost"
|
||||
|
||||
when:
|
||||
runWithSpan("parent") {
|
||||
executeQueryFunction(connection, "SELECT * FROM table")
|
||||
}
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name "SELECT table"
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
attributes {
|
||||
"$DbIncubatingAttributes.DB_SYSTEM" "other_sql"
|
||||
"$DbIncubatingAttributes.DB_CONNECTION_STRING" "testdb://localhost"
|
||||
"$DbIncubatingAttributes.DB_STATEMENT" "SELECT * FROM table"
|
||||
"$DbIncubatingAttributes.DB_OPERATION" "SELECT"
|
||||
"$DbIncubatingAttributes.DB_SQL_TABLE" "table"
|
||||
"$ServerAttributes.SERVER_ADDRESS" "localhost"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
where:
|
||||
desc | usePreparedStatementInConnection | executeQueryFunction
|
||||
"getMetaData() uses Statement, test Statement" | false | { con, query -> con.createStatement().executeQuery(query) }
|
||||
"getMetaData() uses PreparedStatement, test Statement" | true | { con, query -> con.createStatement().executeQuery(query) }
|
||||
"getMetaData() uses Statement, test PreparedStatement" | false | { con, query -> con.prepareStatement(query).executeQuery() }
|
||||
"getMetaData() uses PreparedStatement, test PreparedStatement" | true | { con, query -> con.prepareStatement(query).executeQuery() }
|
||||
}
|
||||
|
||||
class DbCallingConnection extends TestConnection {
|
||||
final boolean usePreparedStatement
|
||||
|
||||
DbCallingConnection(boolean usePreparedStatement) {
|
||||
super(false)
|
||||
this.usePreparedStatement = usePreparedStatement
|
||||
}
|
||||
|
||||
@Override
|
||||
DatabaseMetaData getMetaData() throws SQLException {
|
||||
// simulate retrieving DB metadata from the DB itself
|
||||
if (usePreparedStatement) {
|
||||
prepareStatement("SELECT * from DB_METADATA").executeQuery()
|
||||
} else {
|
||||
createStatement().executeQuery("SELECT * from DB_METADATA")
|
||||
}
|
||||
return super.getMetaData()
|
||||
}
|
||||
}
|
||||
|
||||
// regression test for https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/6015
|
||||
def "test proxy statement"() {
|
||||
def connection = new Driver().connect(jdbcUrls.get("h2"), null)
|
||||
Statement statement = connection.createStatement()
|
||||
Statement proxyStatement = ProxyStatementFactory.proxyStatement(statement)
|
||||
ResultSet resultSet = runWithSpan("parent") {
|
||||
return proxyStatement.executeQuery("SELECT 3")
|
||||
}
|
||||
|
||||
expect:
|
||||
resultSet.next()
|
||||
resultSet.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name "SELECT $dbNameLower"
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
}
|
||||
|
||||
// regression test for https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/9359
|
||||
def "test proxy prepared statement"() {
|
||||
def connection = new Driver().connect(jdbcUrls.get("h2"), null)
|
||||
PreparedStatement statement = connection.prepareStatement("SELECT 3")
|
||||
PreparedStatement proxyStatement = ProxyStatementFactory.proxyPreparedStatement(statement)
|
||||
ResultSet resultSet = runWithSpan("parent") {
|
||||
return proxyStatement.executeQuery()
|
||||
}
|
||||
|
||||
expect:
|
||||
resultSet.next()
|
||||
resultSet.getInt(1) == 3
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
name "parent"
|
||||
kind SpanKind.INTERNAL
|
||||
hasNoParent()
|
||||
}
|
||||
span(1) {
|
||||
name "SELECT $dbNameLower"
|
||||
kind CLIENT
|
||||
childOf span(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
statement.close()
|
||||
connection.close()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.jdbc.test;
|
||||
|
||||
import io.opentelemetry.instrumentation.jdbc.TestConnection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
class DbCallingConnection extends TestConnection {
|
||||
final boolean usePreparedStatement;
|
||||
|
||||
DbCallingConnection(boolean usePreparedStatement) {
|
||||
super(false);
|
||||
this.usePreparedStatement = usePreparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DatabaseMetaData getMetaData() throws SQLException {
|
||||
// simulate retrieving DB metadata from the DB itself
|
||||
if (usePreparedStatement) {
|
||||
prepareStatement("SELECT * from DB_METADATA").executeQuery();
|
||||
} else {
|
||||
createStatement().executeQuery("SELECT * from DB_METADATA");
|
||||
}
|
||||
return super.getMetaData();
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
|
||||
import java.sql.Connection
|
||||
import java.sql.Driver
|
||||
import java.sql.DriverPropertyInfo
|
||||
import java.sql.SQLException
|
||||
import java.sql.SQLFeatureNotSupportedException
|
||||
import java.util.logging.Logger
|
||||
|
||||
class AnotherTestDriver implements Driver {
|
||||
@Override
|
||||
Connection connect(String url, Properties info) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean acceptsURL(String url) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
|
||||
return new DriverPropertyInfo[0]
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMajorVersion() {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinorVersion() {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean jdbcCompliant() {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
return null
|
||||
}
|
||||
}
|
|
@ -1,587 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
|
||||
import java.sql.Array
|
||||
import java.sql.Blob
|
||||
import java.sql.CallableStatement
|
||||
import java.sql.Clob
|
||||
import java.sql.Date
|
||||
import java.sql.NClob
|
||||
import java.sql.Ref
|
||||
import java.sql.RowId
|
||||
import java.sql.SQLException
|
||||
import java.sql.SQLXML
|
||||
import java.sql.Time
|
||||
import java.sql.Timestamp
|
||||
|
||||
class TestCallableStatement extends TestPreparedStatement implements CallableStatement {
|
||||
@Override
|
||||
void registerOutParameter(int parameterIndex, int sqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerOutParameter(int parameterIndex, int sqlType, int scale) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean wasNull() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
String getString(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean getBoolean(int parameterIndex) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
byte getByte(int parameterIndex) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
short getShort(int parameterIndex) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getInt(int parameterIndex) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
long getLong(int parameterIndex) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
float getFloat(int parameterIndex) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
double getDouble(int parameterIndex) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
BigDecimal getBigDecimal(int parameterIndex, int scale) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
byte[] getBytes(int parameterIndex) throws SQLException {
|
||||
return new byte[0]
|
||||
}
|
||||
|
||||
@Override
|
||||
Date getDate(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Time getTime(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Timestamp getTimestamp(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Object getObject(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
BigDecimal getBigDecimal(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Object getObject(int parameterIndex, Map<String, Class<?>> map) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Ref getRef(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Blob getBlob(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Clob getClob(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Array getArray(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Date getDate(int parameterIndex, Calendar cal) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Time getTime(int parameterIndex, Calendar cal) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Timestamp getTimestamp(int parameterIndex, Calendar cal) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerOutParameter(int parameterIndex, int sqlType, String typeName) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerOutParameter(String parameterName, int sqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerOutParameter(String parameterName, int sqlType, int scale) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void registerOutParameter(String parameterName, int sqlType, String typeName) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
URL getURL(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setURL(String parameterName, URL val) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNull(String parameterName, int sqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBoolean(String parameterName, boolean x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setByte(String parameterName, byte x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setShort(String parameterName, short x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setInt(String parameterName, int x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setLong(String parameterName, long x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setFloat(String parameterName, float x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setDouble(String parameterName, double x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBigDecimal(String parameterName, BigDecimal x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setString(String parameterName, String x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBytes(String parameterName, byte[] x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setDate(String parameterName, Date x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTime(String parameterName, Time x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTimestamp(String parameterName, Timestamp x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAsciiStream(String parameterName, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBinaryStream(String parameterName, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setObject(String parameterName, Object x, int targetSqlType, int scale) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setObject(String parameterName, Object x, int targetSqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setObject(String parameterName, Object x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCharacterStream(String parameterName, Reader reader, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setDate(String parameterName, Date x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTime(String parameterName, Time x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTimestamp(String parameterName, Timestamp x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNull(String parameterName, int sqlType, String typeName) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
String getString(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean getBoolean(String parameterName) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
byte getByte(String parameterName) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
short getShort(String parameterName) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getInt(String parameterName) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
long getLong(String parameterName) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
float getFloat(String parameterName) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
double getDouble(String parameterName) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
byte[] getBytes(String parameterName) throws SQLException {
|
||||
return new byte[0]
|
||||
}
|
||||
|
||||
@Override
|
||||
Date getDate(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Time getTime(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Timestamp getTimestamp(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Object getObject(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
BigDecimal getBigDecimal(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Object getObject(String parameterName, Map<String, Class<?>> map) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Ref getRef(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Blob getBlob(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Clob getClob(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Array getArray(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Date getDate(String parameterName, Calendar cal) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Time getTime(String parameterName, Calendar cal) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Timestamp getTimestamp(String parameterName, Calendar cal) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
URL getURL(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
RowId getRowId(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
RowId getRowId(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setRowId(String parameterName, RowId x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNString(String parameterName, String value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNCharacterStream(String parameterName, Reader value, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNClob(String parameterName, NClob value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClob(String parameterName, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBlob(String parameterName, InputStream inputStream, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNClob(String parameterName, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
NClob getNClob(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
NClob getNClob(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setSQLXML(String parameterName, SQLXML xmlObject) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
SQLXML getSQLXML(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
SQLXML getSQLXML(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getNString(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getNString(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Reader getNCharacterStream(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Reader getNCharacterStream(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Reader getCharacterStream(int parameterIndex) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Reader getCharacterStream(String parameterName) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBlob(String parameterName, Blob x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClob(String parameterName, Clob x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAsciiStream(String parameterName, InputStream x, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBinaryStream(String parameterName, InputStream x, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCharacterStream(String parameterName, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAsciiStream(String parameterName, InputStream x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBinaryStream(String parameterName, InputStream x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCharacterStream(String parameterName, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNCharacterStream(String parameterName, Reader value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClob(String parameterName, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBlob(String parameterName, InputStream inputStream) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNClob(String parameterName, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
def <T> T getObject(int parameterIndex, Class<T> type) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
def <T> T getObject(String parameterName, Class<T> type) throws SQLException {
|
||||
return null
|
||||
}
|
||||
}
|
|
@ -1,317 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
import java.sql.Array
|
||||
import java.sql.Blob
|
||||
import java.sql.CallableStatement
|
||||
import java.sql.Clob
|
||||
import java.sql.Connection
|
||||
import java.sql.DatabaseMetaData
|
||||
import java.sql.NClob
|
||||
import java.sql.PreparedStatement
|
||||
import java.sql.SQLClientInfoException
|
||||
import java.sql.SQLException
|
||||
import java.sql.SQLWarning
|
||||
import java.sql.SQLXML
|
||||
import java.sql.Savepoint
|
||||
import java.sql.Statement
|
||||
import java.sql.Struct
|
||||
import java.util.concurrent.Executor
|
||||
|
||||
/**
|
||||
* A JDBC connection class that optionally throws an exception in the constructor, used to test
|
||||
*/
|
||||
class TestConnection implements Connection {
|
||||
private String url
|
||||
|
||||
TestConnection() {
|
||||
this(false)
|
||||
}
|
||||
|
||||
TestConnection(boolean throwException) {
|
||||
if (throwException) {
|
||||
throw new IllegalStateException("connection exception")
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
Statement createStatement() throws SQLException {
|
||||
return new TestStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
|
||||
return new TestStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
|
||||
return new TestStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
PreparedStatement prepareStatement(String sql) throws SQLException {
|
||||
return new TestPreparedStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
|
||||
return new TestPreparedStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
|
||||
return new TestPreparedStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return new TestPreparedStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
|
||||
return new TestPreparedStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
|
||||
return new TestPreparedStatement(this)
|
||||
}
|
||||
|
||||
@Override
|
||||
CallableStatement prepareCall(String sql) throws SQLException {
|
||||
return new TestCallableStatement()
|
||||
}
|
||||
|
||||
@Override
|
||||
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
|
||||
return new TestCallableStatement()
|
||||
}
|
||||
|
||||
@Override
|
||||
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
|
||||
return new TestCallableStatement()
|
||||
}
|
||||
|
||||
@Override
|
||||
String nativeSQL(String sql) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAutoCommit(boolean autoCommit) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean getAutoCommit() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
void commit() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void rollback() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void close() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isClosed() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
DatabaseMetaData getMetaData() throws SQLException {
|
||||
if (url) {
|
||||
return new TestDatabaseMetaData(url)
|
||||
}
|
||||
return new TestDatabaseMetaData()
|
||||
}
|
||||
|
||||
@Override
|
||||
void setReadOnly(boolean readOnly) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isReadOnly() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCatalog(String catalog) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
String getCatalog() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTransactionIsolation(int level) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTransactionIsolation() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
SQLWarning getWarnings() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void clearWarnings() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
Map<String, Class<?>> getTypeMap() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTypeMap(Map<String, Class<?>> map) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setHoldability(int holdability) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getHoldability() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
Savepoint setSavepoint() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Savepoint setSavepoint(String name) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void rollback(Savepoint savepoint) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void releaseSavepoint(Savepoint savepoint) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
Clob createClob() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Blob createBlob() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
NClob createNClob() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
SQLXML createSQLXML() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isValid(int timeout) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClientInfo(String name, String value) throws SQLClientInfoException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClientInfo(Properties properties) throws SQLClientInfoException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
String getClientInfo(String name) throws SQLException {
|
||||
throw new UnsupportedOperationException("Test 123")
|
||||
}
|
||||
|
||||
@Override
|
||||
Properties getClientInfo() throws SQLException {
|
||||
throw new Throwable("Test 123")
|
||||
}
|
||||
|
||||
@Override
|
||||
Array createArrayOf(String typeName, Object[] elements) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Struct createStruct(String typeName, Object[] attributes) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setSchema(String schema) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
String getSchema() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void abort(Executor executor) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getNetworkTimeout() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
def <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
void setUrl(String url) {
|
||||
this.url = url
|
||||
}
|
||||
}
|
|
@ -1,904 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
import java.sql.Connection
|
||||
import java.sql.DatabaseMetaData
|
||||
import java.sql.ResultSet
|
||||
import java.sql.RowIdLifetime
|
||||
import java.sql.SQLException
|
||||
|
||||
class TestDatabaseMetaData implements DatabaseMetaData {
|
||||
final String url
|
||||
|
||||
TestDatabaseMetaData() {
|
||||
this("jdbc:postgresql://127.0.0.1:5432/dbname")
|
||||
}
|
||||
|
||||
TestDatabaseMetaData(String url) {
|
||||
this.url = url
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean allProceduresAreCallable() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean allTablesAreSelectable() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
String getURL() throws SQLException {
|
||||
return url
|
||||
}
|
||||
|
||||
@Override
|
||||
String getUserName() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isReadOnly() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean nullsAreSortedHigh() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean nullsAreSortedLow() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean nullsAreSortedAtStart() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean nullsAreSortedAtEnd() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
String getDatabaseProductName() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getDatabaseProductVersion() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getDriverName() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getDriverVersion() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
int getDriverMajorVersion() {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getDriverMinorVersion() {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean usesLocalFiles() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean usesLocalFilePerTable() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsMixedCaseIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean storesUpperCaseIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean storesLowerCaseIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean storesMixedCaseIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
String getIdentifierQuoteString() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getSQLKeywords() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getNumericFunctions() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getStringFunctions() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getSystemFunctions() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getTimeDateFunctions() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getSearchStringEscape() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getExtraNameCharacters() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsAlterTableWithAddColumn() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsAlterTableWithDropColumn() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsColumnAliasing() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean nullPlusNonNullIsNull() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsConvert() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsConvert(int fromType, int toType) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsTableCorrelationNames() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsDifferentTableCorrelationNames() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsExpressionsInOrderBy() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsOrderByUnrelated() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsGroupBy() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsGroupByUnrelated() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsGroupByBeyondSelect() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsLikeEscapeClause() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsMultipleResultSets() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsMultipleTransactions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsNonNullableColumns() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsMinimumSQLGrammar() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCoreSQLGrammar() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsExtendedSQLGrammar() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsANSI92EntryLevelSQL() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsANSI92IntermediateSQL() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsANSI92FullSQL() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsIntegrityEnhancementFacility() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsOuterJoins() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsFullOuterJoins() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsLimitedOuterJoins() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
String getSchemaTerm() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getProcedureTerm() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
String getCatalogTerm() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isCatalogAtStart() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
String getCatalogSeparator() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSchemasInDataManipulation() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSchemasInProcedureCalls() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSchemasInTableDefinitions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSchemasInIndexDefinitions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCatalogsInDataManipulation() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCatalogsInProcedureCalls() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCatalogsInTableDefinitions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCatalogsInIndexDefinitions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsPositionedDelete() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsPositionedUpdate() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSelectForUpdate() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsStoredProcedures() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSubqueriesInComparisons() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSubqueriesInExists() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSubqueriesInIns() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSubqueriesInQuantifieds() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsCorrelatedSubqueries() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsUnion() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsUnionAll() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsOpenCursorsAcrossCommit() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsOpenCursorsAcrossRollback() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsOpenStatementsAcrossCommit() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsOpenStatementsAcrossRollback() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxBinaryLiteralLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxCharLiteralLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxColumnNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxColumnsInGroupBy() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxColumnsInIndex() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxColumnsInOrderBy() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxColumnsInSelect() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxColumnsInTable() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxConnections() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxCursorNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxIndexLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxSchemaNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxProcedureNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxCatalogNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxRowSize() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxStatementLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxStatements() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxTableNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxTablesInSelect() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxUserNameLength() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getDefaultTransactionIsolation() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsTransactions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsTransactionIsolationLevel(int level) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsDataManipulationTransactionsOnly() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean dataDefinitionCausesTransactionCommit() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean dataDefinitionIgnoredInTransactions() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getSchemas() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getCatalogs() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getTableTypes() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getVersionColumns(String catalog, String schema, String table) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getTypeInfo() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsResultSetType(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean ownUpdatesAreVisible(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean ownDeletesAreVisible(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean ownInsertsAreVisible(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean othersUpdatesAreVisible(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean othersDeletesAreVisible(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean othersInsertsAreVisible(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean updatesAreDetected(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean deletesAreDetected(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean insertsAreDetected(int type) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsBatchUpdates() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
Connection getConnection() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsSavepoints() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsNamedParameters() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsMultipleOpenResults() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsGetGeneratedKeys() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsResultSetHoldability(int holdability) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
int getResultSetHoldability() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getDatabaseMajorVersion() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getDatabaseMinorVersion() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getJDBCMajorVersion() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getJDBCMinorVersion() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getSQLStateType() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean locatorsUpdateCopy() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsStatementPooling() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
RowIdLifetime getRowIdLifetime() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean autoCommitFailureClosesAllResultSets() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getClientInfoProperties() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getPseudoColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean generatedKeyAlwaysReturned() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
def <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false
|
||||
}
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
|
||||
import java.sql.Connection
|
||||
import java.sql.Driver
|
||||
import java.sql.DriverPropertyInfo
|
||||
import java.sql.SQLException
|
||||
import java.sql.SQLFeatureNotSupportedException
|
||||
import java.util.logging.Logger
|
||||
|
||||
class TestDriver implements Driver {
|
||||
@Override
|
||||
Connection connect(String url, Properties info) throws SQLException {
|
||||
return new TestConnection()
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean acceptsURL(String url) throws SQLException {
|
||||
return url?.startsWith("jdbc:test:")
|
||||
}
|
||||
|
||||
@Override
|
||||
DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
|
||||
return [new DriverPropertyInfo("test", "test")]
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMajorVersion() {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinorVersion() {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean jdbcCompliant() {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
return null
|
||||
}
|
||||
}
|
|
@ -1,309 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
import java.sql.Array
|
||||
import java.sql.Blob
|
||||
import java.sql.Clob
|
||||
import java.sql.Connection
|
||||
import java.sql.Date
|
||||
import java.sql.NClob
|
||||
import java.sql.ParameterMetaData
|
||||
import java.sql.PreparedStatement
|
||||
import java.sql.Ref
|
||||
import java.sql.ResultSet
|
||||
import java.sql.ResultSetMetaData
|
||||
import java.sql.RowId
|
||||
import java.sql.SQLException
|
||||
import java.sql.SQLXML
|
||||
import java.sql.Time
|
||||
import java.sql.Timestamp
|
||||
|
||||
class TestPreparedStatement extends TestStatement implements PreparedStatement {
|
||||
|
||||
TestPreparedStatement() {
|
||||
super()
|
||||
}
|
||||
|
||||
TestPreparedStatement(Connection connection) {
|
||||
super(connection)
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean execute() throws SQLException {
|
||||
return true
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet executeQuery() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
int executeUpdate() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNull(int parameterIndex, int sqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBoolean(int parameterIndex, boolean x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setByte(int parameterIndex, byte x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setShort(int parameterIndex, short x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setInt(int parameterIndex, int x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setLong(int parameterIndex, long x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setFloat(int parameterIndex, float x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setDouble(int parameterIndex, double x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setString(int parameterIndex, String x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBytes(int parameterIndex, byte[] x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setDate(int parameterIndex, Date x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTime(int parameterIndex, Time x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTimestamp(int parameterIndex, Timestamp x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void clearParameters() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setObject(int parameterIndex, Object x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void addBatch() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setRef(int parameterIndex, Ref x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBlob(int parameterIndex, Blob x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClob(int parameterIndex, Clob x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setArray(int parameterIndex, Array x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSetMetaData getMetaData() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setURL(int parameterIndex, URL x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
ParameterMetaData getParameterMetaData() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void setRowId(int parameterIndex, RowId x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNString(int parameterIndex, String value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNClob(int parameterIndex, NClob value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClob(int parameterIndex, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNClob(int parameterIndex, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setAsciiStream(int parameterIndex, InputStream x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBinaryStream(int parameterIndex, InputStream x) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCharacterStream(int parameterIndex, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNCharacterStream(int parameterIndex, Reader value) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setClob(int parameterIndex, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setBlob(int parameterIndex, InputStream inputStream) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setNClob(int parameterIndex, Reader reader) throws SQLException {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,244 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc
|
||||
|
||||
import java.sql.Connection
|
||||
import java.sql.ResultSet
|
||||
import java.sql.SQLException
|
||||
import java.sql.SQLWarning
|
||||
import java.sql.Statement
|
||||
|
||||
class TestStatement implements Statement {
|
||||
final Connection connection
|
||||
|
||||
TestStatement() {
|
||||
this.connection = null
|
||||
}
|
||||
|
||||
TestStatement(Connection connection) {
|
||||
this.connection = connection
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet executeQuery(String sql) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
int executeUpdate(String sql) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void close() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxFieldSize() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void setMaxFieldSize(int max) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxRows() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void setMaxRows(int max) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setEscapeProcessing(boolean enable) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getQueryTimeout() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void setQueryTimeout(int seconds) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void cancel() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
SQLWarning getWarnings() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
void clearWarnings() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void setCursorName(String name) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean execute(String sql) throws SQLException {
|
||||
return true
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getResultSet() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
int getUpdateCount() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean getMoreResults() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
void setFetchDirection(int direction) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getFetchDirection() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void setFetchSize(int rows) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int getFetchSize() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getResultSetConcurrency() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int getResultSetType() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
void addBatch(String sql) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
void clearBatch() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
int[] executeBatch() throws SQLException {
|
||||
return new int[0]
|
||||
}
|
||||
|
||||
@Override
|
||||
Connection getConnection() throws SQLException {
|
||||
return connection
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean getMoreResults(int current) throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
ResultSet getGeneratedKeys() throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int executeUpdate(String sql, int[] columnIndexes) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
int executeUpdate(String sql, String[] columnNames) throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean execute(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return true
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean execute(String sql, int[] columnIndexes) throws SQLException {
|
||||
return true
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean execute(String sql, String[] columnNames) throws SQLException {
|
||||
return true
|
||||
}
|
||||
|
||||
@Override
|
||||
int getResultSetHoldability() throws SQLException {
|
||||
return 0
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isClosed() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
void setPoolable(boolean poolable) throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPoolable() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
void closeOnCompletion() throws SQLException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isCloseOnCompletion() throws SQLException {
|
||||
return false
|
||||
}
|
||||
|
||||
@Override
|
||||
def <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.Driver;
|
||||
import java.sql.DriverPropertyInfo;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLFeatureNotSupportedException;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
class AnotherTestDriver implements Driver {
|
||||
@Override
|
||||
public Connection connect(String url, Properties info) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptsURL(String url) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
|
||||
return new DriverPropertyInfo[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMajorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMinorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean jdbcCompliant() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,503 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.Reader;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
import java.sql.Array;
|
||||
import java.sql.Blob;
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.Clob;
|
||||
import java.sql.Date;
|
||||
import java.sql.NClob;
|
||||
import java.sql.Ref;
|
||||
import java.sql.RowId;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLXML;
|
||||
import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Calendar;
|
||||
import java.util.Map;
|
||||
|
||||
class TestCallableStatement extends TestPreparedStatement implements CallableStatement {
|
||||
@Override
|
||||
public Array getArray(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Array getArray(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public BigDecimal getBigDecimal(int parameterIndex, int scale) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getBigDecimal(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getBigDecimal(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Blob getBlob(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Blob getBlob(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getBoolean(int parameterIndex) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getBoolean(String parameterName) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getByte(int parameterIndex) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getByte(String parameterName) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getBytes(int parameterIndex) throws SQLException {
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getBytes(String parameterName) throws SQLException {
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getCharacterStream(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getCharacterStream(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Clob getClob(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Clob getClob(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getDate(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getDate(int parameterIndex, Calendar cal) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getDate(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getDate(String parameterName, Calendar cal) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDouble(int parameterIndex) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDouble(String parameterName) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFloat(int parameterIndex) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFloat(String parameterName) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(int parameterIndex) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(String parameterName) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLong(int parameterIndex) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLong(String parameterName) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getNCharacterStream(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Reader getNCharacterStream(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NClob getNClob(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NClob getNClob(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNString(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNString(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getObject(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getObject(int parameterIndex, Map<String, Class<?>> map) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getObject(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getObject(String parameterName, Map<String, Class<?>> map) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getObject(int parameterIndex, Class<T> type) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getObject(String parameterName, Class<T> type) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ref getRef(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ref getRef(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RowId getRowId(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RowId getRowId(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLXML getSQLXML(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLXML getSQLXML(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public short getShort(int parameterIndex) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public short getShort(String parameterName) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Time getTime(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Time getTime(int parameterIndex, Calendar cal) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Time getTime(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Time getTime(String parameterName, Calendar cal) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timestamp getTimestamp(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timestamp getTimestamp(int parameterIndex, Calendar cal) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timestamp getTimestamp(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timestamp getTimestamp(String parameterName, Calendar cal) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getURL(int parameterIndex) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getURL(String parameterName) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerOutParameter(int parameterIndex, int sqlType) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void registerOutParameter(int parameterIndex, int sqlType, int scale)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void registerOutParameter(int parameterIndex, int sqlType, String typeName)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void registerOutParameter(String parameterName, int sqlType) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void registerOutParameter(String parameterName, int sqlType, int scale)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void registerOutParameter(String parameterName, int sqlType, String typeName)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(String parameterName, InputStream x, int length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(String parameterName, InputStream x, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(String parameterName, InputStream x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBigDecimal(String parameterName, BigDecimal x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(String parameterName, InputStream x, int length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(String parameterName, InputStream x, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(String parameterName, InputStream x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBlob(String parameterName, InputStream inputStream, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBlob(String parameterName, Blob x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBlob(String parameterName, InputStream inputStream) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBoolean(String parameterName, boolean x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setByte(String parameterName, byte x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBytes(String parameterName, byte[] x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(String parameterName, Reader reader, int length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(String parameterName, Reader reader, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(String parameterName, Reader reader) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClob(String parameterName, Reader reader, long length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClob(String parameterName, Clob x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClob(String parameterName, Reader reader) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setDate(String parameterName, Date x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setDate(String parameterName, Date x, Calendar cal) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setDouble(String parameterName, double x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setFloat(String parameterName, float x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setInt(String parameterName, int x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setLong(String parameterName, long x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNCharacterStream(String parameterName, Reader value, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNCharacterStream(String parameterName, Reader value) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNClob(String parameterName, NClob value) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNClob(String parameterName, Reader reader, long length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNClob(String parameterName, Reader reader) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNString(String parameterName, String value) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNull(String parameterName, int sqlType) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNull(String parameterName, int sqlType, String typeName) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setObject(String parameterName, Object x, int targetSqlType, int scale)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setObject(String parameterName, Object x, int targetSqlType) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setObject(String parameterName, Object x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setRowId(String parameterName, RowId x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setSQLXML(String parameterName, SQLXML xmlObject) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setShort(String parameterName, short x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setString(String parameterName, String x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTime(String parameterName, Time x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTime(String parameterName, Time x, Calendar cal) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(String parameterName, Timestamp x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(String parameterName, Timestamp x, Calendar cal) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setURL(String parameterName, URL val) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public boolean wasNull() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,292 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.sql.Array;
|
||||
import java.sql.Blob;
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.Clob;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.NClob;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLClientInfoException;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLWarning;
|
||||
import java.sql.SQLXML;
|
||||
import java.sql.Savepoint;
|
||||
import java.sql.Statement;
|
||||
import java.sql.Struct;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/** A JDBC connection class that optionally throws an exception in the constructor, used to test */
|
||||
public class TestConnection implements Connection {
|
||||
private String url;
|
||||
|
||||
public TestConnection() {
|
||||
this(false);
|
||||
}
|
||||
|
||||
public TestConnection(boolean throwException) {
|
||||
if (throwException) {
|
||||
throw new IllegalStateException("connection exception");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void abort(Executor executor) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void clearWarnings() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void close() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void commit() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Blob createBlob() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Clob createClob() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NClob createNClob() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLXML createSQLXML() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement createStatement() throws SQLException {
|
||||
return new TestStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement createStatement(int resultSetType, int resultSetConcurrency)
|
||||
throws SQLException {
|
||||
return new TestStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Statement createStatement(
|
||||
int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
|
||||
return new TestStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getAutoCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCatalog() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getClientInfo(String name) throws SQLException {
|
||||
throw new UnsupportedOperationException("Test 123");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Properties getClientInfo() throws SQLException {
|
||||
throw new UnsupportedOperationException("Test 123");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHoldability() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DatabaseMetaData getMetaData() throws SQLException {
|
||||
if (url != null) {
|
||||
return new TestDatabaseMetaData(url);
|
||||
}
|
||||
return new TestDatabaseMetaData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNetworkTimeout() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSchema() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTransactionIsolation() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Class<?>> getTypeMap() throws SQLException {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLWarning getWarnings() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnly() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid(int timeout) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String nativeSQL(String sql) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement prepareCall(String sql) throws SQLException {
|
||||
return new TestCallableStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
|
||||
throws SQLException {
|
||||
return new TestCallableStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CallableStatement prepareCall(
|
||||
String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
|
||||
throws SQLException {
|
||||
return new TestCallableStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql) throws SQLException {
|
||||
return new TestPreparedStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
|
||||
throws SQLException {
|
||||
return new TestPreparedStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(
|
||||
String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
|
||||
throws SQLException {
|
||||
return new TestPreparedStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return new TestPreparedStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
|
||||
return new TestPreparedStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
|
||||
return new TestPreparedStatement(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSavepoint(Savepoint savepoint) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void rollback(Savepoint savepoint) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void rollback() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAutoCommit(boolean autoCommit) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCatalog(String catalog) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClientInfo(Properties properties) throws SQLClientInfoException {}
|
||||
|
||||
@Override
|
||||
public void setClientInfo(String name, String value) throws SQLClientInfoException {}
|
||||
|
||||
@Override
|
||||
public void setHoldability(int holdability) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setReadOnly(boolean readOnly) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public Savepoint setSavepoint() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Savepoint setSavepoint(String name) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSchema(String schema) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTransactionIsolation(int level) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTypeMap(Map<String, Class<?>> map) throws SQLException {}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,938 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.RowIdLifetime;
|
||||
import java.sql.SQLException;
|
||||
|
||||
class TestDatabaseMetaData implements DatabaseMetaData {
|
||||
final String url;
|
||||
|
||||
TestDatabaseMetaData() {
|
||||
this("jdbc:postgresql://127.0.0.1:5432/dbname");
|
||||
}
|
||||
|
||||
TestDatabaseMetaData(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allProceduresAreCallable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allTablesAreSelectable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean autoCommitFailureClosesAllResultSets() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dataDefinitionCausesTransactionCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean dataDefinitionIgnoredInTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deletesAreDetected(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesMaxRowSizeIncludeBlobs() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generatedKeyAlwaysReturned() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getAttributes(
|
||||
String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getBestRowIdentifier(
|
||||
String catalog, String schema, String table, int scope, boolean nullable)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCatalogSeparator() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCatalogTerm() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getCatalogs() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getClientInfoProperties() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getColumnPrivileges(
|
||||
String catalog, String schema, String table, String columnNamePattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getColumns(
|
||||
String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getCrossReference(
|
||||
String parentCatalog,
|
||||
String parentSchema,
|
||||
String parentTable,
|
||||
String foreignCatalog,
|
||||
String foreignSchema,
|
||||
String foreignTable)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDatabaseMajorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDatabaseMinorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatabaseProductName() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDatabaseProductVersion() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDefaultTransactionIsolation() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDriverMajorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDriverMinorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDriverName() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDriverVersion() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getExportedKeys(String catalog, String schema, String table)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getExtraNameCharacters() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getFunctionColumns(
|
||||
String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifierQuoteString() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getImportedKeys(String catalog, String schema, String table)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getIndexInfo(
|
||||
String catalog, String schema, String table, boolean unique, boolean approximate)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getJDBCMajorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getJDBCMinorVersion() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxBinaryLiteralLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCatalogNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCharLiteralLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInGroupBy() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInIndex() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInOrderBy() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInSelect() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxColumnsInTable() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxConnections() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCursorNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxIndexLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxProcedureNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRowSize() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxSchemaNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxStatementLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxStatements() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxTableNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxTablesInSelect() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxUserNameLength() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNumericFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getProcedureColumns(
|
||||
String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProcedureTerm() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getPseudoColumns(
|
||||
String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetHoldability() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RowIdLifetime getRowIdLifetime() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSQLKeywords() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSQLStateType() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSchemaTerm() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSchemas() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSearchStringEscape() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStringFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSystemFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTableTypes() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTables(
|
||||
String catalog, String schemaPattern, String tableNamePattern, String[] types)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTimeDateFunctions() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getTypeInfo() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getUDTs(
|
||||
String catalog, String schemaPattern, String typeNamePattern, int[] types)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getURL() throws SQLException {
|
||||
return url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUserName() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getVersionColumns(String catalog, String schema, String table)
|
||||
throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean insertsAreDetected(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCatalogAtStart() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnly() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean locatorsUpdateCopy() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullPlusNonNullIsNull() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedAtEnd() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedAtStart() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedHigh() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullsAreSortedLow() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean othersDeletesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean othersInsertsAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean othersUpdatesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ownDeletesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ownInsertsAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ownUpdatesAreVisible(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesLowerCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesMixedCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesMixedCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesUpperCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean storesUpperCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsANSI92EntryLevelSQL() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsANSI92FullSQL() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsANSI92IntermediateSQL() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsAlterTableWithAddColumn() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsAlterTableWithDropColumn() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsBatchUpdates() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInDataManipulation() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInIndexDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInProcedureCalls() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCatalogsInTableDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsColumnAliasing() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsConvert() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsConvert(int fromType, int toType) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCoreSQLGrammar() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCorrelatedSubqueries() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDataManipulationTransactionsOnly() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDifferentTableCorrelationNames() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsExpressionsInOrderBy() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsExtendedSQLGrammar() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsFullOuterJoins() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGetGeneratedKeys() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGroupBy() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGroupByBeyondSelect() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsGroupByUnrelated() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsIntegrityEnhancementFacility() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsLikeEscapeClause() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsLimitedOuterJoins() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMinimumSQLGrammar() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMixedCaseIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMultipleOpenResults() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMultipleResultSets() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMultipleTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsNamedParameters() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsNonNullableColumns() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenCursorsAcrossCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenCursorsAcrossRollback() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenStatementsAcrossCommit() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOpenStatementsAcrossRollback() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOrderByUnrelated() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsOuterJoins() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsPositionedDelete() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsPositionedUpdate() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResultSetHoldability(int holdability) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResultSetType(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSavepoints() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInDataManipulation() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInIndexDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInProcedureCalls() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSchemasInTableDefinitions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSelectForUpdate() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStatementPooling() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStoredProcedures() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInComparisons() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInExists() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInIns() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSubqueriesInQuantifieds() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTableCorrelationNames() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTransactionIsolationLevel(int level) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTransactions() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsUnion() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsUnionAll() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updatesAreDetected(int type) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usesLocalFilePerTable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean usesLocalFiles() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.Driver;
|
||||
import java.sql.DriverPropertyInfo;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLFeatureNotSupportedException;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class TestDriver implements Driver {
|
||||
@Override
|
||||
public Connection connect(String url, Properties info) throws SQLException {
|
||||
return new TestConnection();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptsURL(String url) throws SQLException {
|
||||
return url.startsWith("jdbc:test:");
|
||||
}
|
||||
|
||||
@Override
|
||||
public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
|
||||
DriverPropertyInfo driverPropertyInfo = new DriverPropertyInfo("test", "test");
|
||||
return new DriverPropertyInfo[] {driverPropertyInfo};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMajorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMinorVersion() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean jdbcCompliant() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getParentLogger() throws SQLFeatureNotSupportedException {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,220 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.Reader;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
import java.sql.Array;
|
||||
import java.sql.Blob;
|
||||
import java.sql.Clob;
|
||||
import java.sql.Connection;
|
||||
import java.sql.Date;
|
||||
import java.sql.NClob;
|
||||
import java.sql.ParameterMetaData;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.Ref;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.RowId;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLXML;
|
||||
import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Calendar;
|
||||
|
||||
class TestPreparedStatement extends TestStatement implements PreparedStatement {
|
||||
|
||||
TestPreparedStatement() {
|
||||
super();
|
||||
}
|
||||
|
||||
TestPreparedStatement(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBatch() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void clearParameters() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public boolean execute() throws SQLException {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet executeQuery() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSetMetaData getMetaData() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParameterMetaData getParameterMetaData() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setArray(int parameterIndex, Array x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setAsciiStream(int parameterIndex, InputStream x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBinaryStream(int parameterIndex, InputStream x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBlob(int parameterIndex, Blob x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBlob(int parameterIndex, InputStream inputStream, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBoolean(int parameterIndex, boolean x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setByte(int parameterIndex, byte x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setBytes(int parameterIndex, byte[] x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader, int length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClob(int parameterIndex, Clob x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClob(int parameterIndex, Reader reader, long length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setClob(int parameterIndex, Reader reader) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setDate(int parameterIndex, Date x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setDouble(int parameterIndex, double x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setFloat(int parameterIndex, float x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setInt(int parameterIndex, int x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setLong(int parameterIndex, long x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNCharacterStream(int parameterIndex, Reader value, long length)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNCharacterStream(int parameterIndex, Reader value) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNClob(int parameterIndex, NClob value) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNClob(int parameterIndex, Reader reader) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNString(int parameterIndex, String value) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNull(int parameterIndex, int sqlType) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)
|
||||
throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setRef(int parameterIndex, Ref x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setRowId(int parameterIndex, RowId x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setShort(int parameterIndex, short x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setString(int parameterIndex, String x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTime(int parameterIndex, Time x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setURL(int parameterIndex, URL x) throws SQLException {}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException {}
|
||||
}
|
|
@ -0,0 +1,216 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.jdbc;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLWarning;
|
||||
import java.sql.Statement;
|
||||
|
||||
class TestStatement implements Statement {
|
||||
final Connection connection;
|
||||
|
||||
TestStatement() {
|
||||
this.connection = null;
|
||||
}
|
||||
|
||||
TestStatement(Connection connection) {
|
||||
this.connection = connection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBatch(String sql) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void cancel() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void clearBatch() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void clearWarnings() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void close() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void closeOnCompletion() throws SQLException {}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql) throws SQLException {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, int[] columnIndexes) throws SQLException {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, String[] columnNames) throws SQLException {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] executeBatch() throws SQLException {
|
||||
return new int[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet executeQuery(String sql) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, int[] columnIndexes) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, String[] columnNames) throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Connection getConnection() throws SQLException {
|
||||
return connection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFetchDirection() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFetchSize() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getGeneratedKeys() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFieldSize() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRows() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getMoreResults() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getMoreResults(int current) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getQueryTimeout() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet getResultSet() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetConcurrency() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetHoldability() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResultSetType() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getUpdateCount() throws SQLException {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLWarning getWarnings() throws SQLException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCloseOnCompletion() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPoolable() throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWrapperFor(Class<?> iface) throws SQLException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCursorName(String name) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setEscapeProcessing(boolean enable) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setFetchDirection(int direction) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setFetchSize(int rows) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setMaxFieldSize(int max) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setMaxRows(int max) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setPoolable(boolean poolable) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public void setQueryTimeout(int seconds) throws SQLException {}
|
||||
|
||||
@Override
|
||||
public <T> T unwrap(Class<T> iface) throws SQLException {
|
||||
return null;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue