diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 9df50bd2c..9a63fa761 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -39,5 +39,5 @@ jobs: - name: Build with Maven run: | export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN" - mvn --no-transfer-progress clean install -pl :kyuubi-common,:kyuubi-ha,:kyuubi-main,:kyuubi-spark-sql-engine,:kyuubi-codecov -Dmaven.javadoc.skip=true -B -V + mvn --no-transfer-progress clean install -pl :kyuubi-common,:kyuubi-ha,:kyuubi-main,:kyuubi-download,:kyuubi-assembly,:kyuubi-spark-sql-engine,:kyuubi-codecov -Dmaven.javadoc.skip=true -B -V bash <(curl -s https://codecov.io/bash) diff --git a/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/operation/SparkOperationSuite.scala b/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/operation/SparkOperationSuite.scala index 85f28f064..0515d0a2b 100644 --- a/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/operation/SparkOperationSuite.scala +++ b/externals/kyuubi-spark-sql-engine/src/test/scala/org/apache/kyuubi/engine/spark/operation/SparkOperationSuite.scala @@ -17,7 +17,7 @@ package org.apache.kyuubi.engine.spark.operation -import java.sql.{Date, SQLException, Timestamp} +import java.sql.{Date, ResultSet, SQLException, Timestamp} import scala.collection.JavaConverters._ @@ -46,21 +46,39 @@ class SparkOperationSuite extends WithSparkSQLEngine { } test("get schemas") { - withDatabases("db1", "db2") { statement => - statement.execute("CREATE DATABASE IF NOT EXISTS db1") - statement.execute("CREATE DATABASE IF NOT EXISTS db2") + def checkResult(rs: ResultSet, dbNames: Seq[String]): Unit = { + val expected = dbNames.iterator + while(rs.next() || expected.hasNext) { + assert(rs.getString("TABLE_SCHEM") === expected.next) + assert(rs.getString("TABLE_CATALOG").isEmpty) + } + // Make sure there are no more elements + assert(!rs.next()) + assert(!expected.hasNext, "All expected schemas should be visited") + } + + val dbs = Seq("db1", "db2", "db33", "db44") + val dbDflts = Seq("default", "global_temp") + + withDatabases(dbs: _*) { statement => + dbs.foreach(db => statement.execute(s"CREATE DATABASE IF NOT EXISTS $db")) val metaData = statement.getConnection.getMetaData - Seq("", "%", null, ".*", "db#") foreach { pattern => - val resultSet = metaData.getSchemas(null, pattern) - val expected = - Seq("db1", "db2", "default", spark.sharedState.globalTempViewManager.database).iterator - while(resultSet.next()) { - assert(resultSet.getString(TABLE_SCHEM) === expected.next) - assert(resultSet.getString(TABLE_CATALOG).isEmpty) - } + Seq("", "%", null, ".*", "_*", "_%", ".%") foreach { pattern => + checkResult(metaData.getSchemas(null, pattern), dbs ++ dbDflts) } + Seq("db%", "db*") foreach { pattern => + checkResult(metaData.getSchemas(null, pattern), dbs) + } + + Seq("db_", "db.") foreach { pattern => + checkResult(metaData.getSchemas(null, pattern), dbs.take(2)) + } + + checkResult(metaData.getSchemas(null, "db1"), Seq("db1")) + checkResult(metaData.getSchemas(null, "db_not_exist"), Seq.empty) + val e = intercept[HiveSQLException](metaData.getSchemas(null, "*")) assert(e.getCause.getMessage === "org.apache.kyuubi.KyuubiSQLException:" + "Error operating GET_SCHEMAS: Dangling meta character '*' near index 0\n*\n^")