From 81ec750e1f26165fbb753a83342690219d331791 Mon Sep 17 00:00:00 2001 From: dch nguyen Date: Wed, 12 Jan 2022 15:11:00 +0700 Subject: [PATCH 1/3] initial commit --- .../catalyst/analysis/ResolveSessionCatalog.scala | 2 +- .../datasources/v2/V2SessionCatalog.scala | 15 +++++++++++++++ .../execution/command/v1/DropNamespaceSuite.scala | 10 +++++++--- .../spark/sql/hive/execution/HiveDDLSuite.scala | 2 +- .../execution/command/DropNamespaceSuite.scala | 1 + 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveSessionCatalog.scala b/sql/core/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveSessionCatalog.scala index 3dde9985abbee..6df94f3864552 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveSessionCatalog.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveSessionCatalog.scala @@ -221,7 +221,7 @@ class ResolveSessionCatalog(val catalogManager: CatalogManager) val newProperties = c.properties -- CatalogV2Util.NAMESPACE_RESERVED_PROPERTIES CreateDatabaseCommand(name, c.ifNotExists, location, comment, newProperties) - case d @ DropNamespace(DatabaseInSessionCatalog(db), _, _) => + case d @ DropNamespace(DatabaseInSessionCatalog(db), _, _) if conf.useV1Command => DropDatabaseCommand(db, d.ifExists, d.cascade) case ShowTables(DatabaseInSessionCatalog(db), pattern, output) if conf.useV1Command => diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala index d9cfe0aa04dc8..85f7af5a59310 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala @@ -301,6 +301,21 @@ class V2SessionCatalog(catalog: SessionCatalog) throw QueryCompilationErrors.noSuchNamespaceError(namespace) } + def dropNamespaceWithCascadeMode( + namespace: Array[String], + cascade: Boolean): Boolean = namespace match { + case Array(db) if catalog.databaseExists(db) => + catalog.dropDatabase(db, ignoreIfNotExists = false, cascade) + true + + case Array(_) => + // exists returned false + false + + case _ => + throw QueryCompilationErrors.noSuchNamespaceError(namespace) + } + def isTempView(ident: Identifier): Boolean = { catalog.isTempView(ident.namespace() :+ ident.name()) } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala index 24e51317575d3..614a3e8f252cf 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala @@ -28,10 +28,12 @@ import org.apache.spark.sql.execution.command * - V1 In-Memory catalog: `org.apache.spark.sql.execution.command.v1.DropNamespaceSuite` * - V1 Hive External catalog: `org.apache.spark.sql.hive.execution.command.DropNamespaceSuite` */ -trait DropNamespaceSuiteBase extends command.DropNamespaceSuiteBase { +trait DropNamespaceSuiteBase extends command.DropNamespaceSuiteBase + with command.TestsV1AndV2Commands { override protected def builtinTopNamespaces: Seq[String] = Seq("default") - override protected def namespaceAlias(): String = "database" + override protected def namespaceAlias(): String = + if (conf.useV1Command) "database" else "namespace" test("drop default namespace") { val message = intercept[AnalysisException] { @@ -41,4 +43,6 @@ trait DropNamespaceSuiteBase extends command.DropNamespaceSuiteBase { } } -class DropNamespaceSuite extends DropNamespaceSuiteBase with CommandSuiteBase +class DropNamespaceSuite extends DropNamespaceSuiteBase with CommandSuiteBase { + override def commandVersion: String = super[DropNamespaceSuiteBase].commandVersion +} diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala index 014feb33df5ea..99f5cf4557dfa 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala @@ -1235,7 +1235,7 @@ class HiveDDLSuite if (tableExists && !cascade) { assertAnalysisError( sqlDropDatabase, - s"Cannot drop a non-empty database: $dbName.") + s"Cannot drop a non-empty namespace: $dbName.") // the database directory was not removed assert(fs.exists(new Path(expectedDBLocation))) } else { diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/command/DropNamespaceSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/command/DropNamespaceSuite.scala index cabebb9e11510..955fe332cf1d0 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/command/DropNamespaceSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/command/DropNamespaceSuite.scala @@ -25,4 +25,5 @@ import org.apache.spark.sql.execution.command.v1 */ class DropNamespaceSuite extends v1.DropNamespaceSuiteBase with CommandSuiteBase { override def isCasePreserving: Boolean = false + override def commandVersion: String = super[DropNamespaceSuiteBase].commandVersion } From 9394893ea1f98147467416d2f8e6245a2c26fcb7 Mon Sep 17 00:00:00 2001 From: dch nguyen Date: Fri, 21 Jan 2022 15:41:04 +0700 Subject: [PATCH 2/3] update after merge dropNamespace with cascade --- .../datasources/v2/V2SessionCatalog.scala | 15 --------------- .../execution/command/v1/DropNamespaceSuite.scala | 3 +-- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala index 85f7af5a59310..d9cfe0aa04dc8 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2SessionCatalog.scala @@ -301,21 +301,6 @@ class V2SessionCatalog(catalog: SessionCatalog) throw QueryCompilationErrors.noSuchNamespaceError(namespace) } - def dropNamespaceWithCascadeMode( - namespace: Array[String], - cascade: Boolean): Boolean = namespace match { - case Array(db) if catalog.databaseExists(db) => - catalog.dropDatabase(db, ignoreIfNotExists = false, cascade) - true - - case Array(_) => - // exists returned false - false - - case _ => - throw QueryCompilationErrors.noSuchNamespaceError(namespace) - } - def isTempView(ident: Identifier): Boolean = { catalog.isTempView(ident.namespace() :+ ident.name()) } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala index 614a3e8f252cf..174ac970be6bc 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/v1/DropNamespaceSuite.scala @@ -32,8 +32,7 @@ trait DropNamespaceSuiteBase extends command.DropNamespaceSuiteBase with command.TestsV1AndV2Commands { override protected def builtinTopNamespaces: Seq[String] = Seq("default") - override protected def namespaceAlias(): String = - if (conf.useV1Command) "database" else "namespace" + override protected def namespaceAlias(): String = "database" test("drop default namespace") { val message = intercept[AnalysisException] { From c71685c872da4cb6110878f25d8a1ca0d21f4b6b Mon Sep 17 00:00:00 2001 From: dch nguyen Date: Tue, 25 Jan 2022 16:30:25 +0700 Subject: [PATCH 3/3] update hiveddlsuite --- .../org/apache/spark/sql/hive/execution/HiveDDLSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala index 99f5cf4557dfa..014feb33df5ea 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveDDLSuite.scala @@ -1235,7 +1235,7 @@ class HiveDDLSuite if (tableExists && !cascade) { assertAnalysisError( sqlDropDatabase, - s"Cannot drop a non-empty namespace: $dbName.") + s"Cannot drop a non-empty database: $dbName.") // the database directory was not removed assert(fs.exists(new Path(expectedDBLocation))) } else {