From 38aff78d8e2eb191f721d80beb9edc08f8c67db4 Mon Sep 17 00:00:00 2001 From: dohongdayi Date: Tue, 20 Sep 2022 23:44:51 +0800 Subject: [PATCH] [HUDI-4875] Fix NoSuchTableException when dropping temporary view after applied HoodieSparkSessionExtension in Spark 3.2 (#6709) --- .../sql/hudi/analysis/HoodieAnalysis.scala | 4 ++-- .../apache/spark/sql/hudi/TestDropTable.scala | 23 ++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieAnalysis.scala b/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieAnalysis.scala index ecc5d4a901c58..c8add030981b9 100644 --- a/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieAnalysis.scala +++ b/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieAnalysis.scala @@ -581,9 +581,9 @@ case class HoodiePostAnalysisRule(sparkSession: SparkSession) extends Rule[Logic if sparkAdapter.isHoodieTable(table) => CreateHoodieTableCommand(table, ignoreIfExists) // Rewrite the DropTableCommand to DropHoodieTableCommand - case DropTableCommand(tableName, ifExists, isView, purge) + case DropTableCommand(tableName, ifExists, false, purge) if sparkAdapter.isHoodieTable(tableName, sparkSession) => - DropHoodieTableCommand(tableName, ifExists, isView, purge) + DropHoodieTableCommand(tableName, ifExists, false, purge) // Rewrite the AlterTableDropPartitionCommand to AlterHoodieTableDropPartitionCommand case AlterTableDropPartitionCommand(tableName, specs, ifExists, purge, retainData) if sparkAdapter.isHoodieTable(tableName, sparkSession) => diff --git a/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/TestDropTable.scala b/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/TestDropTable.scala index 1beb78e27e7f7..4470712e020c7 100644 --- a/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/TestDropTable.scala +++ b/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/TestDropTable.scala @@ -314,7 +314,6 @@ class TestDropTable extends HoodieSparkSqlTestBase { } } - test("Drop an MANAGED table which path is lost.") { val tableName = generateTableName spark.sql( @@ -341,6 +340,28 @@ class TestDropTable extends HoodieSparkSqlTestBase { checkAnswer("show tables")() } + test("Drop local temporary view should not fail") { + val viewName = generateTableName + spark.sql( + s""" + |create temporary view $viewName as + | select 1 + |""".stripMargin) + + spark.sql(s"drop view $viewName") + } + + test("Drop global temporary view should not fail") { + val viewName = generateTableName + spark.sql( + s""" + |create global temporary view $viewName as + | select 1 + |""".stripMargin) + + spark.sql(s"drop view global_temp.$viewName") + } + private def alterSerdeProperties(sessionCatalog: SessionCatalog, tableIdt: TableIdentifier, newProperties: Map[String, String]): Unit = { val catalogTable = spark.sessionState.catalog.getTableMetadata(tableIdt)