cloud-fan commented on a change in pull request #26736: [SPARK-30098][SQL] Use
default datasource as provider for CREATE TABLE syntax
URL: https://github.com/apache/spark/pull/26736#discussion_r353744493
##########
File path:
sql/core/src/test/scala/org/apache/spark/sql/execution/command/DDLParserSuite.scala
##########
@@ -774,68 +777,60 @@ class DDLParserSuite extends AnalysisTest with
SharedSparkSession {
test("create table - basic") {
val query = "CREATE TABLE my_table (id int, name string)"
- val (desc, allowExisting) = extractTableDesc(query)
- assert(!allowExisting)
- assert(desc.identifier.database.isEmpty)
- assert(desc.identifier.table == "my_table")
- assert(desc.tableType == CatalogTableType.MANAGED)
- assert(desc.schema == new StructType().add("id", "int").add("name",
"string"))
- assert(desc.partitionColumnNames.isEmpty)
- assert(desc.bucketSpec.isEmpty)
- assert(desc.viewText.isEmpty)
- assert(desc.viewDefaultDatabase.isEmpty)
- assert(desc.viewQueryColumnNames.isEmpty)
- assert(desc.storage.locationUri.isEmpty)
- assert(desc.storage.inputFormat ==
- Some("org.apache.hadoop.mapred.TextInputFormat"))
- assert(desc.storage.outputFormat ==
- Some("org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"))
- assert(desc.storage.serde ==
Some("org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"))
- assert(desc.storage.properties.isEmpty)
- assert(desc.properties.isEmpty)
- assert(desc.comment.isEmpty)
+ withCreateTableStatement(query) { state =>
+ assert(state.tableName(0) == "my_table")
+ assert(state.tableSchema == new StructType().add("id",
"int").add("name", "string"))
+ assert(state.partitioning.isEmpty)
+ assert(state.bucketSpec.isEmpty)
+ assert(state.properties.isEmpty)
+ assert(state.provider == conf.defaultDataSourceName)
+ assert(state.options.isEmpty)
+ assert(state.location.isEmpty)
+ assert(state.comment.isEmpty)
+ assert(!state.ifNotExists)
+ }
}
test("create table - with database name") {
val query = "CREATE TABLE dbx.my_table (id int, name string)"
- val (desc, _) = extractTableDesc(query)
- assert(desc.identifier.database == Some("dbx"))
- assert(desc.identifier.table == "my_table")
+ withCreateTableStatement(query) { state =>
+ assert(state.tableName(0) == "dbx")
+ assert(state.tableName(1) == "my_table")
+ }
}
test("create table - temporary") {
val query = "CREATE TEMPORARY TABLE tab1 (id int, name string)"
val e = intercept[ParseException] { parser.parsePlan(query) }
- assert(e.message.contains("CREATE TEMPORARY TABLE is not supported yet"))
+ assert(e.message.contains("CREATE TEMPORARY TABLE without a provider is
not allowed."))
}
test("create table - external") {
val query = "CREATE EXTERNAL TABLE tab1 (id int, name string) LOCATION
'/path/to/nowhere'"
- val (desc, _) = extractTableDesc(query)
- assert(desc.tableType == CatalogTableType.EXTERNAL)
- assert(desc.storage.locationUri == Some(new URI("/path/to/nowhere")))
+ val e = intercept[ParseException] { parser.parsePlan(query) }
+ assert(e.message.contains("Operation not allowed: CREATE EXTERNAL TABLE
..."))
}
test("create table - if not exists") {
val query = "CREATE TABLE IF NOT EXISTS tab1 (id int, name string)"
- val (_, allowExisting) = extractTableDesc(query)
- assert(allowExisting)
+ withCreateTableStatement(query) { state =>
+ assert(state.ifNotExists)
+ }
}
test("create table - comment") {
val query = "CREATE TABLE my_table (id int, name string) COMMENT 'its hot
as hell below'"
- val (desc, _) = extractTableDesc(query)
- assert(desc.comment == Some("its hot as hell below"))
+ withCreateTableStatement(query) { state =>
+ assert(state.comment == Some("its hot as hell below"))
+ }
}
- test("create table - partitioned columns") {
- val query = "CREATE TABLE my_table (id int, name string) PARTITIONED BY
(month int)"
- val (desc, _) = extractTableDesc(query)
- assert(desc.schema == new StructType()
- .add("id", "int")
- .add("name", "string")
- .add("month", "int"))
- assert(desc.partitionColumnNames == Seq("month"))
+ test("create table - partitioned by transforms") {
Review comment:
we can keep the test name. The query is `PARTITIONED BY (id)`, so it's still
partitioned columns.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]