[SPARK-22686][SQL] DROP TABLE IF EXISTS should not show AnalysisException
## What changes were proposed in this pull request? During [SPARK-22488](https://github.com/apache/spark/pull/19713) to fix view resolution issue, there occurs a regression at `2.2.1` and `master` branch like the following. This PR fixes that. ```scala scala> spark.version res2: String = 2.2.1 scala> sql("DROP TABLE IF EXISTS t").show 17/12/04 21:01:06 WARN DropTableCommand: org.apache.spark.sql.AnalysisException: Table or view not found: t; org.apache.spark.sql.AnalysisException: Table or view not found: t; ``` ## How was this patch tested? Manual. Author: Dongjoon Hyun <dongjoon@apache.org> Closes #19888 from dongjoon-hyun/SPARK-22686.
This commit is contained in:
parent
59aa3d56af
commit
82183f7b57
|
@ -203,14 +203,20 @@ case class DropTableCommand(
|
|||
case _ =>
|
||||
}
|
||||
}
|
||||
try {
|
||||
sparkSession.sharedState.cacheManager.uncacheQuery(sparkSession.table(tableName))
|
||||
} catch {
|
||||
case _: NoSuchTableException if ifExists =>
|
||||
case NonFatal(e) => log.warn(e.toString, e)
|
||||
|
||||
if (catalog.isTemporaryTable(tableName) || catalog.tableExists(tableName)) {
|
||||
try {
|
||||
sparkSession.sharedState.cacheManager.uncacheQuery(sparkSession.table(tableName))
|
||||
} catch {
|
||||
case NonFatal(e) => log.warn(e.toString, e)
|
||||
}
|
||||
catalog.refreshTable(tableName)
|
||||
catalog.dropTable(tableName, ifExists, purge)
|
||||
} else if (ifExists) {
|
||||
// no-op
|
||||
} else {
|
||||
throw new AnalysisException(s"Table or view not found: ${tableName.identifier}")
|
||||
}
|
||||
catalog.refreshTable(tableName)
|
||||
catalog.dropTable(tableName, ifExists, purge)
|
||||
Seq.empty[Row]
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue