diff --git a/connector/docker-integration-tests/pom.xml b/connector/docker-integration-tests/pom.xml index f83c6f8fbd217..c297bd0ab6dc5 100644 --- a/connector/docker-integration-tests/pom.xml +++ b/connector/docker-integration-tests/pom.xml @@ -100,12 +100,11 @@ ojdbc17 test - - + com.microsoft.sqlserver mssql-jdbc diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2IntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2IntegrationSuite.scala index 39aef6d7c90b3..6a489ffb2d42e 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2IntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2IntegrationSuite.scala @@ -21,13 +21,12 @@ import java.math.BigDecimal import java.sql.{Connection, Date, Timestamp} import java.util.Properties -import org.scalatest.Ignore - import org.apache.spark.sql.{Row, SaveMode} import org.apache.spark.sql.catalyst.util.CharVarcharUtils import org.apache.spark.sql.catalyst.util.DateTimeTestUtils._ import org.apache.spark.sql.internal.SQLConf import org.apache.spark.sql.types.{ByteType, ShortType, StructType} +import org.apache.spark.tags.DockerTest /** * To run this test suite for a specific version (e.g., icr.io/db2_community/db2:11.5.9.0): @@ -37,7 +36,7 @@ import org.apache.spark.sql.types.{ByteType, ShortType, StructType} * "docker-integration-tests/testOnly org.apache.spark.sql.jdbc.DB2IntegrationSuite" * }}} */ -@Ignore // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests +@DockerTest class DB2IntegrationSuite extends SharedJDBCIntegrationSuite { override val db = new DB2DatabaseOnDocker diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2KrbIntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2KrbIntegrationSuite.scala index a34c1f5590a0d..c7d8fc43393ed 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2KrbIntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/DB2KrbIntegrationSuite.scala @@ -24,7 +24,6 @@ import javax.security.auth.login.Configuration import com.github.dockerjava.api.model.{AccessMode, Bind, ContainerConfig, HostConfig, Volume} import org.apache.hadoop.security.{SecurityUtil, UserGroupInformation} import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod.KERBEROS -import org.scalatest.Ignore import org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions import org.apache.spark.sql.execution.datasources.jdbc.connection.{DB2ConnectionProvider, SecureConnectionProvider} @@ -38,7 +37,6 @@ import org.apache.spark.tags.DockerTest * "docker-integration-tests/testOnly *DB2KrbIntegrationSuite" * }}} */ -@Ignore // TODO(SPARK-55707: Re-enable DB2 JDBC Driver tests) @DockerTest class DB2KrbIntegrationSuite extends DockerKrbJDBCIntegrationSuite { override protected val userName = s"db2/$dockerIp" diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2IntegrationSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2IntegrationSuite.scala index e0b937a61fecb..ecc02f7051787 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2IntegrationSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2IntegrationSuite.scala @@ -20,13 +20,12 @@ package org.apache.spark.sql.jdbc.v2 import java.sql.Connection import java.util.Locale -import org.scalatest.Ignore - import org.apache.spark.SparkConf import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.execution.datasources.v2.jdbc.JDBCTableCatalog import org.apache.spark.sql.jdbc.DB2DatabaseOnDocker import org.apache.spark.sql.types._ +import org.apache.spark.tags.DockerTest /** * To run this test suite for a specific version (e.g., icr.io/db2_community/db2:11.5.9.0): @@ -35,7 +34,7 @@ import org.apache.spark.sql.types._ * ./build/sbt -Pdocker-integration-tests "testOnly *v2.DB2IntegrationSuite" * }}} */ -@Ignore // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests +@DockerTest class DB2IntegrationSuite extends DockerJDBCIntegrationV2Suite with V2JDBCTest { // Following tests are disabled for both single and multiple partition read diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2NamespaceSuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2NamespaceSuite.scala index d96f4bf7011e5..52ef902d9c004 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2NamespaceSuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/DB2NamespaceSuite.scala @@ -21,8 +21,6 @@ import java.sql.Connection import scala.jdk.CollectionConverters._ -import org.scalatest.Ignore - import org.apache.spark.sql.jdbc.{DB2DatabaseOnDocker, DockerJDBCIntegrationSuite} import org.apache.spark.sql.util.CaseInsensitiveStringMap import org.apache.spark.tags.DockerTest @@ -34,7 +32,6 @@ import org.apache.spark.tags.DockerTest * ./build/sbt -Pdocker-integration-tests "testOnly *v2.DB2NamespaceSuite" * }}} */ -@Ignore // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests @DockerTest class DB2NamespaceSuite extends DockerJDBCIntegrationSuite with V2JDBCNamespaceTest { override val db = new DB2DatabaseOnDocker @@ -42,8 +39,10 @@ class DB2NamespaceSuite extends DockerJDBCIntegrationSuite with V2JDBCNamespaceT Map("url" -> db.getJdbcUrl(dockerIp, externalPort), "driver" -> "com.ibm.db2.jcc.DB2Driver").asJava) - // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests - // catalog.initialize("db2", map) + override def beforeAll(): Unit = { + super.beforeAll() + catalog.initialize("db2", map) + } override def dataPreparation(conn: Connection): Unit = {} diff --git a/pom.xml b/pom.xml index 727c007126504..6a6bdf9c21334 100644 --- a/pom.xml +++ b/pom.xml @@ -348,7 +348,7 @@ 3.5.7 9.6.0 42.7.11 - 11.5.9.0 + 12.1.4.0 13.2.1.jre11 23.26.1.0.0 3.3.1 @@ -1382,13 +1382,12 @@ ${postgresql.version} test - - + com.microsoft.sqlserver mssql-jdbc diff --git a/sql/core/pom.xml b/sql/core/pom.xml index e6673c9069f42..84ed643b300b2 100644 --- a/sql/core/pom.xml +++ b/sql/core/pom.xml @@ -211,12 +211,11 @@ postgresql test - - + com.ibm.icu icu4j diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/ConnectionProviderSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/ConnectionProviderSuite.scala index b2e788b52109e..0d7b133f0e15e 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/ConnectionProviderSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/ConnectionProviderSuite.scala @@ -185,28 +185,28 @@ class ConnectionProviderSuite val postgresDriver = registerDriver(postgresProvider.driverClass) val postgresOptions = options("jdbc:postgresql://localhost/postgres") val postgresAppEntry = postgresProvider.appEntry(postgresDriver, postgresOptions) - val mysqlProvider = new MariaDBConnectionProvider() - val mysqlDriver = registerDriver(mysqlProvider.driverClass) - val mysqlOptions = options("jdbc:mysql://localhost/db") - val mysqlAppEntry = mysqlProvider.appEntry(mysqlDriver, mysqlOptions) + val db2Provider = new DB2ConnectionProvider() + val db2Driver = registerDriver(db2Provider.driverClass) + val db2Options = options("jdbc:db2://localhost/db2") + val db2AppEntry = db2Provider.appEntry(db2Driver, db2Options) // Make sure no authentication for the databases are set val rootConfig = Configuration.getConfiguration assert(rootConfig.getAppConfigurationEntry(postgresAppEntry) == null) - assert(rootConfig.getAppConfigurationEntry(mysqlAppEntry) == null) + assert(rootConfig.getAppConfigurationEntry(db2AppEntry) == null) postgresProvider.setAuthenticationConfig(postgresDriver, postgresOptions) val postgresConfig = Configuration.getConfiguration - mysqlProvider.setAuthenticationConfig(mysqlDriver, mysqlOptions) - val mysqlConfig = Configuration.getConfiguration + db2Provider.setAuthenticationConfig(db2Driver, db2Options) + val db2Config = Configuration.getConfiguration // Make sure authentication for the databases are set assert(rootConfig != postgresConfig) - assert(rootConfig != mysqlConfig) + assert(rootConfig != db2Config) // The topmost config in the chain is linked with all the subsequent entries - assert(mysqlConfig.getAppConfigurationEntry(postgresAppEntry) != null) - assert(mysqlConfig.getAppConfigurationEntry(mysqlAppEntry) != null) + assert(db2Config.getAppConfigurationEntry(postgresAppEntry) != null) + assert(db2Config.getAppConfigurationEntry(db2AppEntry) != null) Configuration.setConfiguration(null) } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/DB2ConnectionProviderSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/DB2ConnectionProviderSuite.scala index f29a1b1e7ab62..895b3d85d960b 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/DB2ConnectionProviderSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/jdbc/connection/DB2ConnectionProviderSuite.scala @@ -17,9 +17,6 @@ package org.apache.spark.sql.execution.datasources.jdbc.connection -import org.scalatest.Ignore - -@Ignore // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests class DB2ConnectionProviderSuite extends ConnectionProviderSuiteBase { test("setAuthenticationConfig must set authentication all the time") { val provider = new DB2ConnectionProvider() diff --git a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala index 3a83a2549f924..3c04c517a670c 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala @@ -1265,8 +1265,7 @@ class JDBCSuite extends SharedSparkSession { "SELECT TOP (123) a,b FROM test") } - // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests - ignore("SPARK-42534: DB2Dialect Limit query test") { + test("SPARK-42534: DB2Dialect Limit query test") { // JDBC url is a required option but is not used in this test. val options = new JDBCOptions(Map("url" -> "jdbc:db2://host:port", "dbtable" -> "test")) assert( @@ -2439,9 +2438,7 @@ class JDBCSuite extends SharedSparkSession { } // not supported Seq( - // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests - // "jdbc:db2://host:port", - "jdbc:derby:memory", "jdbc:h2://host:port", + "jdbc:db2://host:port", "jdbc:derby:memory", "jdbc:h2://host:port", "jdbc:sqlserver://host:port", "jdbc:postgresql://host:5432/postgres", "jdbc:snowflake://host:443?account=test", "jdbc:teradata://host:port").foreach { url => val options = new JDBCOptions(baseParameters + ("url" -> url)) @@ -2462,8 +2459,7 @@ class JDBCSuite extends SharedSparkSession { "jdbc:mysql", "jdbc:postgresql", "jdbc:sqlserver", - // TODO(SPARK-55707): Re-enable DB2 JDBC Driver tests - // "jdbc:db2", + "jdbc:db2", "jdbc:h2", "jdbc:teradata", "jdbc:databricks"