Skip to content

Commit 0894f5e

Browse files
committed
fix.
1 parent 8ae8f18 commit 0894f5e

File tree

2 files changed

+70
-56
lines changed

2 files changed

+70
-56
lines changed

sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlParser.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1220,7 +1220,7 @@ class SparkSqlAstBuilder(conf: SQLConf) extends AstBuilder(conf) {
12201220
ctx)
12211221
}
12221222

1223-
val hasStorageProperties = (ctx.createFileFormat != null) || (ctx.rowFormat != null)
1223+
val hasStorageProperties = (ctx.createFileFormat.size != 0) || (ctx.rowFormat.size != 0)
12241224
if (conf.convertCTAS && !hasStorageProperties) {
12251225
// At here, both rowStorage.serdeProperties and fileStorage.serdeProperties
12261226
// are empty Maps.

sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala

Lines changed: 69 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -461,51 +461,55 @@ class SQLQuerySuite extends QueryTest with SQLTestUtils with TestHiveSingleton {
461461
}
462462

463463
test("CTAS without serde without location") {
464-
val originalConf = sessionState.conf.convertCTAS
465-
466-
setConf(SQLConf.CONVERT_CTAS, true)
467-
468-
val defaultDataSource = sessionState.conf.defaultDataSourceName
469-
try {
470-
sql("CREATE TABLE ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
471-
sql("CREATE TABLE IF NOT EXISTS ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
472-
val message = intercept[AnalysisException] {
464+
withSQLConf(SQLConf.CONVERT_CTAS.key -> "true") {
465+
val defaultDataSource = sessionState.conf.defaultDataSourceName
466+
withTable("ctas1") {
473467
sql("CREATE TABLE ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
474-
}.getMessage
475-
assert(message.contains("already exists"))
476-
checkRelation("ctas1", true, defaultDataSource)
477-
sql("DROP TABLE ctas1")
468+
sql("CREATE TABLE IF NOT EXISTS ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
469+
val message = intercept[AnalysisException] {
470+
sql("CREATE TABLE ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
471+
}.getMessage
472+
assert(message.contains("already exists"))
473+
checkRelation("ctas1", isDataSourceTable = true, defaultDataSource)
474+
}
478475

479476
// Specifying database name for query can be converted to data source write path
480477
// is not allowed right now.
481-
sql("CREATE TABLE default.ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
482-
checkRelation("ctas1", true, defaultDataSource)
483-
sql("DROP TABLE ctas1")
478+
withTable("ctas1") {
479+
sql("CREATE TABLE default.ctas1 AS SELECT key k, value FROM src ORDER BY k, value")
480+
checkRelation("ctas1", isDataSourceTable = true, defaultDataSource)
481+
}
484482

485-
sql("CREATE TABLE ctas1 stored as textfile" +
483+
withTable("ctas1") {
484+
sql("CREATE TABLE ctas1 stored as textfile" +
486485
" AS SELECT key k, value FROM src ORDER BY k, value")
487-
checkRelation("ctas1", false, "text")
488-
sql("DROP TABLE ctas1")
486+
checkRelation("ctas1", isDataSourceTable = false, "text")
487+
}
489488

490-
sql("CREATE TABLE ctas1 stored as sequencefile" +
491-
" AS SELECT key k, value FROM src ORDER BY k, value")
492-
checkRelation("ctas1", false, "sequence")
493-
sql("DROP TABLE ctas1")
489+
withTable("ctas1") {
490+
sql("CREATE TABLE ctas1 stored as sequencefile" +
491+
" AS SELECT key k, value FROM src ORDER BY k, value")
492+
checkRelation("ctas1", isDataSourceTable = false, "sequence")
493+
}
494494

495-
sql("CREATE TABLE ctas1 stored as rcfile AS SELECT key k, value FROM src ORDER BY k, value")
496-
checkRelation("ctas1", false, "rcfile")
497-
sql("DROP TABLE ctas1")
495+
withTable("ctas1") {
496+
sql("CREATE TABLE ctas1 stored as rcfile AS SELECT key k, value FROM src ORDER BY k, value")
497+
checkRelation("ctas1", isDataSourceTable = false, "rcfile")
498+
}
498499

499-
sql("CREATE TABLE ctas1 stored as orc AS SELECT key k, value FROM src ORDER BY k, value")
500-
checkRelation("ctas1", false, "orc")
501-
sql("DROP TABLE ctas1")
500+
withTable("ctas1") {
501+
sql("CREATE TABLE ctas1 stored as orc AS SELECT key k, value FROM src ORDER BY k, value")
502+
checkRelation("ctas1", isDataSourceTable = false, "orc")
503+
}
502504

503-
sql("CREATE TABLE ctas1 stored as parquet AS SELECT key k, value FROM src ORDER BY k, value")
504-
checkRelation("ctas1", false, "parquet")
505-
sql("DROP TABLE ctas1")
506-
} finally {
507-
setConf(SQLConf.CONVERT_CTAS, originalConf)
508-
sql("DROP TABLE IF EXISTS ctas1")
505+
withTable("ctas1") {
506+
sql(
507+
"""
508+
|CREATE TABLE ctas1 stored as parquet
509+
|AS SELECT key k, value FROM src ORDER BY k, value
510+
""".stripMargin)
511+
checkRelation("ctas1", isDataSourceTable = false, "parquet")
512+
}
509513
}
510514
}
511515

@@ -539,30 +543,40 @@ class SQLQuerySuite extends QueryTest with SQLTestUtils with TestHiveSingleton {
539543
val defaultDataSource = sessionState.conf.defaultDataSourceName
540544

541545
val tempLocation = dir.toURI.getPath.stripSuffix("/")
542-
sql(s"CREATE TABLE ctas1 LOCATION 'file:$tempLocation/c1'" +
543-
" AS SELECT key k, value FROM src ORDER BY k, value")
544-
checkRelation("ctas1", true, defaultDataSource, Some(s"file:$tempLocation/c1"))
545-
sql("DROP TABLE ctas1")
546+
withTable("ctas1") {
547+
sql(s"CREATE TABLE ctas1 LOCATION 'file:$tempLocation/c1'" +
548+
" AS SELECT key k, value FROM src ORDER BY k, value")
549+
checkRelation(
550+
"ctas1", isDataSourceTable = true, defaultDataSource, Some(s"file:$tempLocation/c1"))
551+
}
546552

547-
sql(s"CREATE TABLE ctas1 LOCATION 'file:$tempLocation/c2'" +
548-
" AS SELECT key k, value FROM src ORDER BY k, value")
549-
checkRelation("ctas1", true, defaultDataSource, Some(s"file:$tempLocation/c2"))
550-
sql("DROP TABLE ctas1")
553+
withTable("ctas1") {
554+
sql(s"CREATE TABLE ctas1 LOCATION 'file:$tempLocation/c2'" +
555+
" AS SELECT key k, value FROM src ORDER BY k, value")
556+
checkRelation(
557+
"ctas1", isDataSourceTable = true, defaultDataSource, Some(s"file:$tempLocation/c2"))
558+
}
551559

552-
sql(s"CREATE TABLE ctas1 stored as textfile LOCATION 'file:$tempLocation/c3'" +
553-
" AS SELECT key k, value FROM src ORDER BY k, value")
554-
checkRelation("ctas1", false, "text", Some(s"file:$tempLocation/c3"))
555-
sql("DROP TABLE ctas1")
560+
withTable("ctas1") {
561+
sql(s"CREATE TABLE ctas1 stored as textfile LOCATION 'file:$tempLocation/c3'" +
562+
" AS SELECT key k, value FROM src ORDER BY k, value")
563+
checkRelation(
564+
"ctas1", isDataSourceTable = false, "text", Some(s"file:$tempLocation/c3"))
565+
}
556566

557-
sql(s"CREATE TABLE ctas1 stored as sequenceFile LOCATION 'file:$tempLocation/c4'" +
558-
" AS SELECT key k, value FROM src ORDER BY k, value")
559-
checkRelation("ctas1", false, "sequence", Some(s"file:$tempLocation/c4"))
560-
sql("DROP TABLE ctas1")
567+
withTable("ctas1") {
568+
sql(s"CREATE TABLE ctas1 stored as sequenceFile LOCATION 'file:$tempLocation/c4'" +
569+
" AS SELECT key k, value FROM src ORDER BY k, value")
570+
checkRelation(
571+
"ctas1", isDataSourceTable = false, "sequence", Some(s"file:$tempLocation/c4"))
572+
}
561573

562-
sql(s"CREATE TABLE ctas1 stored as rcfile LOCATION 'file:$tempLocation/c5'" +
563-
" AS SELECT key k, value FROM src ORDER BY k, value")
564-
checkRelation("ctas1", false, "rcfile", Some(s"file:$tempLocation/c5"))
565-
sql("DROP TABLE ctas1")
574+
withTable("ctas1") {
575+
sql(s"CREATE TABLE ctas1 stored as rcfile LOCATION 'file:$tempLocation/c5'" +
576+
" AS SELECT key k, value FROM src ORDER BY k, value")
577+
checkRelation(
578+
"ctas1", isDataSourceTable = false, "rcfile", Some(s"file:$tempLocation/c5"))
579+
}
566580
}
567581
}
568582
}

0 commit comments

Comments
 (0)