cloud-fan commented on a change in pull request #32675: URL: https://github.com/apache/spark/pull/32675#discussion_r649841292
########## File path: sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala ########## @@ -1092,14 +1092,23 @@ private[hive] object HiveClientImpl extends Logging { hiveTable.setViewExpandedText(t) } + // hive may convert schema into lower cases while bucketSpec will not + // only convert if case not match + def restoreHiveBucketSpecColNames(schema: StructType, names: Seq[String]): Seq[String] = { + names.map { name => + schema.find(col => SQLConf.get.resolver(col.name, name)).map(_.name).getOrElse(name) + } + } + table.bucketSpec match { case Some(bucketSpec) if !HiveExternalCatalog.isDatasourceTable(table) => hiveTable.setNumBuckets(bucketSpec.numBuckets) - hiveTable.setBucketCols(bucketSpec.bucketColumnNames.toList.asJava) + hiveTable.setBucketCols( + restoreHiveBucketSpecColNames(table.schema, bucketSpec.bucketColumnNames).toList.asJava) if (bucketSpec.sortColumnNames.nonEmpty) { hiveTable.setSortCols( - bucketSpec.sortColumnNames + restoreHiveBucketSpecColNames(table.schema, bucketSpec.sortColumnNames) Review comment: So there is a necessary hive table -> `CatalogTable` -> hive table convertion? ########## File path: sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala ########## @@ -1092,14 +1092,23 @@ private[hive] object HiveClientImpl extends Logging { hiveTable.setViewExpandedText(t) } + // hive may convert schema into lower cases while bucketSpec will not + // only convert if case not match + def restoreHiveBucketSpecColNames(schema: StructType, names: Seq[String]): Seq[String] = { + names.map { name => + schema.find(col => SQLConf.get.resolver(col.name, name)).map(_.name).getOrElse(name) + } + } + table.bucketSpec match { case Some(bucketSpec) if !HiveExternalCatalog.isDatasourceTable(table) => hiveTable.setNumBuckets(bucketSpec.numBuckets) - hiveTable.setBucketCols(bucketSpec.bucketColumnNames.toList.asJava) + hiveTable.setBucketCols( + restoreHiveBucketSpecColNames(table.schema, bucketSpec.bucketColumnNames).toList.asJava) if (bucketSpec.sortColumnNames.nonEmpty) { hiveTable.setSortCols( - bucketSpec.sortColumnNames + restoreHiveBucketSpecColNames(table.schema, bucketSpec.sortColumnNames) Review comment: So there is a unnecessary hive table -> `CatalogTable` -> hive table convertion? -- 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: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org