Skip to content

Commit

Permalink
[HUDI-4079] Supports showing table comment for hudi with spark3 (#5546)
Browse files Browse the repository at this point in the history
  • Loading branch information
jinxing64 authored May 11, 2022
1 parent 4a8589f commit 7f0c1f3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package org.apache.spark.sql.hudi

import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.HoodieSparkUtils
import org.apache.hudi.common.model.HoodieRecord
import org.apache.hudi.common.table.{HoodieTableConfig, HoodieTableMetaClient}
import org.apache.hudi.config.HoodieWriteConfig
Expand Down Expand Up @@ -641,4 +642,26 @@ class TestCreateTable extends HoodieSparkSqlTestBase {
|""".stripMargin
)
}

if (HoodieSparkUtils.gteqSpark3_2) {
test("Test create table with comment") {
val tableName = generateTableName
spark.sql(
s"""
| create table $tableName (
| id int,
| name string,
| price double,
| ts long
| ) using hudi
| comment "This is a simple hudi table"
| tblproperties (
| primaryKey = 'id',
| preCombineField = 'ts'
| )
""".stripMargin)
val shown = spark.sql(s"show create table $tableName").head.getString(0)
assertResult(true)(shown.contains("COMMENT 'This is a simple hudi table'"))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,19 +89,21 @@ class HoodieCatalog extends DelegatingCatalogExtension
}

override def loadTable(ident: Identifier): Table = {
try {
super.loadTable(ident) match {
case v1: V1Table if sparkAdapter.isHoodieTable(v1.catalogTable) =>
HoodieInternalV2Table(
spark,
v1.catalogTable.location.toString,
catalogTable = Some(v1.catalogTable),
tableIdentifier = Some(ident.toString))
case o => o
}
} catch {
case e: Exception =>
throw e
super.loadTable(ident) match {
case V1Table(catalogTable0) if sparkAdapter.isHoodieTable(catalogTable0) =>
val catalogTable = catalogTable0.comment match {
case Some(v) =>
val newProps = catalogTable0.properties + (TableCatalog.PROP_COMMENT -> v)
catalogTable0.copy(properties = newProps)
case _ =>
catalogTable0
}
HoodieInternalV2Table(
spark = spark,
path = catalogTable.location.toString,
catalogTable = Some(catalogTable),
tableIdentifier = Some(ident.toString))
case o => o
}
}

Expand Down

0 comments on commit 7f0c1f3

Please sign in to comment.