You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by li...@apache.org on 2018/01/15 15:13:29 UTC
spark git commit: [SPARK-23035][SQL] Fix improper information of
TempTableAlreadyExistsException
Repository: spark
Updated Branches:
refs/heads/master bd08a9e7a -> 6c81fe227
[SPARK-23035][SQL] Fix improper information of TempTableAlreadyExistsException
## What changes were proposed in this pull request?
Problem: it throw TempTableAlreadyExistsException and output "Temporary table '$table' already exists" when we create temp view by using org.apache.spark.sql.catalyst.catalog.GlobalTempViewManager#create, it's improper.
So fix improper information about TempTableAlreadyExistsException when create temp view:
change "Temporary table" to "Temporary view"
## How was this patch tested?
test("rename temporary view - destination table already exists, with: CREATE TEMPORARY view")
test("rename temporary view - destination table with database name,with:CREATE TEMPORARY view")
Author: xubo245 <60...@qq.com>
Closes #20227 from xubo245/fixDeprecated.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/6c81fe22
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/6c81fe22
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/6c81fe22
Branch: refs/heads/master
Commit: 6c81fe227a6233f5d9665d2efadf8a1cf09f700d
Parents: bd08a9e
Author: xubo245 <60...@qq.com>
Authored: Mon Jan 15 23:13:15 2018 +0800
Committer: gatorsmile <ga...@gmail.com>
Committed: Mon Jan 15 23:13:15 2018 +0800
----------------------------------------------------------------------
.../analysis/AlreadyExistException.scala | 2 +-
.../catalyst/catalog/SessionCatalogSuite.scala | 6 +-
.../spark/sql/execution/SQLViewSuite.scala | 2 +-
.../spark/sql/execution/command/DDLSuite.scala | 75 +++++++++++++++++++-
4 files changed, 78 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/6c81fe22/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlreadyExistException.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlreadyExistException.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlreadyExistException.scala
index 57f7a80..6d587ab 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlreadyExistException.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlreadyExistException.scala
@@ -31,7 +31,7 @@ class TableAlreadyExistsException(db: String, table: String)
extends AnalysisException(s"Table or view '$table' already exists in database '$db'")
class TempTableAlreadyExistsException(table: String)
- extends AnalysisException(s"Temporary table '$table' already exists")
+ extends AnalysisException(s"Temporary view '$table' already exists")
class PartitionAlreadyExistsException(db: String, table: String, spec: TablePartitionSpec)
extends AnalysisException(
http://git-wip-us.apache.org/repos/asf/spark/blob/6c81fe22/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/catalog/SessionCatalogSuite.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/catalog/SessionCatalogSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/catalog/SessionCatalogSuite.scala
index 95c87ff..6abab00 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/catalog/SessionCatalogSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/catalog/SessionCatalogSuite.scala
@@ -279,7 +279,7 @@ abstract class SessionCatalogSuite extends AnalysisTest {
}
}
- test("create temp table") {
+ test("create temp view") {
withBasicCatalog { catalog =>
val tempTable1 = Range(1, 10, 1, 10)
val tempTable2 = Range(1, 20, 2, 10)
@@ -288,11 +288,11 @@ abstract class SessionCatalogSuite extends AnalysisTest {
assert(catalog.getTempView("tbl1") == Option(tempTable1))
assert(catalog.getTempView("tbl2") == Option(tempTable2))
assert(catalog.getTempView("tbl3").isEmpty)
- // Temporary table already exists
+ // Temporary view already exists
intercept[TempTableAlreadyExistsException] {
catalog.createTempView("tbl1", tempTable1, overrideIfExists = false)
}
- // Temporary table already exists but we override it
+ // Temporary view already exists but we override it
catalog.createTempView("tbl1", tempTable2, overrideIfExists = true)
assert(catalog.getTempView("tbl1") == Option(tempTable2))
}
http://git-wip-us.apache.org/repos/asf/spark/blob/6c81fe22/sql/core/src/test/scala/org/apache/spark/sql/execution/SQLViewSuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/SQLViewSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/SQLViewSuite.scala
index 8c55758..1408219 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/SQLViewSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/SQLViewSuite.scala
@@ -293,7 +293,7 @@ abstract class SQLViewSuite extends QueryTest with SQLTestUtils {
sql("CREATE TEMPORARY VIEW testView AS SELECT id FROM jt")
}
- assert(e.message.contains("Temporary table") && e.message.contains("already exists"))
+ assert(e.message.contains("Temporary view") && e.message.contains("already exists"))
}
}
http://git-wip-us.apache.org/repos/asf/spark/blob/6c81fe22/sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLSuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLSuite.scala
index 2b4b7c1..6ca21b5 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLSuite.scala
@@ -835,6 +835,31 @@ abstract class DDLSuite extends QueryTest with SQLTestUtils {
}
}
+ test("rename temporary view - destination table with database name,with:CREATE TEMPORARY view") {
+ withTempView("view1") {
+ sql(
+ """
+ |CREATE TEMPORARY VIEW view1
+ |USING org.apache.spark.sql.sources.DDLScanSource
+ |OPTIONS (
+ | From '1',
+ | To '10',
+ | Table 'test1'
+ |)
+ """.stripMargin)
+
+ val e = intercept[AnalysisException] {
+ sql("ALTER TABLE view1 RENAME TO default.tab2")
+ }
+ assert(e.getMessage.contains(
+ "RENAME TEMPORARY VIEW from '`view1`' to '`default`.`tab2`': " +
+ "cannot specify database name 'default' in the destination table"))
+
+ val catalog = spark.sessionState.catalog
+ assert(catalog.listTables("default") == Seq(TableIdentifier("view1")))
+ }
+ }
+
test("rename temporary view") {
withTempView("tab1", "tab2") {
spark.range(10).createOrReplaceTempView("tab1")
@@ -883,6 +908,42 @@ abstract class DDLSuite extends QueryTest with SQLTestUtils {
}
}
+ test("rename temporary view - destination table already exists, with: CREATE TEMPORARY view") {
+ withTempView("view1", "view2") {
+ sql(
+ """
+ |CREATE TEMPORARY VIEW view1
+ |USING org.apache.spark.sql.sources.DDLScanSource
+ |OPTIONS (
+ | From '1',
+ | To '10',
+ | Table 'test1'
+ |)
+ """.stripMargin)
+
+ sql(
+ """
+ |CREATE TEMPORARY VIEW view2
+ |USING org.apache.spark.sql.sources.DDLScanSource
+ |OPTIONS (
+ | From '1',
+ | To '10',
+ | Table 'test1'
+ |)
+ """.stripMargin)
+
+ val e = intercept[AnalysisException] {
+ sql("ALTER TABLE view1 RENAME TO view2")
+ }
+ assert(e.getMessage.contains(
+ "RENAME TEMPORARY VIEW from '`view1`' to '`view2`': destination table already exists"))
+
+ val catalog = spark.sessionState.catalog
+ assert(catalog.listTables("default") ==
+ Seq(TableIdentifier("view1"), TableIdentifier("view2")))
+ }
+ }
+
test("alter table: bucketing is not supported") {
val catalog = spark.sessionState.catalog
val tableIdent = TableIdentifier("tab1", Some("dbx"))
@@ -1728,12 +1789,22 @@ abstract class DDLSuite extends QueryTest with SQLTestUtils {
}
test("block creating duplicate temp table") {
- withView("t_temp") {
+ withTempView("t_temp") {
sql("CREATE TEMPORARY VIEW t_temp AS SELECT 1, 2")
val e = intercept[TempTableAlreadyExistsException] {
sql("CREATE TEMPORARY TABLE t_temp (c3 int, c4 string) USING JSON")
}.getMessage
- assert(e.contains("Temporary table 't_temp' already exists"))
+ assert(e.contains("Temporary view 't_temp' already exists"))
+ }
+ }
+
+ test("block creating duplicate temp view") {
+ withTempView("t_temp") {
+ sql("CREATE TEMPORARY VIEW t_temp AS SELECT 1, 2")
+ val e = intercept[TempTableAlreadyExistsException] {
+ sql("CREATE TEMPORARY VIEW t_temp (c3 int, c4 string) USING JSON")
+ }.getMessage
+ assert(e.contains("Temporary view 't_temp' already exists"))
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org