cloud-fan commented on a change in pull request #28026:
URL: https://github.com/apache/spark/pull/28026#discussion_r513219480



##########
File path: 
sql/catalyst/src/main/scala/org/apache/spark/sql/connector/catalog/CatalogV2Util.scala
##########
@@ -295,18 +295,61 @@ private[sql] object CatalogV2Util {
     catalog.name().equalsIgnoreCase(CatalogManager.SESSION_CATALOG_NAME)
   }
 
-  def convertTableProperties(
+  def convertTableProperties(c: CreateTableStatement): Map[String, String] = {
+    convertTableProperties(
+      c.properties, c.options, c.serde, c.location, c.comment, c.provider, 
c.external)
+  }
+
+  def convertTableProperties(c: CreateTableAsSelectStatement): Map[String, 
String] = {
+    convertTableProperties(
+      c.properties, c.options, c.serde, c.location, c.comment, c.provider, 
c.external)
+  }
+
+  def convertTableProperties(r: ReplaceTableStatement): Map[String, String] = {
+    convertTableProperties(r.properties, r.options, r.serde, r.location, 
r.comment, r.provider)
+  }
+
+  def convertTableProperties(r: ReplaceTableAsSelectStatement): Map[String, 
String] = {
+    convertTableProperties(r.properties, r.options, r.serde, r.location, 
r.comment, r.provider)
+  }
+
+  private def convertTableProperties(
       properties: Map[String, String],
       options: Map[String, String],
+      serdeInfo: Option[SerdeInfo],
       location: Option[String],
       comment: Option[String],
-      provider: Option[String]): Map[String, String] = {
-    properties ++ options ++
+      provider: Option[String],
+      external: Boolean = false): Map[String, String] = {
+    properties ++
+      options ++ // to make the transition to the "option." prefix easier, add 
both
+      options.map { case (key, value) => TableCatalog.OPTION_PREFIX + key -> 
value } ++
+      convertToProperties(serdeInfo) ++
+      (if (external) Map(TableCatalog.PROP_EXTERNAL -> "true") else Map.empty) 
++

Review comment:
       @RussellSpitzer We use JIRA tickets to generate release notes. It's hard 
for the release manager to tell the API/behavior changes I mentioned earlier 
from this PR title "Unify create table syntax".
   
   Also as @HyukjinKwon mentioned, smaller PRs can help to narrow down the 
discussion scope. This PR is hard for tracking purposes as the discussion is so 
long. Splitting this PR won't help too much now as the discussion is already 
done, but it can still help code review.
   
   My baseline is to create separated JIRA tickets, to mention the decisions 
explicitly. For example, in this PR, `OPTIONS ...` will appear twice in the 
table properties, once with `option.` prefix, once without.




----------------------------------------------------------------
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]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to