Aireed commented on code in PR #3387:
URL: https://github.com/apache/amoro/pull/3387#discussion_r1924738646
##########
amoro-format-mixed/amoro-mixed-spark/v3.3/amoro-mixed-spark-3.3/src/main/scala/org/apache/amoro/spark/sql/catalyst/analysis/RewriteMixedFormatCommand.scala:
##########
@@ -82,35 +86,48 @@ case class RewriteMixedFormatCommand(sparkSession:
SparkSession) extends Rule[Lo
optionsMap += (WriteMode.WRITE_MODE_KEY ->
WriteMode.OVERWRITE_DYNAMIC.mode)
val newTableSpec = tableSpec.copy(properties = propertiesMap)
c.copy(tableSpec = newTableSpec, writeOptions = optionsMap)
- case CreateTableLikeCommand(targetTable, sourceTable, _, provider,
properties, ifNotExists)
- if isCreateMixedFormatTableLikeCommand(targetTable, provider) =>
- val (sourceCatalog, sourceIdentifier) =
buildCatalogAndIdentifier(sparkSession, sourceTable)
- val (targetCatalog, targetIdentifier) =
buildCatalogAndIdentifier(sparkSession, targetTable)
- val table = sourceCatalog.loadTable(sourceIdentifier)
- var targetProperties = properties
- targetProperties += ("provider" -> "arctic")
- table match {
- case keyedTable: MixedSparkTable =>
- keyedTable.table() match {
- case table: KeyedTable =>
- targetProperties += ("primary.keys" -> String.join(
- ",",
- table.primaryKeySpec().fieldNames()))
+ case CreateTableLikeCommand(targetTable, sourceTable, _, provider,
properties, ifNotExists) =>
+ isCreateMixedFormatTableLikeCommand(targetTable, provider) match {
+ case true =>
+ val (sourceCatalog, sourceIdentifier) =
+ buildCatalogAndIdentifier(sparkSession, sourceTable)
+ val (targetCatalog, targetIdentifier) =
+ buildCatalogAndIdentifier(sparkSession, targetTable)
+ val table = sourceCatalog.loadTable(sourceIdentifier)
+ var targetProperties = properties
+ targetProperties += ("provider" -> "mixed_hive")
+ table match {
+ case keyedTable: MixedSparkTable =>
+ keyedTable.table() match {
+ case table: KeyedTable =>
+ targetProperties += ("primary.keys" -> String.join(
+ ",",
+ table.primaryKeySpec().fieldNames()))
+ case _ =>
+ }
case _ =>
}
+ val tableSpec = TableSpec(
+ properties = targetProperties.toMap,
+ provider = provider,
+ options = Map.empty,
+ location = None,
+ comment = None,
+ serde = None,
+ external = false)
+ val seq: Seq[String] = Seq(
+
targetTable.database.getOrElse(sparkSession.catalog.currentDatabase),
+ targetTable.identifier)
+ val name = ResolvedDBObjectName(targetCatalog, seq)
+ CreateTable(name, table.schema(), table.partitioning(), tableSpec,
ifNotExists)
case _ =>
+ provider.isDefined match {
+ case true =>
+ throw new UnsupportedOperationException(
+ s"format ${provider.get} does not support create table like
command!!!")
+ case false => plan
Review Comment:
thanks for your reviews. I remove the `provider.isDefined` check and return
plan directly
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]