diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala index 95d73c1711523a2ae24f24d9408e1f1aa9d37b70..a66af602a1064f3197ea7e72dc540a36e04fe1bc 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDD.scala @@ -501,7 +501,7 @@ class SchemaRDD( } override def unpersist(blocking: Boolean): this.type = { - sqlContext.uncacheQuery(this, blocking) + sqlContext.tryUncacheQuery(this, blocking) this } } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala index 042210176ad7e64f26ccfaaea6949e82a91c2b44..cfc037caff2a9aa537b4f67858d2851493f0ec11 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/CachedTableSuite.scala @@ -49,6 +49,20 @@ class CachedTableSuite extends QueryTest { uncacheTable("tempTable") } + test("unpersist an uncached table will not raise exception") { + assert(None == lookupCachedData(testData)) + testData.unpersist(true) + assert(None == lookupCachedData(testData)) + testData.unpersist(false) + assert(None == lookupCachedData(testData)) + testData.persist() + assert(None != lookupCachedData(testData)) + testData.unpersist(true) + assert(None == lookupCachedData(testData)) + testData.unpersist(false) + assert(None == lookupCachedData(testData)) + } + test("cache table as select") { sql("CACHE TABLE tempTable AS SELECT key FROM testData") assertCached(sql("SELECT COUNT(*) FROM tempTable"))