Github user cloud-fan commented on a diff in the pull request:
https://github.com/apache/spark/pull/18360#discussion_r122916364
--- Diff:
sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveExternalCatalog.scala ---
@@ -224,39 +224,36 @@ private[spark] class HiveExternalCatalog(conf:
SparkConf, hadoopConf: Configurat
throw new TableAlreadyExistsException(db = db, table = table)
}
- if (tableDefinition.tableType == VIEW) {
- client.createTable(tableDefinition, ignoreIfExists)
+ // Ideally we should not create a managed table with location, but
Hive serde table can
+ // specify location for managed table. And in
[[CreateDataSourceTableAsSelectCommand]] we have
+ // to create the table directory and write out data before we create
this table, to avoid
+ // exposing a partial written table.
+ val needDefaultTableLocation = tableDefinition.tableType == MANAGED &&
+ tableDefinition.storage.locationUri.isEmpty
+
+ val tableLocation = if (needDefaultTableLocation) {
+
Some(CatalogUtils.stringToURI(defaultTablePath(tableDefinition.identifier)))
} else {
- // Ideally we should not create a managed table with location, but
Hive serde table can
--- End diff --
this change is actually small, just rearrange the if-else to make view and
hive serde table fall into the same branch.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]